Over the past couple of years I have been intrigued (and sort of excited) about the ideas behind plain text accounting. To be excited about accounting is probably unusual but I love its simplicity and logic - and the power it gives you.
Plain text accounting is essentially the practice of keeping track of your finances, but in simple plain-text files. This is in contrast to other accounting/bookkeeping systems - such as Xero, Sage, Quickbooks, GnuCash, etc. - which can have proprietary/closed-source/software-specific formats. Plain text accounting provides a number of additional benefits:
- Anyone can do it.
- It logically descibes double-entry transactions and credits/debits.
- It’s free (in multiple senses).
- I’t small and easily stored, edited, backed-up, and editable from any type of device.
- It’s flexible and can be used to model both simple complex financial records (including investments, stocks, currencies, etc.).
- It is easily parsed and manipulated using common tools (see below). It can also be easily read by a human.
I have written a blog post that goes into more depth here. However I won’t go into much more detail in this note since the documentation of various software tools can do it far better than I (see below).
I recommend reading Ledger’s documentation as a starting point, as this helps introduce the concept better than I and has some examples of typical syntax.
How I use it
I currently use the Ledger software (see below) to report on a single ledger file (named
ledger.dat - I only need one file) that I edit using Vim and which auto-syncs to my personal Nextcloud.
There is an established ecosystem of open-source software tools for both inputting/manipulating and reporting on plain text account files. In many cases the recommendation is that the accounts themselves are modified by hand, with the tools being used as read-only reporting - but of course it is entirely up to you. That’s the point.
Command-line software in this space powers what is known as “command-line accounting”.
Below is a collection of software tools for working with plain text account files:
- Ledger (“fat-free accounting”) - the “original” tool that inspired many others. This is what I use. Super-fast (even with long ledgers over many years), easy to use and get the hang of. Used for querying/reporting.
- hledger - inspired by Ledger, written in Haskell. Slightly different focus. Can be used to report and add entries.
- beancount - lots of features, reporting, web interfaces.
Given the files are just plain text, common tools in the Unix ecosystem (e.g.
sed, etc.) can also be used on their own (or as part of more complex pipelines) to read/edit your files.
There are a number of other resources you might find useful:
- plaintextaccounting.org (when I last checked this site was down but there is a copy on the Internet Archive) - great introduction, collection of resources, notes, software.
- Ledger’s documentation (as above).
- beancount’s “Command-Line Accounting in Context” - talks about motivation and goes into the background a little more.
🪴 I am keen to continue to grow this note over time. If you have suggestions for additional links/resources then please let me know.
Thoughts on Making Tax Digital
The UK Goverment’s Making Tax Digital (MTD) scheme is currently being rolled out for individuals and businesses. Currently it is only mandatory in some circumstances, but the idea is that everyone will move to this model over the coming years.
I do like the system, and submitting returns (such as ones for VAT, which are more frequent) is made so much easier, since they can be made directly with a click of a button with connected accounting software.
However, as far as I know, the software has to be approved by HMRC. This means that submitting tax returns via MTD is not possible (either now, or likely in the future) via plain-text accounting methods. Businesses and individuals are going to become forced into using approved commercial software for MTD and are unlikely to want to maintain two sets of accounts just so they can continue to use plain-text accounting.
I hope this does not mean that people begin to stop using the method.