As a fan of tracking my finances electronically, I've paid attention to GnuCash for quite a while. In the past, it wasn't ready for my needs since it didn't automatically import finances from my bank. That has changed though. I was happy to recently successfully download bank transactions with the latest GnuCash and I decided to go ahead and make the switch for good.

There are a few reasons GnuCash is better than a number of proprietary alternatives. GnuCash is Open Source Software and can be downloaded and used without purchasing anything. You don't have to pay extra to unlock more advanced features. You don't have to pay anything at all! Speaking of the advanced features, you can track stock prices and investment accounts in addition to normal cash based accounts. Also, GnuCash uses a double entry accounting style that can be used to do your accounting in a GAAP compliant fashion.

Anyway, that brings me to my reason for writing this post. I have been somewhat dissatisfied with the budget tracking abilities of other software. I've been using Quicken for years and have found that it's budget features provide a disincentive for my wife and I to actually continually use them. Here are a few of the problems:

  1. Budgets don't accumulate money
    Lets say you want to save for a vacation and you'd like to budget $300 a month so that after 6 months you have $1800 to go on your vacation. That works fine if your six months fall within a calendar year. You can run a budget report and see how much money you have in that budget. If you happen to cross years however, you'll have to create a new budget and initialize it with amounts from your old budget. Suppose you had 4 months saved. You'd have to put your budget for the new year's January at $1200 and then continue saving $300 for the next couple months. This is not only annoying to do for more than a couple budgets, but it causes your budgeted money for January to exceed your income if you've been saving for a while. This is especially the case when part of your budget includes savings that you don't spend.
  2. Budgets don't balance

    This problem is directly related to the 1st problem. Because you can't accrue a balance in a budget, you can't balance your budget with the money you actually have in a savings account. I created a custom report to do this manually but it was never exact.

  3. Budget balances are difficult to adjust

    Suppose you save $50 a month in one budget and $50 in another. After 6 months, you decide that you didn't need as much money in one account. When do you make the budget adjustment. You can go back and edit every month for the 6 months. You could also make adjustments to a budget all in one month. There isn't a good way to do it though and unless you adjust it tediously every month to reflect what you need, it'll mess up your custom reports that you worked hard on.

Anyway, I don't claim to be an expert at Quicken so you may find my rational unsupported if there are better ways of doing your budget. The point of this however, is that my wife and I didn't have time to adjust our budget every month. Life doesn't follow a preset budget. Sometimes you need to make a purchase and use money from savings or another account. We found that every month we wanted to adjust budget values and it was too time consuming.

Getting back on track, we've found a much better way to track our budget and are happy with GnuCash. The rest of this post shows how we've created budget accounts with GnuCash and how we've solved the problems we had with Quicken.


Prerequisites

Install GnuCash. You can get the latest binary distribution here. If you use a Mac, I used the instructions here and it is working for me.

My Budget Philosophy

Here are the basic concepts I want GnuCash to accomplish for me.

  1. When I earn income, I want to decide which budgets that income will be applied to
  2. When I spend money, I want to decide which budgets that money comes from.
  3. I want to be able to see, at any time, how much money any specific budget includes.
  4. I don't want to redo my budgets at the start of every month or every year.
  5. I want to adjust budget balances easily if I decide it is necessary.

That being said, here is how I've accomplished this with GnuCash.

Basic Account Setup

GnuCash offers a number of preset accounts you can choose to use when you 1st create a new file. For this example, I'm using the 1st preset "Simple Checking Account". After you select those accounts and finish the creation wizard, you get an account for a checking account and an opening balance account.

GnuCash Budget Setup

First, a quick accounting refresher. The basic accounting equation is:

Assets = Liabilities + Equity.

GnuCash enforces this concept. Each transaction you enter must be balanced according with that equation.

A budget account is a liability. To better understand this, think of it this way: If you earn $100 and put it in the bank and want to create a budget, you might decide that $50 is for bills, and $50 is to save. So you create a budget account for $50. You haven't spend the money yet, but you plan on it, and that is why it counts against your assets. The idea is that $50 is reserved to spend and you shouldn't spend it on something else.

Every transaction must be equally balanced though. If you add money to a liability, you need to find an asset to add to as well so the equation stays balanced. I've done this by creating a separate account that I've called "Budgeted Cash". It's an Asset. You add $50 to a budget, and $50 to budgeted cash.

Here is the account setup:

  1. Click the "New" button to create new accounts.
  2. Create a "Budget" placeholder account. This is just to organize all your budget accounts in an easy to see place. It also will sum the sub accounts for you so you can see the total of your budgeted money.

    Account name: Budget
    Placeholder: checked
    Account Type: Liability
    Parent Account: New top level account.

  3. Create an asset "Budgeted Cash" account.

    Account name: Budgeted Cash
    Placeholder: unchecked
    Account Type: Cash
    Parent Account: Assets

  4. Create a sample food budget account.

    Account name: Food
    Placeholder: unchecked
    Account Type: Liability
    Parent Account: Budget

  5. Create a food expense account. This is for when you actually spend the money.

    Account name: Food
    Placeholder: unchecked
    Account Type: Expense
    Parent Account: Expenses

I now have accounts set up to track my checking account balance as well as my budget balance. (This creates the basic structure to solve items 3 and 4 from my list above.)

Entering transactions

Lets enter a sample income transaction.

Double click your checking account and we'll enter a simple income transaction and budget some of the money.

In this example transaction, I've only budgeted $50 of the $100 income. My personal preferences is to budget all the money for each income transaction. I have a number of budget accounts for things I need to spend, some for savings, and the remainder for discretionary spending. You can do as you see fit.

The budget transaction doesn't affect your balance sheet. You still have a net increase of $100 because you deposited $100 into your checking account from Income. The $50 budgeted cash is balanced back to $0 by the food budget. We've now accomplished #1 from my list above.

You can see that your account totals include $50 for food now. This is #3 from my list above.

Spend money from your budget

Later on you or your spouse goes grocery shopping and spends $37.50 at some store. Lets enter that into the Food expense account. If you haven't noticed, you can really use any account to enter transactions. There is even a general ledger for entering transactions for all accounts.

You'll notice that you have to enter the amounts twice. You show that $37.50 transfers from your checking account to your food expense. You also show that $37.50 transfers from your budgeted cash to your food budget. This may seem somewhat tedious but in my opinion, it is highly beneficial. We've just solved #2 from my list. If you are creative, you'll see that you can do things like use more than one budget to pay for an item. You could also use one budget to pay for more than one item. Suppose you have too much money at the end of the month in your food budget and not enough in your discretionary spending budget that includes going to a movie. Just make a budget transaction that puts money into one budget from the other. Easy enough. #5 solved.

Summary

After entering the data, I see a balance of $12.50 in the food budget. This amount doesn't role back to 0 like it does with Quicken at the start of the year [1]. I also see that I have $12.50 of budgeted cash. You can subtrack your budgeted cash from your checking account total to determine how much money you are saving. You could also create a savings budget and budget all your income.

Some may find the extra work of entering budget transactions tedious. I'm not going to argue that point. I found however, that my wife and I don't have time each month to sit down and figure out which values to put into a budget. At the start of the year, we don't want to completely create a new budget. We do have time to pay our bills and record our transactions though. The time it takes to enter the extra budget accounts each time you record a transaction, at least for use, allows us to completely skip the problems we had with Quicken.

Feel free to leave a comment or ask a question.


[1] (Just to be fair, GnuCash also has a budget utility and it pretty much has the same problems that Quicken's has. On the other hand, I don't know if you can do this type of budgeting with Quicken and even if you can, Quicken cost's money!)