Plain Text Accounting is Pretty Cool - Sumner EvansPlain Text Accounting is Pretty Cool
Posted<br>on 15 August 2026<br>in<br>Money<br>• 2518 words<br>• 12 minute read<br>Tags:<br>Plain Text, Accounting, Double-Entry Bookkeeping, Personal Finance, hledger<br>I like to keep track of my finances pretty religiously. I don’t really budget, I<br>am just very obsessive about tracking every expense, and ensuring that my<br>overall savings rate is high1. I started by using Mint (may it rest in peace)<br>and when it got killed, I switched to<br>Rocket Money. Eventually I got annoyed with that<br>due to it not supporting connections to some of my accounts and I ended up<br>keeping track of my finances manually in markdown files in a git repo for a few<br>years.2 Last year, I started using Origin, which<br>was pretty good. However, recently I started looking for a new solution due to a<br>few reasons:<br>Origin (like Rocket Money and Mint before it) has issues staying connected to<br>all my accounts reliably. I consider periodically unreliable connections to<br>be significantly more annoying than having to do manual entry of every<br>financial transaction.<br>Origin does not handle closed accounts very well (closed credit cards/bank<br>accounts/loans).<br>Origin does not allow me to track gross income and count payroll deductions<br>towards my 401(k) as savings. As someone who is fortunate enough to be able<br>to max out my 401(k), this really affects my monthly savings rate<br>calculations.<br>One of the benefits that is included in the Origin subscription is free tax<br>returns. However, they don’t support one of the situations that I had this<br>year, so I wasn’t able to take advantage of that service and ended up having<br>to pay for a different service anyway.<br>Origin keeps trying to AI-ify everything. I’ve tried asking questions of the<br>AI for various financial situations, but its responses have been kinda<br>obvious and uninsightful at best. I already pay $20/mo for a Claude<br>subscription which has actually been more helpful with sorting out a few<br>weird financial situations I’ve found myself in the last year.<br>In addition, I wanted to convert my personal finances to use<br>double-entry bookkeeping<br>for learning purposes. Double-entry bookkeeping is slightly unintuitive if you<br>are unfamiliar with it (as I was when I started this journey), but once you get<br>used to it, it’s pretty straightforward. I’m going to assume in the rest of this<br>post that you have a basic understand of double-entry bookkeeping.<br>I briefly considered moving back to markdown files, and using AI to help me<br>build better automation of the monthly net worth calculations (which was the<br>most annoying part of the markdown file method). I asked Claude to do some<br>research into best practices, and it surfaced an option that I hadn’t even heard<br>of: plain text accounting.<br>Plain Text Accounting
Plain Text Accounting (PTA) is an umbrella<br>term for storing accounting data with plaintext files. This can get tedious (as<br>I discovered from my years of using markdown files) so plain text accounting<br>generally is also associated with using software tools to modify and report on<br>the underlying plaintext files. Most plain text accounting programs use<br>double-entry accounting at their core.<br>Of course, since it’s plain text, you don’t need to use any tools at all or you<br>can easily create your own tooling. You can use a simple text editor to edit the<br>source files. You can create custom programs to manipulate or report on your<br>financial data. You can even take advantage of the fact that plain text is<br>AI-native and use something like Claude Code to analyse your finances for<br>insights.<br>Plain text also has the advantage that you can easily store the files in source<br>control. In my case, I use a git repo that stores all my financial data.<br>After some further research, I landed on using hledger.<br>It’s written in Haskell, seems very well supported by the community, has<br>built-in tools for importing transaction CSVs, and I like its journal file<br>format.<br>In hledger, you create journal files to record journal entries (transactions)<br>with a fairly straightforward syntax. Here is an example journal entry:<br>2026-08-09 * XCEL ENERGY<br>liabilities:credit-cards:capitalone:venturex -$80.00 ; date:2026-08-10<br>expenses:home:utilities $80.00
On the first line, we have the transaction date, a * indicating that the<br>transaction has posted, and a transaction description. The subsequent lines are<br>the entries that constitute the transaction. Since this is double-entry<br>accounting, the entries must always sum to zero3 and hledger checks this as<br>it reads the journal. In this case, we are taking money out of the liability<br>account for my VentureX credit card and applying it towards the utilities<br>account.<br>The hledger program parses the file, and allows you to generate useful reports<br>such as showing a net worth breakdown via the balance command or a spending<br>breakdown via the incomestatement command. Each of these commands can be<br>scoped to a certain...