Using GnuCash

GnuCash is a complex piece of software with many features and possibilities. It requires some learning and experience to work fluently and effectively with it.

To get you started, it comes with a good Concept Guide, which will introduce you to some basic accounting concepts and explain how GnuCash works with those principles.

A second helpful source of information is the GnuCash Manual, which is a reference to the menu options and dialogs in GnuCash.

These two documents cover only a part of what GnuCash can do. This is to be expected, as there are practically as many use cases as there are users of the tool. It would be impossible to contain all of these use cases in a manageable static document. Instead, this page and the ones linked to below will show ways to deal with specific problems. The examples and solutions provided reflect solutions found by users of GnuCash for real world scenarios.

If you know a solution to a particular problem while using GnuCash, you are welcome to add it to these pages as well.

Alternatively you can send it to the GnuCash user mailing list:

  1. You need to be subscribed before you can post to this list without moderation.
  2. Use a Subject in the lines of "GnuCash tip" or something similar, so it is easily recognized.

General Advice

Here is a section of helpful tips on the use and functionality of GnuCash.

Register Tips

Moving Multiple Transactions

There is no direct way to move a large number of transactions from one account to another in GnuCash.

If you are trying to move a small subset of an account's transactions, your best approach is to edit each transaction manually. You can speed this up somewhat by changing your register view to Transaction Journal mode, which will show all split lines at once. You may also find that copying the destination account and pasting it into the split line may help.

If you are trying move all (or MOST) of an account's transactions, you can get GnuCash to re-designate all your transactions at once by asking GnuCash to DELETE the account in question. For accounts that have transactions in them, GnuCash will ask whether you want to completely delete the transactions, or move them to a different account. Select the account you want all your transactions to go, and they will be moved. (To delete an account, open the Accounts window, select the account you want to delete, and click the Delete button).

Move Transactions to Another GnuCash File

Note: Ensure backups are current then work with a temporary copy of original files and confirm the changes before overwriting original files.

Although accounts can have the same name in different files the GUIDs are unique, so they are different accounts. Moving transactions is a manual process to export transactions by account to csv and import them into another file (see CSV Import/Export). The first page of the export wizard gives guidance on which settings to select.

It might be easier to export the account(s) containing more transactions than need to be moved then edit the csv file in a spreadsheet or text editor.

After confirming the transactions have been moved they can be deleted manually from the first file then confirmed again before overwriting original files.

Import transactions from another program

Easy way to import a large amount of transactions from another your program (import from bank isn't covered by this tip)

If you use another program that may produce accounting data, tell your programmer to use QIF format to easy import into GnuCash. QIF format is simple and other programs can easy produce it. GnuCash's QIF importer is also easy to use and comes with self explaining wizard incorporated.

You can find QIF format description on Wikipedia or ask uncle Google.

--Provided by Pietro B.

Reporting Tips

As of GnuCash 2.6.15, the Tutorial & Concepts Guide contains a Reports chapter. Please refer to the Guide for details about the reports included with GnuCash.

A single report that shows summary amounts for multiple months for multiple accounts

To create a single report that shows summary amounts for multiple months for multiple accounts (for example, monthly totals for expense accounts over the course of a year), you can use the Transaction Report

  1. Choose your Accounts as the Accounts source in the Accounts tab, e.g. highlight "Expenses" and click "Select children"
  2. Set sortkeys in the Sorting tab: Primary key is Account Name, Primary subtotal is enabled. Secondary key is Date, secondary subtotal for date key is Monthly
  3. Enable Subtotal table in the Display tab

Quicken-like "Overview" of your accounts

Quicken provides an "overview" of your accounts -- a list of today's balances for checking, savings, credit cards, major assets and liabilities.

For something similar in GnuCash, run the Balance Sheet report, then go to Options to pick the accounts that you want to see in the overview. Then just leave that tab open, and every time you start GnuCash you'll have the overview. Click "reload" if you put in transactions and want to see how things have changed.

--Provided by Anthony Dardis

Alternatively just keep the "Accounts" tab open. It shows the current balances of all the accounts too, without having to run a report. However, I don't use the business functions, or scheduled transactions, so that might perhaps make a difference.

--Provided by Mike Leone

Displaying Split Account Details in Transaction Report

For a simple transaction like this:

debit credit
"Cheques Received"
"multiple payers" £157.60
£157.60

then on a Transaction Report for the bank account the details appear pretty much as above.

For clarity of the accounts, you might enter transactions with multiple splits referring to the same account. For example, the above transaction might well be entered like this:

debit credit
"Cheques Received"
£100.00
£57.60
£157.60

When this transaction is printed on the bank account's Transaction Report, then under "other account" it simply prints "split" instead of the account name.

To display the additional split detail, you need to set Display -> Detail Level = Multi-Line and then you need to turn on Display -> Account Name. Display -> Other Account Name is automatically disabled.

You can choose whether or not to turn off the full account name using Display -> Use Full Account Name?

--Provided by Derek Atkins (in response to Colin Scott)

Monthly Income/Expense Reports

You can export a GnuCash transaction report to HTML and then open the HTML file in Excel. You then have a ready-made data source from which you can create a pivot table with the transaction data grouped both by account and by period, with very few steps involved.

Two enhancements to the data to try are: (1) grouping the dates by month; and (2) parsing multilevel account names into columns labeled "Account1", "Account2", etc. using the ":" delimiter.

This gives you a report that is very close to the monthly/quarterly/yearly income/expense report that MS Money and Quicken provide.

--Provided by Martin Cunningham on gnucash-users

Reporting in single file resp. in landscape format

Currently, this isn't supported. Via HTML export, however, both options are possible, with the help of htmldoc. Sample call for landscape in european A4 format, which also puts alle single html files into one compound pdf:

htmldoc -t pdf14 --webpage --no-links --linkstyle plain --size 297x210mm --headfootsize 9 --header fff -f report.pdf *.html

Exporting a report to OpenOffice Calc

Sometimes a report needs to be laid out slightly differently than is possible in GnuCash. One way to do this is to export the report to OpenOffice Calc. GnuCash can't export directly into that format, but it can export to html. OpenOffice Calc can import such a html file. Here's what to do:

  1. Create your report in GnuCash
  2. With the report open in front of you, select File -> Export -> Export Report to save the report somewhere in html. Note: there is also a tool bar button that does exactly the same thing.
  3. Open OpenOffice Calc
  4. Select Insert -> Link to external data
  5. In the popup window, use the ". " button to find your exported report and below, choose "html all", then click ok.

This should load report in a Calc sheet. From here you can make tweaks as you like.

Printing a Rental Report

GnuCash does not have a special Rental Statement report. You need to decide if it is easier to do this in GnuCash or use the data from existing GnuCash reports to prepare the report in other software. This process describes preparing a rental statement in a spreadsheet for a cash accounting system assuming tenant pays into a bank account.

Example: A lease is commenced with T Smith on 1 Mar 2020 with rent of $250 per week payable each 4 weeks. Tenant must also pay water usage.

Bank Statement Date Description Withdrawal Deposit 06/03/2020 T Smith 750.00 28/04/2020 T Smith 2,000.00 01/05/2020 WaterCo 35.00 

In GnuCash the Water transaction is split into Expense:Water:Supply $20 and Expense:Water:Usage $15

Transaction Report From 01/01/2020 to 15/05/2020 Date Description Memo/Notes Transfer from/to Debit Credit Assets:Current Assets:Checking Account 06/03/2020 T Smith Rent Income:Rent $750.00 28/04/2020 T Smith Rent Income:Rent $2,000.00 01/05/2020 WaterCo Split Transaction $35.00 Total $2,715.00 Expenses:Utilities:Water:Supply 01/05/2020 WaterCo Split Transaction $20.00 Total $20.00 Expenses:Utilities:Water:Usage 01/05/2020 WaterCo T Smith Split Transaction $15.00 Total $15.00 Income:Rent 06/03/2020 T Smith Rent Assets:Current Assets:Checking $750.00 28/04/2020 T Smith Rent Assets:Current Assets:Checking $2,000.00 Total $2,750.00 Grand Total $0.00 

Sample Spreadsheet Rental Statement:

Rent Statement - T Smith Unit 83/2849 High Street MyCity 9999 Payments are provisional upon tenant providing proof of payment Date Due Payment Balance Owing Notes 01/03/2020 1,000.00 1,000.00 06/03/2020 750.00 250.00 03/04/2020 1,000.00 1,250.00 01/05/2020 1,000.00 2,250.00 28/04/2020 2,000.00 250.00 01/05/2020 15.00 265.00 Water usage 15 May 2020 1 of 1 
  1. Load bank transactions into GnuCash
  2. Print transaction report
  3. Open transaction report in spreadsheet
  4. Copy/Paste values transactions with tenants bills and payments. Take more than needed and delete extra lines.
  5. Append rent due transactions
  6. Copy Date, Due and Payment – use copy/paste special values if rent due calculated with formula
  7. Sort by Date Ascending and Payment descending
  8. Format amounts and ensure blank line after heading
  9. Calculate Balance Owing

Note: These steps can be done in a working sheet and saved to a statement template

--Content provided by flywire and transferred from FAQ

Stocks and Commodities

GnuCash on Holidays with your friend

Yes you can use GnuCash while on holidays with your friend.

Here's what you need:

- a computer + gnucash - a freshly created gnucash file - two people on holiday wanting to share costs.
1. Account schema: - Group Account "Cash", with one account named Me, and one named MyFriend - Group Account "Expenses", with accounts like Lunch, Dinner, AfterEight, Hostels, TravelCosts etc. - Group Account "Equity", with one account named Me, and one named MyFriend
2. Initial deposit:

Before taking off, both you and your friend empty your wallets, and count the money inside. No need to create a third wallet. Gnucash will take care of that. Now say your friend has 15.50 in her wallet. The booking in GnuCash is : Cash:YourFriend +15.50 Equity:YourFriend -15.50 See how easy that is?

3. After the holidays are over:

Again count the money inside both of your wallets, then create the exact opposite booking for the remainder in cash. So let us say you paid for everything and your friend paid nothing, then the booking after the holidays would be: Cash:YourFriend -15.50 Equity:YourFriend +15.50

So now you see that Equity is really what you put into the holidays. In your friend's case: -15.50 + 15.50 = 0 IMPORTANT: the Equity:Me and Equity:MyFriend show how much you put into the holiday each. Calculation to make 50-50: subtract the lower amount from the higher amount, then divide this subtracted amount by two. The result is what the owner of the lower amount should pay the owner of the higher amount. Example: You spent 150 dollars, your friend spend nada. Now 150-0=150 . 150 : 2 = 75. So your friend needs to pay you 75 dollars.

4. While on holidays, adding cash money:

From whatever funding you add to your wallet (Cash:Me) it is a deposit so you can book the same as with (2. Initial deposit)

5. While on holidays, spending money:

Now here is the interesting part. What was the money spent on? Whatever the answer, one thing is clear: Expenses:XXX go up, and some other account goes down.

5a. Option#1: While on holidays, your friend spends money to buy two beers, one for you, one for her (beer costs 2.20 each): This is where Expenses:XXX is debited (plus amount) and the Cash:YYY or Equity:ZZZ is credited (minus amount).

- With cash payment, it is Cash:YourFriend -4.40 Expenses:AfterEight +4.40 - However, if she paid with creditcard, it is Equity:YourFriend -4.40 Expenses:AfterEight +4.40

5b. Option#2: While on holidays, you spend money from your own cash on private affairs (private affairs cost 9.70). This is where Equity:Me is debited and Cash:Me is credited (less cash)

- With cash payment, it is Cash:Me -9.70 Equity:Me +9.70 - If you used your own creditcard, it is Equity:Me -9.70 Equity:Me +9.70

This last line looks a little stupid for the laymen bookkeeping, so best use your own creditcard and not tell GnuCash about private affairs.

Enjoy ! Best regards, Ron

Tracking Reimbursable Expenses

It is not uncommon for people to incur expenses that are later reimbursed. Let's assume travel expenses are going to be reimbursed by your employer. In effect, you're making a loan to your employer, which creates an account receivable. This is an asset account, not an expense, so it is kept completely separate from your own expenses.

The simplest solution is to set up an account receivable, Assets:Accounts Receivable:Employer or similar. (If you don't have any other accounts receivable, you can skip the intermediate level and just create Assets:Due from Employer.) Then when you buy let's say airline tickets for an employer-required trip:

Debit: Due from Employer Credit:(whichever credit card you used)

When your employer reimburses you, it's:

Debit: Cash and Checking Accounts Credit:Due from Employer

Your employer probably has some sort of form that you fill out for reimbursement. While you could complicate the above scheme to generate reports for that form, in my opinion, it's less work overall to just write the expenses on your employer's form when they happen, and separately record them in GnuCash.

Where the simple scheme above will definitely help is at income tax time. You'll be able to show that X amount of money received from your employer was a non-taxable reimbursement for expenses, not a taxable payment of salary.

Getting started with GnuCash' business features

A prerequisite for using the Business features of GnuCash is that you have some business related accounts setup (Accounts Receivable/Accounts Payable). The easiest way to do this is to create a new file and add Business Accounts in addition to the Common Accounts.

To get to your invoice you could take these steps:

  1. If you want GnuCash to deal with taxes properly you should first set up the proper tax tables for your country
  2. Customer
  3. For your project, you can create a job
  4. Now you can create your invoice
  5. When you are satisfied with the invoice entries, you have to post the invoice:

That should be it. You can now print your invoice:

-- Provided by Geert Janssens

Using third party software for data exploration and visualization

You can use third party software like Excel, Tableau and Qlik Sense to explore and visualize GnuCash data through an ODBC connection as long as you save your data in sqlite format.

Here are instructions for Qlik Sense in Windows 10 (I chose Qlik Sense because it is a free download).

I wanted to visualize GnuCash transaction data without having to write templates and compile stuff, so I turned to QlikSense as they have a free personal edition (although similar steps would work for Tableau and other software that accepts ODBC connections). The trick is fairly simple:

  1. Download sqlite3 drivers (for windows: install the 64bit version from http://www.ch-werner.de/sqliteodbc/)
  2. Export your GnuCash data as a sqlite file
  3. Configure the ODBC providers in your operating system to point to the Gnucash export
    1. Open Control Panel >> Administrative Tools >> Data sources (ODBC)
    2. Click on System DSN, then on Add
    3. Select Sqlite3 ODBC Driver, then click Create
    4. Provide a name for the connection (GnuCash)
    5. Under Database Name, click on Browse and select the file you exported from GnuCash
    6. Click Ok, then Ok again to close the previous dialog

    Sample SQL Queries:

    LIB CONNECT TO [GnuCash]; //* [expense_accounts]: SQL SELECT accounts.name AS parent_account, p_acc.name AS account, p_acc.hidden AS account_is_hidden, p_acc.placeholder AS account_is_placeholder FROM accounts INNER JOIN accounts AS p_acc ON p_acc.parent_guid = accounts.guid WHERE accounts.account_type = 'EXPENSE' AND accounts.hidden = 0 AND p_acc.hidden = 0; //*/

    User G2010a has a repository with some more GnuCash-related queries.