Bookkeeping
Posted on vr 29 augustus 2025 in tools
Knowing how to Keep the Books is a skill, I believe, everybody would benefit from.
Double-entry accounting
Double-entry accounting simply means that this method accounts for every transaction where the money came from and where it is going. It makes "two entries"!
I highly recommend reading Principles of Accounting with Ledger in the Ledger manual. It very clearly explains the principles of double-entry accounting.
I have used GnuCash, SQL-Ledger, Odoo and Ledger. All these programs support double-entry bookkeeping and make it relatively easy to start with double-entry accounting. Of the programs mentioned, GnuCash is definitely easiest for beginners to start with.
Chart of Accounts
Every set of books has a Chart of Accounts (CoA). This is a hierarchical classification system for your money. How you structure your books is (in principle) completely up to you. Unless you own a company and need to comply with the accounting rules of your country, then there can be a CoA you will need to use for your company.
Here are a few general guidelines.
At the top level of most CoAs you will typically find the following accounts (with the Dutch equivalent between parentheses).
- Income (Inkomen)
- Expenses (Uitgaven)
- Assets (Activa)
- Liabilities (Passiva)
- Equity (Eigen Vermogen)
Depending on your taste Equity can also appear as a subcategory to Liabilities.
The goal of a CoA is to provide you with a way to quickly visualize the flow of money. It answers the following questions.
- Where does it come from?
- Income can come from an hourly wage, from a monthly job payment, from dividends or interests from investments. These all bring money into your system;
- What brings it with?
- Liabilities, be it a credit or a loan, produces a (one-time) income stream by financing an expense. It brings with it a legal obligation to repay at some later date and may include regular payments of interest;
- It also brings with it a means to exchange tokens for the necessities and luxuries of life: food, shelter, energy, transportation, toys, etc;
- What is the effect on my system?
- Money flowing in and out changes your Equity. Over a period of time this change is called a Profit if more money is flowing in than leaving or a Loss if more money is flowing out than in;
- Too much money going out relative to money coming in will present a problem at some later stage;
- A large inflow of money (inheritance, lottery winnings, some other financial windfall) can destabilize your system substantially much like a tsunami can wreak havoc on a coastline;
- Where does it leave?
- Expenses are things or services you buy. It's your cost of living: expenses for food, shelter, clothing, transportation, entertainment, etc.;
- Does it leave in a trickle or in a flood?
- What takes it with?
- When liabilities are obligations that a stream of money brings into your system, Assets are its opposite. They take obligations out of your system;
- Having money to solve problems takes away the incentive and imagination on how to solve a problem without spending money; it lets you play life on easy mode.
Example Chart of Accounts
Here is, roughly translated and slightly expanded, the Chart of Accounts I currently use in my own bookkeeping in Ledger (ledger-cli). I will use the same notation as Ledger uses to indicate deeper parts of the hierarchy by separating the parent account and the child account with a colon (:).
Account marked with * have a note further down with some explanation.
On the balance side:
Assets Liquid Cash Bank Checking Bank Savings Real Estate Investments Bonds Exchange Traded Funds Exchange Traded Commodities Shares Prepaid Invoices Liabilities Credit Card Mortgage Open Invoices* Equity:Opening Balances
Notes:
- Assets:Prepaid Invoices contain subdivisions, one for each supplier; I rarely use this category;
- Liabilities:Open Invoices: these are either unpaid or on an ongoing payment schedule and thus partially paid. These also have subdivisions, one for each supplier.
On the profit and loss side:
Income* Wages Sales Rental Income Reimbursements Gifts Interests Received Dividends Expenses Personal Groceries Clothes and Shoes Insurance:Health Insurance Physician Dentist Hairdresser Taxes* Dividend Tax Income Tax Services Accountant Notary Banking Services Shelter Interest on Mortgage* Insurance:Home Insurance Taxes:Municipal Tax Rent Energy Water Furnishings Maintenance Gardening Expenses Social Communications Phone Services Internet Access Devices Subscriptions Newspaper Streaming Services Eating Out Going Out Entrance Fees Pets Veterinarian Feed Stuff Gifts Tips Donations Transportation Public Transport Car Fuel Rental Taxes:Road Tax Insurance:Liability Insurance Maintenance Parking Purchase Fines Toll Bicycle Plane Insurance:Travel Insurance Travel Expenses Studies Lessons Media Subscriptions Other Expenses Cash Differences* Payment Differences
Notes:
Income: all categories within income can have subdivisions to clarify where exactly the money is exactly coming. For example, for Income:Wage I could make subdivisions for each employer. If I worked at First Company and later at Second Company, I would use Income:Wage:First Company, Income:Wage:Second Company.
Expenses:Cash Differences: This is for small cash expenses without proper categorization, probably because I lost a receipt. It's to correct the amount shown in Assets:Liquid:Cash.
Expenses:Personal:Taxes: This category only shows part of the taxes I pay.
In other categories, there are also taxes paid. For example in Expenses:Transportation:Car:Taxes:Road Tax or Expenses:Shelter:Taxes:Municipal Tax. By coding the accounts this way I easily filter out how much taxes I pay in ledger-cli with ledger bal :Taxes:
Note that I can do the same for insurance with ledger bal :Insurance:.
Expenses:Shelter:Interest on Mortgage: payments of your mortgage usually contain a part interest and a part repayment. The repayment part goes to decrease the absolute amount in Liabilities:Mortgage and is not an expense.
Personal Experiences
Over time I have changed how my Chart of Accounts looks. I have changed the amount of detail, the number of top-level accounts under Expenses, reordered accounts.