diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/ledger3.texi | 832 |
1 files changed, 831 insertions, 1 deletions
diff --git a/doc/ledger3.texi b/doc/ledger3.texi index b920d417..53fe297f 100644 --- a/doc/ledger3.texi +++ b/doc/ledger3.texi @@ -580,7 +580,837 @@ $ ledger -f drewr3.dat cleared @end multitable @node Principles of Accounting, Keeping a Journal, Ledger Tutorial , Top -@chapter Principles of Accounting +@chapter Principles of Accounting with Ledger + + +@menu +* Accounting with Ledger:: +* Stating where money goes:: +* Assets and Liabilities:: +* Typical queries:: +* Commodities and Currencies:: +* Accounts and Inventories:: +* Understanding Equity:: +* Dealing with Petty Cash:: +* Working with multiple funds and accounts:: +@end menu + + +@node Accounting with Ledger, Stating where money goes, Principles of Accounting, Principles of Accounting +@section Accounting with Ledger + +Accounting is simply tracking your money. It can range from nothing, +and just waiting for automatic overdraft protection to kick in, or not, +to a full blown double entry accounting system. Ledger accomplishes the +latter. With ledger you can handle your personal finances or you +businesses. Double-entry accounting scales. + + +@node Stating where money goes, Assets and Liabilities, Accounting with Ledger, Principles of Accounting +@section Stating where money goes + +Accountants will talk of ``credits'' and ``debits'', but the meaning +is often different from the layman's understanding. To avoid +confusion, Ledger uses only subtractions and additions, although the +underlying intent is the same as standard accounting principles. + +Recall that every posting will involve two or more accounts. +Money is transferred from one or more accounts to one or more other +accounts. To record the posting, an amount is @emph{subtracted} +from the source accounts, and @emph{added} to the target accounts. + +In order to write a Ledger transaction correctly, you must determine where +the money comes from and where it goes to. For example, when you are +paid a salary, you must add money to your bank account and also +subtract it from an income account: + +@smallexample +9/29 My Employer + Assets:Checking $500.00 + Income:Salary $-500.00 +@end smallexample + +Why is the Income a negative figure? When you look at the balance +totals for your ledger, you may be surprised to see that Expenses are +a positive figure, and Income is a negative figure. It may take some +getting used to, but to properly use a general ledger you must think +in terms of how money moves. Rather than Ledger ``fixing'' the minus +signs, let's understand why they are there. + +When you earn money, the money has to come from somewhere. Let's call +that somewhere ``society''. In order for society to give you an +income, you must take money away (withdraw) from society in order to +put it into (make a payment to) your bank. When you then spend that +money, it leaves your bank account (a withdrawal) and goes back to +society (a payment). This is why Income will appear negative---it +reflects the money you have drawn from society---and why Expenses will +be positive---it is the amount you've given back. These additions and +subtractions will always cancel each other out in the end, because you +don't have the ability to create new money: it must always come from +somewhere, and in the end must always leave. This is the beginning of +economy, after which the explanation gets terribly difficult. + +Based on that explanation, here's another way to look at your balance +report: every negative figure means that that account or person or +place has less money now than when you started your ledger; and every +positive figure means that that account or person or place has more +money now than when you started your ledger. Make sense? + +@node Assets and Liabilities, Typical queries, Stating where money goes, Principles of Accounting +@section Assets and Liabilities + +Assets are money that you have, and Liabilities are money that you +owe. ``Liabilities'' is just a more inclusive name for Debts. + +An Asset is typically increased by transferring money from an Income +account, such as when you get paid. Here is a typical transaction: + +@smallexample +2004/09/29 My Employer + Assets:Checking $500.00 + Income:Salary +@end smallexample + +Money, here, comes from an Income account belonging to ``My +Employer'', and is transferred to your checking account. The money is +now yours, which makes it an Asset. + +Liabilities track money owed to others. This can happen when you +borrow money to buy something, or if you owe someone money. Here is +an example of increasing a MasterCard liability by spending money with +it: + +@smallexample +2004/09/30 Restaurant + Expenses:Dining $25.00 + Liabilities:MasterCard +@end smallexample + +The Dining account balance now shows $25 spent on Dining, and a +corresponding $25 owed on the MasterCard---and therefore shown as +$-25.00. The MasterCard liability shows up as negative because it +offsets the value of your assets. + +The combined total of your Assets and Liabilities is your net worth. +So to see your current net worth, use this command: + +@example +ledger balance ^assets ^liabilities +@end example + +Relatedly, your Income accounts show up negative, because they +transfer money @emph{from} an account in order to increase your +assets. Your Expenses show up positive because that is where the +money went to. The combined total of Income and Expenses is your cash +flow. A positive cash flow means you are spending more than you make, +since income is always a negative figure. To see your current cash +flow, use this command: + +@example +ledger balance ^income ^expenses +@end example + +Another common question to ask of your expenses is: How much do I +spend each month on X? Ledger provides a simple way of displaying +monthly totals for any account. Here is an example that summarizes +your monthly automobile expenses: + +@example +ledger -M register expenses:auto +@end example + +This assumes, of course, that you use account names like +@samp{Expenses:Auto:Gas} and @samp{Expenses:Auto:Repair}. + +@menu +* Tracking reimbursable expenses:: +@end menu + +@node Tracking reimbursable expenses, , Assets and Liabilities, Assets and Liabilities +@subsection Tracking reimbursable expenses + +Sometimes you will want to spend money on behalf of someone else, +which will eventually get repaid. Since the money is still ``yours'', +it is really an asset. And since the expenditure was for someone +else, you don't want it contaminating your Expenses reports. You will +need to keep an account for tracking reimbursements. + +This is fairly easy to do in ledger. When spending the money, spend +it @emph{to} your Assets:Reimbursements, using a different account for +each person or business that you spend money for. For example: + +@smallexample +2004/09/29 Circuit City + Assets:Reimbursements:Company XYZ $100.00 + Liabilities:MasterCard +@end smallexample + +This shows $100.00 spent on a MasterCard at Circuit City, with the +expense was made on behalf of Company XYZ. Later, when Company XYZ +pays the amount back, the money will transfer from that reimbursement +account back to a regular asset account: + +@smallexample +2004/09/29 Company XYZ + Assets:Checking $100.00 + Assets:Reimbursements:Company XYZ +@end smallexample + +This deposits the money owed from Company XYZ into a checking account, +presumably because they paid the amount back with a check. + +But what to do if you run your own business, and you want to keep +track of expenses made on your own behalf, while still tracking +everything in a single ledger file? This is more complex, because you +need to track two separate things: 1) The fact that the money should +be reimbursed to you, and 2) What the expense account was, so that you +can later determine where your company is spending its money. + +This kind of posting is best handled with mirrored postings in +two different files, one for your personal accounts, and one for your +company accounts. But keeping them in one file involves the same +kinds of postings, so those are what is shown here. First, the +personal transaction, which shows the need for reimbursement: + +@smallexample +2004/09/29 Circuit City + Assets:Reimbursements:Company XYZ $100.00 + Liabilities:MasterCard +@end smallexample + +This is the same as above, except that you own Company XYZ, and are +keeping track of its expenses in the same ledger file. This transaction +should be immediately followed by an equivalent transaction, which shows the +kind of expense, and also notes the fact that $100.00 is now payable +to you: + +@smallexample +2004/09/29 Circuit City + Company XYZ:Expenses:Computer:Software $100.00 + Company XYZ:Accounts Payable:Your Name +@end smallexample + +This second transaction shows that Company XYZ has just spent $100.00 on +software, and that this $100.00 came from Your Name, which must be +paid back. + +These two transactions can also be merged, to make things a little clearer. +Note that all amounts must be specified now: + +@smallexample +2004/09/29 Circuit City + Assets:Reimbursements:Company XYZ $100.00 + Liabilities:MasterCard $-100.00 + Company XYZ:Expenses:Computer:Software $100.00 + Company XYZ:Accounts Payable:Your Name $-100.00 +@end smallexample + +To ``pay back'' the reimbursement, just reverse the order of +everything, except this time drawing the money from a company asset, +paying it to accounts payable, and then drawing it again from the +reimbursement account, and paying it to your personal asset account. +It's easier shown than said: + +@smallexample +2004/10/15 Company XYZ + Assets:Checking $100.00 + Assets:Reimbursements:Company XYZ $-100.00 + Company XYZ:Accounts Payable:Your Name $100.00 + Company XYZ:Assets:Checking $-100.00 +@end smallexample + +And now the reimbursements account is paid off, accounts payable is +paid off, and $100.00 has been effectively transferred from the +company's checking account to your personal checking account. The +money simply ``waited''---in both @samp{Assets:Reimbursements:Company +XYZ}, and @samp{Company XYZ:Accounts Payable:Your Name}---until such +time as it could be paid off. + +The value of tracking expenses from both sides like that is that you +do not contaminate your personal expense report with expenses made on +behalf of others, while at the same time making it possible to +generate accurate reports of your company's expenditures. It is more +verbose than just paying for things with your personal assets, but it +gives you a very accurate information trail. + +The advantage to keep these doubled transactions together is that they +always stay in sync. The advantage to keeping them apart is that it +clarifies the transfer's point of view. To keep the postings in +separate files, just separate the two transactions that were joined above. +For example, for both the expense and the pay-back shown above, the +following four transactions would be created. Two in your personal ledger +file: + +@smallexample +2004/09/29 Circuit City + Assets:Reimbursements:Company XYZ $100.00 + Liabilities:MasterCard $-100.00 + +2004/10/15 Company XYZ + Assets:Checking $100.00 + Assets:Reimbursements:Company XYZ $-100.00 +@end smallexample + +And two in your company ledger file: + +@smallexample +!account Company XYZ + +2004/09/29 Circuit City + Expenses:Computer:Software $100.00 + Accounts Payable:Your Name $-100.00 + +2004/10/15 Company XYZ + Accounts Payable:Your Name $100.00 + Assets:Checking $-100.00 + +!end +@end smallexample + +(Note: The @samp{!account} above means that all accounts mentioned in +the file are children of that account. In this case it means that all +activity in the file relates to Company XYZ). + +After creating these transactions, you will always know that $100.00 was +spent using your MasterCard on behalf of Company XYZ, and that Company +XYZ spent the money on computer software and paid it back about two +weeks later. + +@node Typical queries, Commodities and Currencies, Assets and Liabilities, Principles of Accounting +@section Typical queries + +A query such as the following shows all expenses since last +October, sorted by total: + +@example +ledger -b "last oct" -s -S T bal ^expenses +@end example + +From left to right the options mean: Show transactions since October, 2003; +show all sub-accounts; sort by the absolute value of the total; and +report the balance for all expenses. + +@menu +* Reporting monthly expenses:: +* Visualizing with Gnuplot:: +@end menu + +@node Reporting monthly expenses, Visualizing with Gnuplot, Typical queries, Typical queries +@subsection Reporting monthly expenses + +The following query makes it easy to see monthly expenses, with each +month's expenses sorted by the amount: + +@example +ledger -M --period-sort t reg ^expenses +@end example + +Now, you might wonder where the money came from to pay for these +things. To see that report, add @option{-r}, which shows the +``related account'' postings: + +@example +ledger -M --period-sort t -r reg ^expenses +@end example + +But maybe this prints too much information. You might just want to +see how much you're spending with your MasterCard. That kind of query +requires the use of a display predicate, since the postings +calculated must match @samp{^expenses}, while the postings +displayed must match @samp{mastercard}. The command would be: + +@example +ledger -M -r -d /mastercard/ reg ^expenses +@end example + +This query says: Report monthly subtotals; report the ``related +account'' postings; display only related postings whose +account matches @samp{mastercard}, and base the calculation on +postings matching @samp{^expenses}. + +This works just as well for report the overall total, too: + +@example +ledger -s -r -d /mastercard/ reg ^expenses +@end example + +The @option{-s} option subtotals all postings, just as @option{-M} +subtotaled by the month. The running total in both cases is off, +however, since a display expression is being used. + +@node Visualizing with Gnuplot, , Reporting monthly expenses, Typical queries +@subsection Visualizing with Gnuplot + +If you have @command{Gnuplot} installed, you can graph any of the +above register reports. The script to do this is included in the +ledger distribution, and is named @file{scripts/report}. Install +@file{report} anywhere along your @env{PATH}, and then use +@command{report} instead of @command{ledger} when doing a register +report. The only thing to keep in mind is that you must specify +@option{-j} or @option{-J} to indicate whether Gnuplot should plot the +amount, or the running total. For example, this command plots total +monthly expenses made on your MasterCard. + +@example +report -j -M -r -d /mastercard/ reg ^expenses +@end example + +The @command{report} script is a very simple Bourne shell script, that +passes a set of scripted commands to Gnuplot. Feel free to modify the +script to your liking, since you may prefer histograms to line plots, +for example. + +@menu +* Typical plots:: +@end menu + +@node Typical plots, , Visualizing with Gnuplot, Visualizing with Gnuplot +@subsubsection Typical plots + +Here are some useful plots: + +@smallexample +report -j -M reg ^expenses # monthly expenses +report -J reg checking # checking account balance +report -J reg ^income ^expenses # cash flow report + +# net worth report, ignoring non-$ postings + +report -J -l "Ua>=@{\$0.01@}" reg ^assets ^liab + +# net worth report starting last February. the use of a display +# predicate (-d) is needed, otherwise the balance will start at +# zero, and thus the y-axis will not reflect the true balance + +report -J -l "Ua>=@{\$0.01@}" -d "d>=[last feb]" reg ^assets ^liab +@end smallexample + +The last report uses both a calculation predicate (@option{-l}) and a +display predicate (@option{-d}). The calculation predicates limits +the report to postings whose amount is greater than $1 (which can +only happen if the posting amount is in dollars). The display +predicate limits the transactions @emph{displayed} to just those since last +February, even those transactions from before then will be computed as part +of the balance. + + +@node Commodities and Currencies, Accounts and Inventories, Typical queries, Principles of Accounting +@section Commodities and Currencies + +Ledger makes no assumptions about the commodities you use; it only +requires that you specify a commodity. The commodity may be any +non-numeric string that does not contain a period, comma, forward +slash or at-sign. It may appear before or after the amount, although +it is assumed that symbols appearing before the amount refer to +currencies, while non-joined symbols appearing after the amount refer +to commodities. Here are some valid currency and commodity +specifiers: + +@example +$20.00 ; currency: twenty US dollars +40 AAPL ; commodity: 40 shares of Apple stock +60 DM ; currency: 60 Deutsch Mark +£50 ; currency: 50 British pounds +50 EUR ; currency: 50 Euros (or use appropriate symbol) +@end example + +Ledger will examine the first use of any commodity to determine how +that commodity should be printed on reports. It pays attention to +whether the name of commodity was separated from the amount, whether +it came before or after, the precision used in specifying the amount, +whether thousand marks were used, etc. This is done so that printing +the commodity looks the same as the way you use it. + +An account may contain multiple commodities, in which case it will +have separate totals for each. For example, if your brokerage account +contains both cash, gold, and several stock quantities, the balance +might look like: + +@smallexample + $200.00 +100.00 AU + AAPL 40 + BORL 100 + FEQTX 50 Assets:Brokerage +@end smallexample + +This balance report shows how much of each commodity is in your +brokerage account. + +Sometimes, you will want to know the current street value of your +balance, and not the commodity totals. For this to happen, you must +specify what the current price is for each commodity. The price can +be any commodity, in which case the balance will be computed in terms +of that commodity. The usual way to specify prices is with a price +history file, which might look like this: + +@smallexample +P 2004/06/21 02:18:01 FEQTX $22.49 +P 2004/06/21 02:18:01 BORL $6.20 +P 2004/06/21 02:18:02 AAPL $32.91 +P 2004/06/21 02:18:02 AU $400.00 +@end smallexample + +Specify the price history to use with the @option{--price-db} option, +with the @option{-V} option to report in terms of current market +value: + +@example +ledger --price-db prices.db -V balance brokerage +@end example + +The balance for your brokerage account will be reported in US dollars, +since the prices database uses that currency. + +@smallexample +$40880.00 Assets:Brokerage +@end smallexample + +You can convert from any commodity to any other commodity. Let's say +you had $5000 in your checking account, and for whatever reason you +wanted to know many ounces of gold that would buy, in terms of the +current price of gold: + +@example +ledger -T "@{1 AU@}*(O/P@{1 AU@})" balance checking +@end example + +Although the total expression appears complex, it is simply saying +that the reported total should be in multiples of AU units, where the +quantity is the account total divided by the price of one AU. Without +the initial multiplication, the reported total would still use the +dollars commodity, since multiplying or dividing amounts always keeps +the left value's commodity. The result of this command might be: + +@smallexample +14.01 AU Assets:Checking +@end smallexample + +@menu +* Commodity Price Histories:: +* Commodity equivalencies:: +@end menu + +@node Commodity Price Histories, Commodity equivalencies, Commodities and Currencies, Commodities and Currencies +@subsection Commodity price histories + +Whenever a commodity is purchased using a different commodity (such as +a share of common stock using dollars), it establishes a price for +that commodity on that day. It is also possible, by recording price +details in a ledger file, to specify other prices for commodities at +any given time. Such price transactions might look like those below: + +@smallexample +P 2004/06/21 02:17:58 TWCUX $27.76 +P 2004/06/21 02:17:59 AGTHX $25.41 +P 2004/06/21 02:18:00 OPTFX $39.31 +P 2004/06/21 02:18:01 FEQTX $22.49 +P 2004/06/21 02:18:02 AAPL $32.91 +@end smallexample + +By default, ledger will not consider commodity prices when generating +its various reports. It will always report balances in terms of the +commodity total, rather than the current value of those commodities. +To enable pricing reports, use one of the commodity reporting options. + +@node Commodity equivalencies, , Commodity Price Histories, Commodities and Currencies +@subsection Commodity equivalencies + +Sometimes a commodity has several forms which are all equivalent. An +example of this is time. Whether tracked in terms of minutes, hours +or days, it should be possible to convert between the various forms. +Doing this requires the use of commodity equivalencies. + +For example, you might have the following two postings, one which +transfers an hour of time into a @samp{Billable} account, and another +which decreases the same account by ten minutes. The resulting report +will indicate that fifty minutes remain: + +@smallexample +2005/10/01 Work done for company + Billable:Client 1h + Project:XYZ + +2005/10/02 Return ten minutes to the project + Project:XYZ 10m + Billable:Client +@end smallexample + +Reporting the balance for this ledger file produces: + +@smallexample + 50.0m Billable:Client + -50.0m Project:XYZ +@end smallexample + +This example works because ledger already knows how to handle seconds, +minutes and hours, as part of its time tracking support. Defining +other equivalencies is simple. The following is an example that +creates data equivalencies, helpful for tracking bytes, kilobytes, +megabytes, and more: + +@smallexample +C 1.00 Kb = 1024 b +C 1.00 Mb = 1024 Kb +C 1.00 Gb = 1024 Mb +C 1.00 Tb = 1024 Gb +@end smallexample + +Each of these definitions correlates a commodity (such as @samp{Kb}) +and a default precision, with a certain quantity of another commodity. +In the above example, kilobytes are reporetd with two decimal places +of precision and each kilobyte is equal to 1024 bytes. + +Equivalency chains can be as long as desired. Whenever a commodity +would report as a decimal amount (less than @samp{1.00}), the next +smallest commodity is used. If a commodity could be reported in terms +of a higher commodity without resulting to a partial fraction, then +the larger commodity is used. + +@node Accounts and Inventories, Understanding Equity, Commodities and Currencies, Principles of Accounting +@section Accounts and Inventories + +Since Ledger's accounts and commodity system is so flexible, you can +have accounts that don't really exist, and use commodities that no one +else recognizes. For example, let's say you are buying and selling +various items in EverQuest, and want to keep track of them using a +ledger. Just add items of whatever quantity you wish into your +EverQuest account: + +@smallexample +9/29 Get some stuff at the Inn + Places:Black's Tavern -3 Apples + Places:Black's Tavern -5 Steaks + EverQuest:Inventory +@end smallexample + +Now your EverQuest:Inventory has 3 apples and 5 steaks in it. The +amounts are negative, because you are taking @emph{from} Black's +Tavern in order to add to your Inventory account. Note that you don't +have to use @samp{Places:Black's Tavern} as the source account. You +could use @samp{EverQuest:System} to represent the fact that you +acquired them online. The only purpose for choosing one kind of +source account over another is for generate more informative reports +later on. The more you know, the better analysis you can perform. + +If you later sell some of these items to another player, the transaction +would look like: + +@smallexample +10/2 Sturm Brightblade + EverQuest:Inventory -2 Steaks + EverQuest:Inventory 15 Gold +@end smallexample + +Now you've turned 2 steaks into 15 gold, courtesy of your customer, +Sturm Brightblade. + +@node Understanding Equity, Dealing with Petty Cash, Accounts and Inventories, Principles of Accounting +@section Understanding Equity + +The most confusing transaction in any ledger will be your equity account--- +because starting balances can't come out of nowhere. + +When you first start your ledger, you will likely already have money +in some of your accounts. Let's say there's $100 in your checking +account; then add a transaction to your ledger to reflect this amount. +Where will money come from? The answer: your equity. + +@smallexample +10/2 Opening Balance + Assets:Checking $100.00 + Equity:Opening Balances +@end smallexample + +But what is equity? You may have heard of equity when people talked +about house mortgages, as ``the part of the house that you own''. +Basically, equity is like the value of something. If you own a car +worth $5000, then you have $5000 in equity in that car. In order to +turn that car (a commodity) into a cash flow, or a credit to your bank +account, you will have to debit the equity by selling it. + +When you start a ledger, you are probably already worth something. +Your net worth is your current equity. By transferring the money in +the ledger from your equity to your bank accounts, you are crediting +the ledger account based on your prior equity. That is why, when you +look at the balance report, you will see a large negative number for +Equity that never changes: Because that is what you were worth (what +you debited from yourself in order to start the ledger) before the +money started moving around. If the total positive value of your +assets is greater than the absolute value of your starting equity, it +means you are making money. + +Clear as mud? Keep thinking about it. Until you figure it out, put +@samp{-Equity} at the end of your balance command, to remove the +confusing figure from the total. + +@node Dealing with Petty Cash, Working with multiple funds and accounts, Understanding Equity, Principles of Accounting +@section Dealing with Petty Cash + +Something that stops many people from keeping a ledger at all is the +insanity of tracking small cash expenses. They rarely generate a +receipt, and there are often a lot of small postings, rather than +a few large ones, as with checks. + +One solution is: don't bother. Move your spending to a debit card, +but in general ignore cash. Once you withdraw it from the ATM, mark +it as already spent to an @samp{Expenses:Cash} category: + +@smallexample +2004/03/15 ATM + Expenses:Cash $100.00 + Assets:Checking +@end smallexample + +If at some point you make a large cash expense that you want to track, +just ``move'' the amount of the expense from @samp{Expenses:Cash} into +the target account: + +@smallexample +2004/03/20 Somebody + Expenses:Food $65.00 + Expenses:Cash +@end smallexample + +This way, you can still track large cash expenses, while ignoring all +of the smaller ones. + +@node Working with multiple funds and accounts, , Dealing with Petty Cash, Principles of Accounting +@section Working with multiple funds and accounts + +There are situations when the accounts you're tracking are different +between your clients and the financial institutions where money is +kept. An example of this is working as the treasurer for a religious +institution. From the secular point of view, you might be working +with three different accounts: + +@itemize +@item Checking +@item Savings +@item Credit Card +@end itemize + +From a religious point of view, the community expects to divide its +resources into multiple ``funds'', from which it makes purchases or +reserves resources for later: + +@itemize +@item School fund +@item Building fund +@item Community fund +@end itemize + +The problem with this kind of setup is that when you spend money, it +comes from two or more places at once: the account and the fund. And +yet, the correlation of amounts between funds and accounts is rarely +one-to-one. What if the school fund has @samp{$500.00}, but +@samp{$400.00} of that comes from Checking, and @samp{$100.00} from +Savings? + +Traditional finance packages require that the money reside in only one +place. But there are really two ``views'' of the data: from the +account point of view and from the fund point of view -- yet both sets +should reflect the same overall expenses and cash flow. It's simply +where the money resides that differs. + +This situation can be handled one of two ways. The first is using +virtual postings to represent the fact that money is moving to and +from two kind of accounts at the same time: + +@smallexample +2004/03/20 Contributions + Assets:Checking $500.00 + Income:Donations + +2004/03/25 Distribution of donations + [Funds:School] $300.00 + [Funds:Building] $200.00 + [Assets:Checking] $-500.00 +@end smallexample + +The use of square brackets in the second transaction ensures that the +virtual postings balance to zero. Now money can be spent directly +from a fund at the same time as money is drawn from a physical +account: + +@smallexample +2004/03/25 Payment for books (paid from Checking) + Expenses:Books $100.00 + Assets:Checking $-100.00 + (Funds:School) $-100.00 +@end smallexample + +When reports are generated, by default they'll appear in terms of the +funds. In this case, you will likely want to mask out your +@samp{Assets} account, because otherwise the balance won't make much +sense: + +@example +ledger bal -^Assets +@end example + +If the @option{--real} option is used, the report will be in terms of +the real accounts: + +@example +ledger --real bal +@end example + +If more asset accounts are needed as the source of a posting, just +list them as you would normally, for example: + +@smallexample +2004/03/25 Payment for books (paid from Checking) + Expenses:Books $100.00 + Assets:Checking $-50.00 + Liabilities:Credit Card $-50.00 + (Funds:School) $-100.00 +@end smallexample + +The second way of tracking funds is to use transaction codes. In this +respect the codes become like virtual accounts that embrace the entire +set of postings. Basically, we are associating a transaction with a +fund by setting its code. Here are two transactions that desposit money +into, and spend money from, the @samp{Funds:School} fund: + +@smallexample +2004/03/25 (Funds:School) Donations + Assets:Checking $100.00 + Income:Donations + +2004/04/25 (Funds:School) Payment for books + Expenses:Books $50.00 + Assets:Checking +@end smallexample + +Note how the accounts now relate only to the real accounts, and any +balance or registers reports will reflect this. That the transactions +relate to a particular fund is kept only in the code. + +How does this become a fund report? By using the +@option{--code-as-payee} option, you can generate a register report +where the payee for each posting shows the code. Alone, this is +not terribly interesting; but when combined with the +@option{--by-payee} option, you will now see account subtotals for any +postings related to a specific fund. So, to see the current +monetary balances of all funds, the command would be: + +@smallexample +ledger --code-as-payee -P reg ^Assets +@end smallexample + +Or to see a particular funds expenses, the @samp{School} fund in this +case: + +@smallexample +ledger --code-as-payee -P reg ^Expenses -- School +@end smallexample + +Both approaches yield different kinds of flexibility, depending on how +you prefer to think of your funds: as virtual accounts, or as tags +associated with particular transactions. Your own tastes will decide which +is best for your situation. + @node Keeping a Journal, Command-line Syntax, Principles of Accounting, Top @chapter Keeping a Journal |