10 years of personal finances in plain text files

(sgoel.dev)

164 points | by wrxd 3 hours ago

23 comments

  • mtlynch 1 hour ago
    +1 to OP's book, which is the best beginner guide I've found for understanding Beancount / plaintext accounting.

    I was also confused about double-entry accounting for most of my life until I read the article, "Accounting for Computer Scientists"[0] by Martin Kleppman (author of Designing Data-Intensive Applications). It explains double entry accounting in a surprisingly accessible way be putting it in terms of graph theory. I don't even like graph theory that much or consider myself competent in it, but Kleppman's explanation was extremely effective.

    [0] https://martin.kleppmann.com/2011/03/07/accounting-for-compu...

  • djhworld 2 hours ago
    I've been beancount'ing for years now

    As we've crossed into the new year I've switched to a similar directory setup as the OP with 1 file per year. Previously I just had one file that was from 2022 which ended up being like 2 million lines of text, which was starting to bog down the emacs plugin.

    What I appreciate the most about this approach to personal finances is it just tracks everything. Investments, pensions, RSUs, bank accounts. You could even go as far as accounting for any resource that's modellable, e.g. energy usage in kwh vs. bills. I probably wouldn't go that far though :D

    Also you can build a bunch of tooling around it too, with the advent of LLMs my toolset for beancount management has expanded quite significantly. Most recently I got claude to rewrite my transaction rules engine https://djharper.dev/post/2025/08/19/using-llms-to-turn-scri... into something nicer with a UI. This would have taken days to build in the before times, and I probably would not have bothered because it's overkill for 1 user (me)

    • JulianWasTaken 2 hours ago
      I have my electricity bills tracking into a KWH commodity. It has been... effectively useless :D.
      • teeray 25 minutes ago
        I track my propane in an LPG commodity at a fixed price per season. It saved me about $100 once when a transaction wouldn’t balance. I was accidentally partially charged for a short load delivery on one of my tanks at almost double the rate. Even if it seems silly, billing mistakes happen and can be costly!
      • quietsegfault 1 hour ago
        I struggle with tracking the actual cost of my energy usage between changing electric rates, the various solar costs, SRECs, different loans and credits and incentives to be able to make an intelligent decision on what the benefit or cost is of cutting an appliance or adding something new. It’s a lot.
        • lostlogin 48 minutes ago
          It is a lot.

          And when it’s fragile even when working. The cost per unit changes with limited notice in various ways (line rate, unit cost, time period that various rates occur, the day, ‘free’ power bonuses etc).

    • avdwio 2 hours ago
      I'm curious about this as I've thought about building personal software to manage my data (such as finances) via LLM, however I'm apprehensive about actually supplying that data to the LLM to help build the tool. Is this what you're doing? Now that I think about it, I could probably 'anonymise' the data with a local model...
      • rambambram 42 minutes ago
        Just go for it in your favorite programming language, it's a nice exercise and in the meantime you can learn about (double entry) bookkeeping.

        I did that for myself and it took me at most three months of parttime working on it, resulting in a bespoke solution. No need to keep paying some SaaS or fiddling around in Excel. One still needs to learn the bookkeeping system though, but that's true for all options. A SaaS is not magically make that go away.

      • djhworld 1 hour ago
        Nah not exposing the data to the LLM, just building the tools to help me manage the data, usually python scripts
  • thomascountz 2 hours ago
    I began with PTA recently. I think the barrier to entry is high because you first need to learn double entry bookkeeping (if you haven't already) and then you need to decide between ledger-cli, hledger, or beancount, with the differentiators being on the margins and with some promise of being able to switch later. The choice really comes down to which tool has the documentation/community that makes the most sense to you at the time.

    Then, there's the import workflow: which "accounts" should you start with? How much history do you pull in? How do you set up an automatic importer? Hledger has a DSL. Beancount uses Python. Either way, an OP says, much of your time is spent manually editing text.

    And finally, then what? Can I make a budget now? Will this thing do my taxes? Am I more financially responsible? How do I explain this to my spouse? My pension is kind of like a commodity, but I don't know what the unit price is, and I don't sell units, but what's a virtual PnL and what if I only have a quarterly PDF!?

    It may sound like I'm ranting, but I have found that realizing I don't know the answers to these questions (or even that they exist) is the true benefit of PTA.

    Every year, I'm asked if I want a different pension investment mix or if I want to change my car insurance. Or, I might wonder if I'm getting a good deal on my internet plan or if a new job offer's total comp is actually better. Am I "on track" for "retirement," how long until I have enough for a new roof, am I keeping up with inflation, did I spend too much on gifts this year?

    There's immense privilege in not really needing to know the answers to these questions; getting them "wrong" won't really hurt you. But, being familiar with the routine minutiae of your economy by way of counting every cent, is rewarding, enlightening, and empowering—even if it's also finicky and brittle sometimes.

    I may have to try beancount again. OP's importers look promisingly robust compared to my hledger scripts.

    • mbork_pl 57 minutes ago
      Besides being a mathematician and a programmer, I have a degree in finance and banking, so I learned double-entry accounting pretty early. As a mathematician, I appreciate the beauty of this very clever, very general and very abstract system. As a geek, I've been using ledger-cli with Emacs for a decade now, and Gnucash earlier.

      Re: learning curve, it's not that difficult. Shameless plug: I wrote a textbook (actually, a textbooklet, if that is a word;-)) about the basics of DEA, focused on personal finance and using ledger-cli: https://leanpub.com/personal-accounting-in-ledger/

    • djhworld 1 hour ago
      I think there's definitely something in it around there's a huge learning curve.

      Double entry book keeping isn't that difficult but that's easy to say once you've been doing it a while

      I've been doing PTA since around 2018 and there's definitely lessons I've learned along the way along with plenty of mistakes.

      I think the main benefit for me is just the system gives you a complete picture of your finances. The commercial services you can pay for just give you a view into a certain slice (e.g. open banking in UK/Europe to see your current account(s)) - I think mint.com did something similar in the US but it never came over here, I don't know if it still exists. Maybe that's enough for most people, but for me I want everything, investments, liabilities, assets etc. None of these commercial offerings have that because it's so complex and niche, e.g. your open banking provider won't tell you how your pension is doing.

      It's also just nice to have the provenance of transactions, e.g. if you receive some shares from work, and you sell the shares and the money ends up in your bank account - the incoming transaction will just be the net proceeds but it won't tell you if you paid any tax prior to that - PTA gives you a more of a complete picture that tracks the whole chain of events that led up that transaction into your bank happening. Overkill for most people? Probably.

  • fluffyllemon 5 minutes ago
    Do folks any recommendations for automation around banking? We use a sort of "envelope system" across many accounts, and it would be helpful to have some timing to help automatically move and rebalance funds across the accounts.

    My bank has some very limited options to move specific amounts of money on a weekly schedule, but I'm looking for something more powerful then that.

    Should I look at like Stripe or something? Or are there more pre built tools?

  • bspammer 10 minutes ago
    I go a step further than this, which is to make the beancount files 100% generated by a program - no manual edits allowed at all. I have a version-controlled directory with the raw data (csvs, pdfs, weird text formats) from a bunch of different sources (bank accounts, payslips, pension funds, mortgage statements, and stock market price data). The process is then just an ETL pipeline to an intermediate data structure. That data structure can be serialized to beancount format, hledger format, whatever. I've even had it output prometheus metrics so I can create nice dashboards in grafana.

    I dump more raw data in every month, handle the 1-2 new edge cases in code, and voila: a complete, accurate, queryable, debuggable, visualizable, and fully reproducible history of my finances.

  • fastasucan 22 minutes ago
    I found that doing anything too detailed was too big of a chore for what I got out, and that I didnt get much from doing budgeting.

    I ended up just logging my total holding of cash and stocks spread over my different bank accounts and my investment portfolio. Doing it every few months helped me make sure that my overall holdings went up. As long as I pay off my bills and then save enough to see my holdings rise I am happy. However I can see that having a more detailed overview over your spending might help you cut down even more.

  • skobes 2 hours ago
    Shoutout to fava, the beancount GUI frontend:

    https://beancount.github.io/fava/

    I really like its big picture view of the accounts, the search / query interface, and live editing of transactions.

  • dueyfinster 37 minutes ago
    I'm a big fan of plain text accounting also. Like the author - I started 10 years ago (mine from 2015). I use hledger mainly and also wrote converters for bank I use (xlsx to csv).

    It's crazy to see just how much money I've paid Netflix since 2015 (and I'm a sub since 2011). Or Starbucks (which I rarely go to). But it's very powerful. One thing I've long wanted is better visualizations.

  • yanis_t 2 hours ago
    Plain text files are appreciated.

    I started storing all my notes (500+ by today) in markdown files locally. It's easy to search and navigate with grep and ag/rg. It's easy to edit in Vim or your favorite editor. It's easy to append all sorts of informations. I add some flags and properties in metadata, like last_reviewed, some tags, etc.

    The versioning and sync is solved by git + a private github repo.

  • idahoduncan 29 minutes ago
    Looks like it's four years for me with beancount.

        $ git log --oneline --reverse | head -n1
        5f72575 Initial commit: January 2022
    
    My importers take care of reconciling the common transactions, like train fares and groceries, which means my monthly session takes under an hour. The slow bits are exporting CSV statements from my banks, and reconciling transactions from amazon and the local pet supply store (is it useful in practice to track litter and treats separately? probably not).

    I'm also yet to migrate to beancount v3.

  • nelup20 8 minutes ago
    For anyone else wondering which PTA solution to try/choose, I found this summary: https://plaintextaccounting.org/FAQ#which-pta-app-should-i-c...

    I think I'll finally give PTA and beancount a go this year. I'm tired of changing and re-learning tools due to enshittifcation, so I heavily prefer those that use open formats / plaintext. I use Obsidian for my notes, specifically because it's just Markdown files. Since I realized that I don't even really use most of Obsidian's features, I might just switch to a regular editor + a markdown viewer.

  • bravura 1 hour ago
    What's the startup time for using beancount if I've never done it before?

    I just spent a few hours using LLMs (aider, specifically) to reconcile my books for the past year. Worked great, but was slightly fiddly.

  • skwee357 2 hours ago
    I have 14 years of personal (and 2 years of sole proprietorship) finance data in beancount. I tried all the available personal finance apps there are, from cloud/online offerings to offline apps. Eventually, I settled on beancount because it is the most versatile file format. In addition to tracking finances, I can track stocks, unvested RSU grants, vacation hours, and even personal training I have paid for but yet to use.

    It's cumbersome at times, and I do miss the (G)UI of entering transactions, but with (neo)vim I got used to it and I breeze trough my finances in 15-20 minutes once a week.

    • commandersaki 1 hour ago
      Do you manage your beancount files in version control? Or just keep free floating files around?

      I'm intrigued by this and now thinking I should start doing it. Just start with a clean slate for 2026 and see how I go.

    • altmanaltman 2 hours ago
      it's good (even novel) if you're a dev or are used to working with this kind of interface.

      But for the vast majority of people (even including devs), this will not be ideal at all and most people don't really care about it being in text files.

      What I'm trying to say is that its designed for a very specific niche userbase and I doubt most people will have the same experience as you described after trying every single personal finance app to settle on this.

    • lloydatkinson 38 minutes ago
      How US centric is the software? I've found that a lot of these accounting/finance type programs have very prescriptive ideas and expected usage of it that doesn't really seem to even remotely match the type of exported data I get from my UK bank account.
      • lalitmaganti 34 minutes ago
        The core software itself is completely agnostic to currency or country. Otoh the importer ecosystem is somewhat US focused but a) you can easily write importers yourself b) I just published importers for a bunch of UK institutions (e.g. HSBC, Barclays, AJ Bell) - see the other post hanging around the HN frontpage :)
  • draven 1 hour ago
    I started to use PTA several times already, and I always have an issue with the granularity of transactions. For example when I go to the local supermarket, do I track food and hygiene products separately ? Some supermarkets give the subtotal for different categories, some don´t. It could be useful to see where the money goes.

    I'm about to start out again and I chose not to track different categories individually, knowing that I can still add sub-accounts to distinguish between them later (even if I can´t recover the information for older transactions.)

    Now I just need to investigate how to track gains/losses on the ETFs I own but that's common enough that there should be information out there on how to do it.

  • xtiansimon 1 hour ago
    Very good for a budget. And as a text file, they rot just about the same speed as the media.

    But what about basic Cost Of Goods Eaten?

    I have fading thermal tapes in boxes with grocery store purchases. They get scanned once a year into large PDFs: grocery, home goods, repairs (large purchases are kept separately for easier finding).

    I’m considering if a personal AI subscription to manage the data interrogation is worth the cost (not excited about the $20/mo cost. NPR should get the next $5 of my monthly).

    Now here’s the funny part. The data sits in a box all year or in PDFs for years, and gets little attention. What janky home server AI could I spin up to perform as bad as me (but no worse)? Maybe move the data in those text files and PDFs into SQLite?

    • wongarsu 1 hour ago
      If you just want to ingest varied data into a consistent format, qwen2.5vl:7b works well (in my use cases better than qwen3vl). The ollama version is quantized, perfectly adequate, and runs on normal consumer hardware (even more so if you don't care about speeds that feel interactive)
  • accountofthaha 1 hour ago
    Thanks for showing this! I personally have a 4 years old Money Manager EX (MMEX) database, but I am always looking forward to something new, yet nothing for me have worked as good as MMEX. This looks good enough, albeit I need a GUI for this, and the comments might already put me into the right direction.

    I am already used to logging everything manually, so importing isn't needed for me. Also I think having some 'manual labor' in this regard can help with becoming more 'in tune with your finances', to actually learn what is going on, instead of having an app that you check once a month.

  • leobg 2 hours ago
    In case the author reads this: Your imprint is incomplete. The legal address is missing. And the blog is missing an imprint altogether.
  • ivanjermakov 2 hours ago
    Having all transactions in bank accounts makes it trivial to regularly export statements and parse them into financial insights.

    I made a tool that parses transactions (of my specific bank) into categories based on tx description and a GUI to analyze them in different time frames.

    Highly recommend.

  • zahlman 2 hours ago
    This seems to be, in effect, advertising for a book about how to use the underlying FOSS software to do this.

    I would be okay with that as a monetization model, except that the book author despite being a self-described FOSS dev doesn't seem to have anything to do with the project (https://github.com/beancount/beancount/graphs/contributors).

    Ah, not quite true. The author fixed a typo in a docstring once (https://github.com/beancount/beancount/commit/8584763b618f76...).

    • mtlynch 1 hour ago
      Aside from the fact that writing a book about Beancount is a positive contribution, the author maintains a list of Beancount resources[0] and has written several beancount plugins.[1, 2, 3, 4] I have personally benefited from his contributions to the Beancount ecosystem.

      Can you point to some of your contributions to this project?

      [0] https://github.com/siddhantgoel/awesome-beancount

      [1] https://github.com/siddhantgoel/beancount-n26

      [2] https://github.com/siddhantgoel/beancount-ing

      [3] https://github.com/siddhantgoel/beancount-dkb

      [4] https://github.com/siddhantgoel/beancount-commerzbank

    • veltas 2 hours ago
      If you look at their personal profile they've made a lot of content with activity and collaboration outside of the main beancount repo, related to beancount. They definitely meet the criteria for 'FOSS dev' in that it's FOSS, too.
      • zahlman 1 hour ago
        Thanks. I was not denying the author FOSS creds generally, just expecting actual involvement. It seems this is someone who cares about the project (and I do like the sound of the project).

        I'm just, you know, pretty sensitive to HN submissions trying to sell me something.

    • OJFord 2 hours ago
      And only... what, Italians, can write books on the Romans?
      • zaphirplane 1 hour ago
        That’s a bad analogy because the qualification is being born in a region not acquiring knowledge thru working. an equivalent would be only electrician can write a book on wiring.
        • rplnt 1 hour ago
          Do you mean wire and tool manufacturers? Electrician is mostly a user. Or to avoid flawed analogies - should books on Windows, Office, ... be only limited to a small subset of Microsoft employees? I'd assume the book is for users, what does it matter if the author contributed to the project?

          And that's still ignoring that evangelism is also a valuable contribution.

    • fragmede 2 hours ago
      Oh no, someone might make some money off work they did that was related to work a different somebody did! What a travesty! Somebody stop him!

      I know money is the root of all evil and all that, but a total aversion to it isn't a very healthy way of interfacing with it at all.

  • jayfx 2 hours ago
    > 30-45 minutes every single month

    That's 6–9 hours every year!

    5 years: 30–45 hours

    10 years: 60–90 hours

    • tkfoss 1 hour ago
      How many hours a year do you spend to make the money? How many hours is ok to spend then managing that money?
    • fodkodrasz 2 hours ago
      wow, a whole workday a year! People spend more time arguing on the internet in topics of no impact to their lives each year.
      • jayfx 2 hours ago
        I'd still consider that toil (repetitive, manual, automatable work).
        • fodkodrasz 2 hours ago
          the beauty of beancount (and other plain text accounting ledgers) is the ability to automate them. I also have to go over my accounts in my bank app's automatic categorization and revise them every month, as some transactions get mislabeled.
      • fragmede 2 hours ago
        Yeah ok but tabs really are better than spaces!
  • ob2 1 hour ago
    I can get all my historic accounting records into any of the PTA tools, but then I'm stuck without standard processes for creating invoices, doing deposits, writing off bad debts, depreciation, loan repayments, recurring payments, etc. etc.

    All those require standard entries and processes, which I've yet to find, which means that now I need to become an accountant and write these standard tools.

    None of which generates any income and only creates more work for myself.

    I absolutely hate my current accounting software, but this is not (yet) a viable option as far as I can tell.

    Happy to learn I'm wrong.

  • JulianWasTaken 2 hours ago
    beancount is definitely fun. I also jumped on this bandwagon in 2025 and it's been a great archaeology experiment of digging through old emails and trying to find as much data as I can about what the heck this random checking transaction is from 2012.

    I think a nice thing about beancount is that given how simple it is you can almost even ignore whole parts of it. In my case I chose to write my own importing tooling essentially without learning at all about the built-in one: https://github.com/Julian/alubia. I had no intention to make that approachable for lots of users not named me (in fact none of my actual importers are present) but it's been very fun to watch my ledger get more and more accurate.

  • aradbehdad 1 hour ago
    [dead]