# This file contains some sample Penny data. It is used as a basis for # the examples in the penny-getting-started manual page. # This file, like all of Penny, assumes you have basic knowledge of # double-entry accounting. See penny-basics(1). # As you can see, comments begin with the # symbol. You can only have # single-line comments; there are no multi-line comments (e.g. like # in XML or /* */ in C.) Also, comments must be the only item # on a line (you cannot, for example, have part of a posting on one # line and then a comment at the end of the same line.) # We will distinguish between *transactions* and *postings*. A posting # must have, at a minimum, an account, an indication of whether it is # a debit or a credit, a commodity, and a quantity. A transaction must # have at least two postings. All the postings in a transaction must # balance--that is, their debits and credits must add up to the same # number. # Some first examples: 2012-12-01 Opening balances Equity > $1554.60 Assets:Checking < $1554.60 2012-12-01 Spacely Sprockets Income:Salary > $3000.00 Assets:Checking < $3000.00 # As shown above, debits are indicated with < (a less-than sign, which # looks like a left-pointing arrow) and credits with a > (which looks # like a right-pointing arrow.) So, in the "Spacely Sprockets" # transaction, you have debited your Assets:Checking account by $3000, # and you have credited your Salary account by $3000. # If you try to have a transaction which is NOT balanced--that is, the # sum of the debits is not equal to the sum of the credits--then Penny # will complain and quit. The following text is not a valid # transaction so it is commented out: # 2012-12-01 Unbalanced # Income:Salary > $3000.00 # Assets:Checking > $3000.00 # There, you have two credits, but no debit. # Penny has no concept of negative numbers. All numbers are # positive. Furthermore, quantities cannot be zero--they must be # greather than zero, even if infinitesimally so. # Some more transactions to get us started: 2012-12-01 Landlord Expenses:Rent < $700.00 Assets:Checking > $700.00 2012-12-02 Whole Foods Expenses:Food < $43.10 Assets:Checking > $43.10 2012-12-02 Amazon.com Expenses:Books < $23.99 Liabilities:Amex > $23.99 # You can choose not to indicate the debit/credit, commodity, and # quantity for one of the postings. Penny will use the debit or # credit, quantity, and commodity from the one that you fill in to # "infer" what is is for the other posting. 2012-12-02 CVS Expenses:Drugs < $12.14 Assets:Checking # Here, Penny infers that the Assets:Checking account is credited # $12.14. # The different parts of your Penny file--accounts, dates, and so # on--are separated with spaces. If you have data that includes # spaces--for instance, you have a space in an account name--then you # have to surround it with special characters. This is called # "quoting". This is also true if you want to include other special # characters in a particular part of your file. For example, to quote # an account that has spaces, use curly braces: 2012-12-03 CVS {Expenses:Personal Care} < $82.21 Liabilities:Amex # When you are writing a payee name in the first line of a transaction # (next to the date), it's okay to have spaces. # You can have more than two postings in a transaction. Your debits # and credits still have to be equal: 2012-12-03 Safeway Expenses:Food < $8.94 {Expenses:Personal Care} < $20.00 Liabilities:Amex > $28.94 # If you have more than two postings, you can still leave one of them # without a debit or credit, commodity, and quantity, and Penny will # infer what it is. 2012-12-04 Home Depot Expenses:Hardware < $50.00 Expenses:Garden < $9.97 Liabilities:Amex # Each account is broken into "sub-accounts", which are separated by # colons. In all the examples we've seen so far, there are two # sub-accounts, but you can have as many or as few (down to one) # sub-accounts as you like. 2012-12-05 Whole Foods Expenses:Entertaining:Food < $67.75 Assets:Checking # Postings can have memos. The memo begins with an apostrophe. 2012-12-06 Eli Zabar Expenses:Food < $23.04 'Some expensive bread. 'Next time try the one with the raisins. Liabilities:Amex # In addition, transactions can have memos. Each line of these begins # with a semicolon. They must appear immediately before a # transaction. They are different from comments because a transaction # memo is associated with its transaction, while a comment is # associated with nothing. ; Tried the new Potbelly 2012-12-06 Potbelly Expenses:Food < $9.83 Liabilities:Amex # Whitespace separates the different elements of a transaction and a # posting. However Penny does not impose particular indentation on # you. The indentation you see above is just a convention that I think # looks readable, but you can do it a different way. Penny also does # not take sides in the tabs vs spaces holy war. 2012-12-06 Duane Reade Expenses:Magazines < $2.98 Liabilities:Amex # You do however have to keep each posting on a separate line, and you # have to keep all the lines of a transaction together without any # blank lines in between. # You can also choose how to write your commodities--that is, before # or after the quantity, and with or without a space between the # commodity and the quantity. Currently Penny remembers how you write # your commodities, though what it remembers has effects in only a few # places. In particular, it does not affect how your reports are formatted. # Ok, so this following example does not really make sense with # dollars, but it gives you the idea. 2012-12-06 Flo Expenses:Insurance:Car < 230.00 $ Assets:Checking # Transactions and postings can have a "flag". I use only # single-character flags; however, you can make your flags as long as # you like. A flag is enclosed in square brackets. You might use these # to indicate when a transaction has cleared your bank, or to remember # what kind of a transaction it is. # This flag applies to the entire transaction. 2012-12-06 [ATM] Cash Assets:Checking > $100.00 Expenses:Cash # This flag applies just to the posting it is next to. 2012-12-10 Cash Expenses:Cash < $100.00 [ATM] Assets:Checking # Similarly, transactions and postings can have a "number". You might # use this for check numbers. This number applies to the whole # transaction... 2012-12-11 (804) Comcast Expenses:Cable < $123.99 Assets:Checking # ... and this one just to the posting. 2012-12-12 Washington Gas Expenses:Utilities:Gas < $23.14 (805) Assets:Checking # The payee on the first line of the posting is optional. The only # thing required on the first line is the date. You can also put a # payee on the individual postings, but they must be surrounded with # tildes. 2012-12-12 ~Zork enterprises~ (203) [R] Expenses:Gifts < $16.99 [R] ~Barristers Inc.~ (204) Expenses:Gifts < $42.99 Assets:Checking # As the above example shows, you can have a payee, number, and flag # on a single posting, or any combination of those. They can appear in # any order. The account name always appears after these. # A posting can have tags. This gives you another way (beyond # accounts) to classify postings. For example, let's say you take a # vacation. You spend money and put the expenses in different # accounts, but you want to track the vacation expenses together. You # precede each tag with an asterisk (you can have more than one tag on # a posting) and the tags go after the account name. A tag can have # nearly any character except for '<', '>', '*', or a space. 2012-12-13 Amtrak {Expenses:Train fare} *vacation2012 < $700.00 Liabilities:Amex 2012-12-14 Fitzpatrick Grand Central Hotel Expenses:Hotel *vacation2012 < $400.00 Liabilities:Amex # You can use either dashes or slashes as the date separator. You can # even mix them up :) 2012/12-15 Aquagrill Expenses:Food *vacation2012 < $87.00 Liabilities:Amex # People in different countries use different characters for the radix # point (decimal point) and to separate digits into groups. Penny # imposes a single uniform way to represent the radix point and digit # grouping. As you have seen above, use the full stop character # (period) to represent the radix point. # If you want to group digits, use the Unicode thin space # character. This is Unicode code point 2009. Most editors will render # it the same way they render a space, but it's not the same # character. Different editors will have different ways to enter this # character; in Emacs, press C-x 8 2009. In Vim, in insert mode # press Ctrl-V, then u2009. That looks like this: 2012-12-16 Import savings {Equity:Opening Balances} > $32 985.23 Assets:Savings # That's everything you need to get started recording your data with # Penny. If you want to track multiple commodities (for instance # stocks, or the price of your real estate) look at the stocks.pny # file, which will help you get started there. # Here are some more transactions that will provide useful fodder for # the manual pages: 2013-01-02 Conoco Expenses:Gas < $54.22 Assets:Checking 2012-01-04 Express Expenses:Clothes < $103.00 Liabilities:Amex 2012-01-05 Amazon.com Expenses:Food < $23.60 Expenses:Books < $16.00 Liabilities:Amex 2012-01-06 Landlord Expenses:Rent < $700.00 Assets:Checking 2012-01-06 Spacely Sprockets Income:Salary > $3000.00 Assets:Checking