Other Articles‎ > ‎

GNUCash : A Freeway to Managing Money

The usage of information technology and computers in India is remarkably low. It often comes as a surprise to hear stories of the turnover of a seller of bhel-puri or chane-bhature. Using that as a reasonable baseline, we can conclude that there must be a lot of small businesses in India which need information systems if they are to expand and grow. There clearly is a latent need where we can promote the use of Linux and open source software to people who are already familiar with an alternate interface. The need to handle complex transactions and keep track of information is as much a need in a small organisation as it is in a large one. The larger organisations can spend money on integrated commercial ERP/CRM systems. The smaller organisations need them but cannot spend that kind of money.

This clearly opens up opportunities for open source. I started looking at several products and two which appealed to me were TinyErp and OFBiz. TinyERP is written in Python and is remarkably compact for the functionality it provides. OFBiz is a very promising J2EE application and was an Apache incubation project when I looked at it a year ago. It is now an official top level project of Apache.

I soon realised that the foundations of an ERP system is an accounting system and the first step should be a simple accounting system. This was not a pleasant thought as accounting systems do not seem all that exciting or fun projects. However, if we need to promote our preferences, we need to do so in the language of our audience. Since we aim to succeed, we might as well learn to manage our own income.


A good place to start for an Indian perspective was the online school book on accounting for class XI published by NCERT (http://www.ncert.nic.in/textbooks/testing/Index.htm). For the accounting application, we can use GnuCash, possibly the best known of the accounting applications in the Linux world. The tutorial and concepts documentation of GnuCash is excellent as well. Interaction with a CA helps and I would like to thank Rajesh Seth for helping me overcome my misconceptions.

GnuCash follows a double entry system. Historically, this was useful to resolve bookkeeping errors. Fortunately, with computerisation, it is highly unlikely that the books will not tally. So, the primary use now of double entry system is to keep track of where the money came from and where it went. While GnuCash is intended as a personal accounting system, it is comprehensive enough that it can handle the accounts of a small business as well. A very nice feature of GnuCash is that while it conforms to the standard accounting processes and practices, the messages and column headings are easier to understand for a lay person.

Getting Started

We will need to create a new file in GnuCash to keep our data. It is desirable that we keep it in a separate directory because GnuCash creates a lot of reports, logs and backup files during its operations. The critical part of the creation of the new file is the creation of a set of accounts. A druid will help us should we so choose and we do. We will choose the default currency to be INR. A number of categories for accounts are available. By default “Common Accounts” is selected. We will de-select it and limit ourselves to “Business Accounts” (Fig 1).

There will be 5 top level accounts(Fig 2).

The minor issue will be that the account “Equity” is normally referred to as “Capital” in India. We can change its name to suit our needs. We can also remove some of the accounts which may not be meaningful for us, e.g. the sub-accounts in “Expenses/Taxes” categories. In “Assets/Current Assets”, we have a sub-account “Petty Cash”, while we normally just use “Cash”. What we call a “Current Account” is called a “Checking Account” here. The point is that it is easy to get started with GnuCash and it is perfectly suitable for, at least, maintaining the books as per our needs. Not all reports which may be useful for Indian businesses will be available but new reports can always be added.

We may need to create an account for each of our bank accounts under the Current Assets, possibly under “Checking Account” or “Savings Account” (Fig 3). We are now ready to get started with the transactions.

Basic Transactions

Our bank accounts will have an opening balance. We could have provided it at the time of the creation of the account or we can enter it as a transaction. The two are identical.

GnuCash makes extensive use of tabbed windows. A window remains open till we decide to close it. I wish the closing a window had followed the Firefox model; instead, we have to click on the Close icon on the tool bar.

We select our bank account and open it. Double click achieves the same goal. We enter “Opening Balance” in the “Description” column. The key value is the “Transfer” column, which will contain the second account affected by this transaction. For an opening balance transaction, the source of the money is a Capital account, i.e. “Equity/Opening Balances”. We enter, say, 1000 in the “Deposit” column(Fig 4).

Once we press Enter, we get a new line for entering the next transaction. We can select the previous transaction and click on the “Jump” icon in the tool bar. A tabbed window with the “Equity/Opening Balances” appears and we can see that the transaction we have just entered in the bank account is reflected here as well. Notice that the amount column headings here are “Decrease” and “Increase”(Fig 5). Fortunately, we are not confused by the debit and credit headings which can be hard for non-accountants.

The developers of GnuCash have put in great amount of effort in making it easy to enter transactions. Short cuts are available, intelligent options are offered. The data entry can be very fast and convenient once one is familiar with it.

Most of the time, it is not difficult for us to decide on the source and destination accounts. A customer is an asset and we will normally create an account for each customer under “Accounts Receivable”. When we invoice him, the second account affected will be the “Income/Sales”. If we wish to keep track of “Services”, we can create an account with that name under “Income”.

The customer pays us by a cheque but deducts service tax at source. This becomes a split transaction. Suppose we had raised an invoice for Rs. 1000. We receive a cheque for Rs. 900 and Rs. 100 is the tax deducted at source. Now, instead of entering the “Transfer Account”, we will click on the “Split” icon on the tool bar. We will make an entry of Rs. 900 in “Current Assets/Bank Account” and the balance Rs 100 in “Expenses/Taxes”. As can be seen, it is easy to ensure that the books remain balanced.(Fig 6)


The most useful report for getting started is the “Account Summary”(Fig 7).

The first thing we notice is that the report gives values in both INR and $. We need to adjust some of our preferences. In the “Edit/Preferences”, we change the “Default Report Currency” to INR. While at it, we can also set the accounting year and the date format.

The operation of the reports is a bit unusual. A report will open in a tab view. There are no report parameters asked. Once the report has opened, we click on the “Options” icon and we can change the report parameters. For example, let us change the “Levels of Subaccounts” to 1 in “Accounts” options and click on “Apply”(Fig 8).

The report will now show only the top level account values(Fig 9).

Odds and Ends

Among the limitations, GnuCash is a single user application. It does not have a year closing option. A simple solution is to add a transaction at the end of the financial year in each of the Income and Expense accounts transferring the balance to an Equity/Capital account. We can create a Profit and Loss account for this purpose. However, the old transactions are not locked and we can still make changes.

The application is written in C and Scheme. Exposure to Scheme and Lisp like languages is minimal for many programmers. On the positive side, if we need to add code, it may be just the incentive needed to learn Scheme!


We do not expect new users of computers to ask for Linux and Open Source as a part of their requirements. They are more likely going to be influenced by their colleagues, suppliers and IT professionals. Money and keeping track of it is a critical part of any business.

Even experienced users may be open to change. Many are faced with the dilemma that the accounting application they were using no longer works on their new system. Licensing issues are also becoming more complex.

We need to handhold and guide these users to the Open Source world, at least till we build a pool of references for such applications. It is my belief that GnuCash or a similar application is a critical component in the spread of Linux on the desktops in India.