Issue #20 June 2006

GnuCash for personal accounting


I use GnuCash exclusively for managing my home finances. In fact, my wife uses it more than I do nowadays. Before using this accounting package, my wife kept track of things in a paper notebook. Now that we use GnuCash, neither of us can imagine going back to using bits of paper to record our financial transactions.

GnuCash is available as part of Fedora Core. To install it on Fedora Core 5, select Applications -> Add/Remove Software from the panel, then select Applications and Office/Productivity. Then click the Optional packages button and select gnucash from the list.

Once installed, you can find GnuCash in the Applications -> Office menu on the panel.

Double-entry bookkeeping in brief

GnuCash is a double-entry bookkeeping package. In double-entry bookkeeping, each transaction is written in two places: a debit from one account, and a credit to another. For example, a money transfer could be a debit from the current account ("checking" account in the US) and a credit in the savings account. Expenses such as bills and shopping get their own accounts too, so buying some food could be a debit from the current account and a credit in the "groceries" expense account.

So far we've seen two types of account: assets (the current and savings accounts) and expenses (the groceries). A credit card is slightly different, since it is a liability rather than an asset; it is something you owe, rather than something you have. Therefore the shopping example above could have been an increase in the credit card account, and also an increase in the "groceries" expense account.

Getting started

When you start GnuCash for the first time it will ask you to create a new set of accounts. You can make it as simple or as complicated as you wish. The minimum set of accounts lets you just keep track of your current account, and includes an "Expenses" account to cover all expenses.

You can select the types of accounts you might need from a list (see Figure 1, Setting up accounts), including lots of common accounts covering expenses like home improvements, utility bills, and medical expenses. Although you may not immediately see the value of keeping track of expenditure to such a degree, of classifying every expense, it really is worth the effort. After a while you will be able to generate useful reports about where your money goes. The results can be quite surprising!

Fig.1. Setting up accounts

Once you have decided which accounts to keep track of, the next step is to put in any opening balances. Find out the current balances of the accounts listed under "Assets" and "Liabilities" (your bank account, credit cards, and so on) and put them in. It doesn't matter if you can't find out your balance immediately because you can do this step later if necessary. Opening balances are shown as a transfer from the "Equity:Opening Balances" account.

Fig.2. Opening balances

Once you have finished setting up the new account hierarchy, you will see the main GnuCash window. Now would be a good time to save your work! Next time you start GnuCash it will automatically open the file you've saved. I called my accounts file accounts.gnucash (see Figure 3, Main window). In that window, the account "Assets:Current Assets:Current Account" is selected. Note: The colons in the account name separate the levels of the hierarchy.

Fig.3. Main window

Entering transactions

Transactions are entered using an account register window. Double-click on the account you want to add a transaction to from the main window. As an example, let's say you used your current account bank debit card to buy some food. Double-click on the "Current Account" line in the "Current Assets" category to get the register window for your bank account. You will see a line showing the opening balance that you put it earlier, and a blank line below it, ready for a new transaction.

Click in the "Description" column of the empty line and write "Food shopping". You can be as specific as you like with the details entered to aid future reference. Then press the Tab key to move to the "Transfer" column. This is for linking this transaction to another account, and is where the double-entry bookkepping comes into play. We'll put this in the "Expenses:Groceries" account. Begin typing that (remember the capital letters and the colon) and a drop-down list will appear, highlighting the correct account once you have typed in enough letters to identify it (see Figure 4, Register window).

Fig.4. Register window

This is a withdrawal from the bank account, so click in the "Withdrawal" column and enter the amount you spent, and press Enter to add the transaction. You'll see the balance column is adjusted, and a new blank line will appear ready for another transaction.

Importing from your online bank

You should enter transactions from your receipts rather than copying them from an online bank or credit card—that way you can easily identify a payment which has been delayed or lost.

When you have just started using GnuCash, however, you may find it useful to put in everything from your last statement or two, to get a feel for how it all works and to be able to start generating reports showing how you spend money.

Most online financial institutions allow you to download your statement, sometimes in a variety of different ways. There are two main file types for downloading transactions, both of which are supported by GnuCash. OFX (Open Financial Exchange) is widely supported by commercial accounting packages, including Quicken. Sometimes you will see this referred to as QFX. The other main format is the older QIF (Quicken Interchange Format).

If you can download your statement at all, the chances are you will be able to get it in one of those two formats.

To import a downloaded statement into your GnuCash accounts, select File -> Import from the menu bar on the main GnuCash window.

Scheduled transactions

Like me, you probably have several monthly payments that are always for the same (or nearly the same) amount. Utility bills, mortgage or rent payments and other regular payments or transfers can be set up as scheduled transactions in GnuCash; this means they will automatically be entered into the appropriate account each time they are due.

An easy way to set up a new scheduled transaction is first to enter the transaction as normal. Take the electricity bill, for example: in your bank account register window enter a new transaction. Set the date for when your bill next gets paid, put "Electricity company" in the description, and select "Expenses:Utilities:Electric" for the transfer column. Fill in your monthly payment amount in the withdrawal column and press Enter.

Transactions in the past are separated from future transactions by a blue line. Now that you have entered a transaction for a future date, you will notice the blue line appear above it.

To make a scheduled transaction using the transaction you've just entered as a template, click anywhere on the transaction to select it--it turns yellow when selected--and click on the Schedule button in the button bar at the top of the window. A dialog box appears asking about when future transactions will occur (see Figure 5, Scheduled transaction).

Fig.5. Scheduled transaction

Click the Advanced... button and a larger, more detailed, dialog box appears. Select the Create Automatically checkbox, and the Create in advance checkbox, and set how many days in advance you would like the next bill payment to automatically appear. This will then show as a future entry. I set this to 45 days so that I can see how the next month will look (see Figure 6, Scheduled transaction (advanced)). Click OK to create the scheduled transaction. You won't see any automatically-added transactions until you next start GnuCash.

If you want to change anything about the scheduled transaction later, you can edit it from the main GnuCash window: select Actions -> Scheduled Transactions -> Scheduled Transaction Editor.

Fig.6. Scheduled transaction (advanced)

Split transactions

Sometimes more than two accounts are affected by a single transaction. Usually it is just two: your bank account and a particular account in "Expenses", for example. When getting cashback using your bank card in a shop, however: there is a withdrawal from your bank account, an expense in "Expenses:Groceries", and a deposit in "Assets:Current Assets:Cash in Wallet". All together, three accounts are utilised.

This is handled in GnuCash by using split transactions. Here is how to input a transaction totalling £40, comprising £15 spent on groceries and £25 as cashback, using split transactions:

  • Open your bank account register window.
  • Enter the description as "Groceries", select "Expenses:Groceries" in the transfer column, and enter the full amount (£40) in the withdrawal column
  • Now click the Split button on the button bar. Three light-brown rows will appear, showing each account and how it is affected by the transaction. To start with, "Assets:Current Assets:Current Account" shows a withdrawal of £40, which is correct
  • Go to the row showing "Expenses:Groceries" in the transfer column and click in the deposit column. Enter £15 here. Write "Food" in the memo column. This is a deposit, not a withdrawal: remember, this row shows how the transaction affects the "Expenses:Groceries" account.
  • Click in the transfer column of the blank row and select "Assets:Current Assets:Cash in Wallet". It already shows £25 in the deposit column as it automatically calculates the unallocated amount.
  • Press Enter. The deposit and withdrawal columns total the same amount, indicating the overall entry is correct.

Figure 7, Split transaction shows the end result.

Fig.7. Split transaction

Of course, you could represent getting cashback using normal transactions if you find split transactions hard. You could put the full amount (including cashback) down as an expense into "Expenses:Groceries", and transfer the cashback amount back from "Expenses:Groceries" into "Assets:Current Assets:Cash in Wallet". It isn't quite right though; your statement will be slightly more tricky to reconcile, and questions such as "how much do I spend on groceries?" will be harder to answer. Remember that GnuCash is just a tool, so use it in the way which feels most comfortable.

Statement reconciliation

You may have noticed the "R" column in the account register window, with "n" in each row. This is for showing whether a transaction has cleared; in other words, whether the bank (or credit card company) has dealt with it. The "n" means that it is uncleared; "c" means that it is cleared; and "y" means it is reconciled with your statement.

When your statement comes, you can enter the final balance into GnuCash and select the transactions that have appeared on your statement: these are then said to be reconciled, and you can no longer edit them.

If you bank online, you can see when transactions have cleared with your bank and mark them cleared in GnuCash: just click in the "R" column to change cleared transactions to "c."

At the top of the account register window you will see balances for "present" (all transactions to date), "future" (all transactions known about), "cleared" (should match your online balance) and "reconciled" (up to last statement).

To reconcile a statement, select Actions -> Reconcile.... A dialog box will ask for the statement date and the ending balance on your statement. Once you have entered them, transactions will be shown for you to tick off from your statement (click on each transaction to do this). See Figure 8, Reconciling a statement.

Fig.8. Reconciling a statement

The difference between your statement's ending balance and the balance calculated from the selected transactions is shown at the bottom right of the window. This should be zero when you have finished. Once it is, click the Finish button. The reconciled transactions now show a "y" in the reconciliation column.


There are lots of useful reports that GnuCash can generate for you. As well as the balance sheet (table of assets and liabilities) and the profit and loss account (table of income and expenditure), which look a little like spreadsheets, there are bar charts and piecharts available.

To generate a report, select Reports -> Income & Expense -> Expense Piechart (for example). You will immediately see a piechart representing your expenditure (see Figure 9, Expense piechart).

Fig.9. Expense piechart

You can alter the period of time the report covers, and which expense accounts are included, by clicking on the Options button. Close the report with the Close button.

No login required. Want to see your comments in print? Send a letter to the editor.


I find GnuCash an extremely valuable tool for managing personal finances. If you are using bits of paper--or a simple spreadsheet--to manage yours, I recommend you give GnuCash a try.

Further reading

About the author

Tim Waugh is a Systems Engineer at Red Hat, primarily responsible for packages relating to printing and some shell utilities. He has been using Linux since 1995. He lives with his wife in Surrey (England).