8 ms·
My Beancount books are 95% automatic after 3 years (2024)
- achierius 2y agoAnyone tried this tool out for their personal accounting? My books are currently in a big custom Google sheet system, and building metrics on top of that has been a pain.
- miroljub 2y agoIt follows the same principles as ledger-cli and hledger. You won't make a mistake using any of them. I used and still use both, since they share the file format. Beancount is more opinionated, with slightly different file format, so I didn't bother adding it.
- Sphax 2y agoYes. I have maintained my ledger with beancount for 5/6 years now. I don’t automate downloading from my bank, it’s not worth the hassle especially now that every login requires 2FA with my phone. But I did write an importer for the csv files my bank provides and with smart_importer I don’t even have to categorize the statements anymore (although there are mistakes sometimes). I don’t gather metrics though , I use fava to have a visual view of my books. I usually spend half an hour per month maintaining the ledger .
- clucas 2y agoYes, I have one big beancount file tracking everything back to 2014. I use fava for visualization and git for history/backup. I've occasionally gone back and split or moved accounts, based on what metrics I want to track at that moment, it's pretty easy. However, contrary to the article's automated method, my workflow is to manually input transactions every day (or every couple days, depending on what's going on) and balance my accounts. It's a bit of a ritual, but I like having a really good handle on day-to-day spending. Plus, I find ~10 minutes once a day way easier than (e.g.) ~3 hours once a month, even if it's the same amount of time overall.
- anon291 2y agoI have used beancount and it is significantly better than an Excel or Google Sheet. For me, the main benefit is tax lot matching and an auditable trail of sales should the IRS come knocking. It's impossible to do this properly in a spreadsheet (I mean... it is possible, but no one will complain if it's done wrong until it's too late). With beancount, matching is much more straightforward. I have a python script that does it automatically for each sale using normal FIFO, tax loss minimization, etc. Due to beancount's internal checks, I am certain that these are correct once they're entered into the ledger. There is no chance of failure, and if the IRS ever asks me to justify a capital gain / loss figure, it's very easy to point out that I keep track of all my shares and have for the past several years and I maintain a solid record of the entire history of each lot.
- FredPret 2y agoAnother very beneficial double-check is asserting account balances at certain dates. You give beancount the balances at the end of each month straight from your bank / broker statements, and it throws an error if your transactions don't match up.
- anon291 2y agoYeah definitely enjoy that as well. It's just so much better than a hand-written spreadsheet. Also, since you're re-using open-source software, I think it's evidence of good faith (whereas if your own spreadsheet's numbers are off, then you'll have to deal with concerns of bad faith acting).
- rockooooo 2y agoI don't use beancount but if you're already in sheets, Tiller might be easier to switch to to get lots of built-in dashboards/metrics
- CaptainJack 2y agoI've used beancount extensively, spent many hours a few years ago. Built importers parsing bank PDFs (in UK, plaid doesn't work. Plus I'd rather also keep all the original statement PDFs). Probably built 10+ importers, plus some plugins to do automated transaction annotations. I have not made any update for many years now, because: - Downloading statements is still a pain, have to manually go through all websites. Banks are bad at making the statements available, and worse making it possible to automate it. - The root of the issue is actually that beancount is too slow. Any change/update takes ages. Python is both a blessing (makes it easy to add plugins/importers etc), and a curse (way slower than some other languages. I believe the creator of beancount has started working on v3 with a mix of C++/python, relying on protobufs, a C++ core for parsing, etc. AFAIK, that is not production-ready yet.
- diftraku 2y agoI'd be really curious on how hard programmatic access to your own, personal banking data might be in the PSD2-era. I can link my secondary bank account to my main bank's app so I can see the balance in one place, but the catch is that I need to refresh this authorization through the app every 90 days. Ideally, you'd just use your banking credentials to authorise the API access and pull data through that. What this requires in practice, I have no idea but it probably involves a bit of bureucracy.
- jazzyjackson 2y agoRan into this annoyance recently setting up new accounting software, that the access my bank provides is last 6 months only, so I still had to go and export a csv, rejigger the column names and date format, to reimport the first 8 months of 2024. My thought for working around tracking new transactions without a third party is to just set up email alerts so I get a notification on every charge, deposit etc and set up some cron job to read new emails and update my books.
- Nextgrid 2y agoSome modern banks (Monzo, Starling, etc) give the account holder (read-only) access to their API. If you can't, you can try use one of the open banking providers such as TrueLayer, Plaid, Nordigen (seems to be acquired by GoCardless: https://gocardless.com/bank-account-data/ https://gocardless.com/bank-account-data/), etc. Most have a free/dev tier that nevertheless allows connections to real accounts and might be enough for personal use. Finally, screen-scraping is potentially an option. One of the few benefits of shifting everything to SPAs is that you generally have clean JSON APIs under the hood that are easier to interface with than "conventional" screen-scraping involving parsing HTML.
- jazzyjackson 2y agoAs for automatically pulling transactions, it's still shocking to me that anyone handed over their banking username and password to a third party, quicken et al at least use a system now where the bank grants read only permission as an app integration, but still I'm not a fan of every bank transaction becoming someone else's anonymized data harvest. I'm evaluating whether self hosting accounting software is at all feasible to meet CMMC requirements and so far have my sights set on ERPNext. I configured my bank to send me an email alert for every transaction and intend to parse that and appene it to my ledger, but the API to do so is fairly annoying, so hearing that beancount is meant to be automatable is intriguing indeed BTW the other thing that shocks me about quicken classic is lack of version control - the database can become corrupt and your only recourse is restoring from backup or sending the file to support and having them manually fix it!
- evrimoztamur 2y agoThe space was absolutely insane prior to PSD2 in Europe. Luckily most banks now have API endpoints, but there's a new class of middlemen wrangling the APIS: the aggregators who pipe all your data from the banks to apps. It's better than handing out the keys to the old class of scraping aggregators, I suppose, but the outcome is still not that much better in my opinion.
- FredPret 2y agoI automated the flow of transaction -> text message -> MacOS -> Beancount once, but it never added up. - some transactions go through without a text - some transactions generate two identical texts - for Forex transactions, the amount in the text and the amount on your statement will not match - some texts are ambiguous in that they could have been generated by two different kinds of transaction; especially true of deposits & credit card payments In the end I gave up, accepted that accounting will never be smooth & simple, and now just generate a CSV every month by hand.
- Wronnay 2y agoDo you plan to open source or sell your Email to ledger / ERPNext solution? I actually plan the exact same thing for my use cases...
- skwee357 2y agoThat's interesting. I, however, still spend between 20 and 30 minutes once a week to keep by beancount updated by manually entering the transactions, a habit I perform for the past 14 or so years. At the same time, I did automate 90% of my business beancount import by writing a custom stripe importer that imports transactions from stripe. As for the expenses, I still enter them manually in the aforementioned 20-30 minute session.
- BeetleB 2y ago> I, however, still spend between 20 and 30 minutes once a week to keep by beancount updated by manually entering the transactions That sounds a lot - I spend less. Consider entering the transactions into a software like KMyMoney and write a script to export to beancount format. Entering/importing is a lot easier in a SW like KMyMoney (e.g. it does decent matching of the new transaction to prior transactions of similar amounts).
- jldugger 2y agoHonestly, there's a sort of Jevons paradox at work. Importing credit card transactions isn't that hard, but now that it's solved, I should really be monitoring my investment portfolio more closely, or tracking intangible assets like unused vacation hours, or recording all those taxes and expenses listed on my paycheck.
- zefhous 2y agoLove this! I have been using hledger for a while now and have a pretty automated process for importing exported CSVs. I would love a little more automation in terms of pulling down the data, but on the bright side the manual process provides a good touch point to keep up on accounting regularly in small doses. This is great for just keeping an eye on things on a monthly basis. I am starting a new business now and intend to see how far I can take plain text accounting in that context. I plan to use mercury for banking and want to automate as much as possible. I would also like to associate invoices that are stored in a self-hosted paperless-ngx instance.
- abhiyerra 2y agoI wrote a script to download and categorize my Mercury Transactions and it is quite straightforward. Highly recommend it. I am looking to deprecate my Quickbooks usage after this year since it is such a pain to split payments into multiple chunks automatically and I don't really know what I am getting for $60/month.
- joshstrange 2y agoI use YNAB and love it but I'm always interested in alternatives. That said I opened the main website [0] and the animation [1] shows a bunch of crypto logos. To my eye this seems to be a product aiming itself at people using crypto. I don't think that's the case given the blog post I just read but it's not a good look. Anyone catering to the crypto market is at least a little suspect in my book. Maybe it's just a feature of BeanHub and you don't have to touch it at all but to be featured so prominently is icky/ [0] https://beanhub.io/ https://beanhub.io/ [1] https://cs.joshstrange.com/5njjtGND https://cs.joshstrange.com/5njjtGND
- ndegruchy 2y agoYeah, the site and service seem to be trying to attract a range of people. However, `beancount` and the other `ledger-cli` like tools are all just plain-text files with a semi-rigid markup for recording transactions. https://plaintextaccounting.org/ https://plaintextaccounting.org/ is the resource for most of them, and has good resources for making them work for you. It's not for everyone, though, many people just prefer spreadsheets or apps, and that's fine.
- shortrounddev2 2y agoYNAB seemed WAY too involved for me. I spent so much time in the fucking app and barely understood it. I had to "give each dollar a job" which is a total inversion of the traditional "set a dollar amount you want to spend on each category and then exercise some self control". I pay for everything on a credit card and then pay back that CC at the end of the month, and doing so complicated the UI when it automatically pulled in my spending from my bank account. I've found GNU Cash to be a bit more intuitive with a little bit of training. I feel that there are some people who legitimately enjoy looking at money on spreadsheets and implementing budgets/categorizing purchases and I think that YNAB is great for those people, but I personally hate even THINKING about money, let alone interfacing with budgeting software every couple days
- jimbokun 2y ago> "set a dollar amount you want to spend on each category and then exercise some self control" How is that different from "give each dollar a job"? The only difference I see is that it forces you to make the categories add up to the amount of your paycheck.
- egglemonsoup 2y agoGreat article! A minor correction, Steph Ango is Obsidian's CEO, not founder
- fangpenlin 2y agoHey! Thanks for pointing out. I have already corrected it in my article :)
- idopmstuff 2y agoI own a couple of small businesses, and I've tried a few things with my books - was on Bench for a year (thankfully not the year they shut down, and they were so incompetent I dropped them before that), tried to do them myself for a year, then upon realizing the P&L generated did not match the numbers I expected, hired bookkeepers on Upwork to fix them for me. I really feel like I ought to be able to do them myself - it's just following some rules, and my accounts aren't that complex. Still, it was just enough of a pain that it was easier to hire someone overseas for cheap (especially since I know what the business' numbers should roughly come out to, so I can validate their work). But as I've been using the latest AI models, I really feel like this is something that's going to be fully automated by AI in the next 1-2 years (at least for my very simple use case). It's simple enough that an AI agent should pretty trivially be able to fetch the docs from the various places that I sell upload them, categorize transactions (this is already basically automated by rules for me anyway) and then do whatever it is that bookkeepers do to close the books. I can't help but think that bookkeeper is not going to be a profession in five years, and I'm just not sure where those people go. It's not like automating bookkeeping will expand the economic pie enough to create new jobs - I don't believe it's a bottleneck to anything at this point.
- fangpenlin 2y agoHi, the author here. Many customers have asked me about AI offerings, and I am considering them. While this is doable with modern LLM technologies, I need to consider many issues. The first is that nobody, myself included, likes their data being part of someone else's machine-learning training pipeline. That's why I promised my users that I wouldn't use their data for machine learning training without asking for explicit consent (and, of course, anonymization will be needed). While I know everything involved in AI sounds cool, do we really need LLM for a task like this? Maybe a rule-based import engine could kill 95% of the repeating transactions? And that's why I built beanhub-import[1] in the first place. Then, here comes another question: Should I make LLM generate the rule for you or generate the final transactions directly? Yet another question is, everybody/every company's book is different from one to another. Even if you can train a big model to deal with the most common approaches, the outcome may not be what you really need. So, I am thinking about possibly using your own Git history as a source of training data to teach machine learning models to generate transactions like you would do. That would be yet another interesting blog post, I guess if I actually built a prototype or really made it a feature for BeanHub. But for now, it's still an idea. [1]: https://beanhub-import-docs.beanhub.io/ https://beanhub-import-docs.beanhub.io/
- asadjb 2y agoLove this! I haven't used Beanhup, but was a user of text based accounting systems (beancount, hledger) for many years to track personal expenses. I stopped doing it when I realized I wasn't getting much out of it, but the knowledge of double-entry accounting still helps me to this day when I keep track of my business expenses in Xero. One thing which I disagree with in this article is the focus on file based data storage: > That makes it 10 times harder because you need to parse the text file, update it accordingly, and write it back. But I am glad I did. That guarantees all my accounting books are in the same open format. This quote captures my issues with it. It just makes things so much more difficult; and it makes the whole process slower as the file grows. I remember that when I used hledger for tracking my expenses over 3 years, I had to "close books" once a year and consolidate all the transactions for the past year into 1 entry in a new ledger file to keep entry/query operations fast. I get the sentiment; you want open data formats that remain even after your app is shutdown. But you can get the same by using open formats; maybe a sqlite DB is good enough for that? The only thing that would be more complicated with a DB is versioning & reviewing commits like this app does; which does seem like a very exciting feature.
- packetlost 2y agoI'm not at all familiar with text-based accounting tools, but I feel like the performance issues could be addressed by using multiple files instead of one big one.
- jimbokun 2y agoThen you are slowly building a database engine. When do you split the files? How do you track which data resides in which files? Does one file represent one kind of data (table)? Does it reflect data within a given time range? Do you sometimes need to retrieve data that crosses file boundaries? You quickly lose the simplicity inherent in saving to just a single file. Which is where Sqlite shines. It's a single file. But with a full, user defined schema. And can update it and query it incrementally, without having to read and write the entire thing frequently. It handles all of that complexity for you.
- bks 2y agoIs there any solution for statement downloading, like many small businesses I have credit card statements, bank accounts that I need to provide to my accountant. While my "books" are synced via Quickbooks, they (accountants) really seem to love having the PDF in hand. I just need the PDFs and they do not send them via email...
- hamiltont 2y agoHi - I'm working on something like this because I needed it too ;-) It's not yet ready for release, but I should be ready for beta-test within 2 months. If you're interested I would be happy to add you to my list of "people to notify when I am ready to beta test"
- bzmrgonz 2y agowould using sqlite have been inline with the file-over-app philosophy?? I'm thinking yes.
- fangpenlin 2y agoIf there's anything like immortal software, SQLite is definitely on the list
- conradev 2y agoLanguage models completely upended my Beancount setup. To me, there is no point fiddling with precise parsers when a language model can read any PDF. I have the language model extract balance assertions from the PDF (beginning/end balance) so that it grounds its work in reality. I dream of a future where anyone can download a ZIP of all the PDFs they've ever received from their bank, drop it onto a local app, and wait while it creates an entire accounting setup for you. Edit: also not mentioned here is Fava, which is a really nice web UI for Beancount (https://beancount.github.io/fava/ https://beancount.github.io/fava/). I share a link with my accountants, and they find it convenient (for downloading files, at least).
- xyst 2y agoLovely, now LLM can hallucinate how much I spent or earned in a month, or year.
- fangpenlin 2y agoFor a usecase like this, a local running model would be ideal. I won't like to share my personal accounting books with LLM either.
- conradev 2y agoVery much agreed. I couldn’t even bring myself to use GitHub (much less BeanHub) for my Beancount. I use git locally because the ledger is extremely sensitive
- conradev 2y agoIt makes it a lot harder if you check the balances!
- conductr 2y agoPlease let's not start a vibe accounting trend
- conradev 2y ago
- daft_pink 2y agoSo can this be used for business books and records? A lot of the documentation I’ve shifted through since Intuit sh*ttified their product made me think that this the ledger open source accounting is more of a quicken like personal finance product.
- zie 2y agodouble entry book keeping can be used to track any resource of any size, though it's particularly good at tracking money of any size. The upside of a "real database" like postgres is when you need multiple people in the books making changes at the same time. Until your accounting department grows into multiple people, Beancount, hledger or any plain text accounting system would be fine.
- simonmic 2y agoIf those multiple people are updating the files via VCS, or via UIs that enforce append-only updates, it's still reasonably fine.
- zie 2y agoTotally agreed, you can push the envelope pretty far if you are careful and knowledgeable. It just gets a lot easier and less error prone if you use a DB like PostgreSQL though.
- zdw 2y agoA long time ago I wrote a python extension to the C ledger implementation that did a basic RPN calculator: https://github.com/zdw/ledgercalc https://github.com/zdw/ledgercalc And fed it with pile of scripts that extracted bank PDFs -> Text -> ledger entries, and shoved it all in git. This looks like it some superset of that, but in general I found the files + text to ledger process to scratch a great itch.
- gen220 2y agoFWIW I went down the path of automating as much as I could about this process. These days, though, my process is more manual. Around every 24 or 48 hours, or immediately after making a transaction, I'll record the transaction in my ledger, which I store in Google Sheets (!) instead of a .ldg file. No more CSVs, no more pure functions of bank output. Sometimes I miss the .ldg format. But I don't really miss maintaining the automated system. Google Sheets isn't as expressive as Ledger, but it is sufficient for my needs. Charting is a bit easier. YMMV! To me, the most essential pivots to get me back into personal accounting were to record expenses both manually and ~daily. If I were to return to ledger again — which I might! — I'd focus on those aspects more than the automation.
- Guthur 2y agoI don't understand the anxiety with open source and big corporations, while deciding to use permissive licenses like MIT. Surely one could use a good copy left license and have far less anxiety.
- ericyd 2y agoI love the idea of command line accounting and having books based on git, but my primary use case is accounting for a shared account with my non technical life partner. Has anyone tried navigating the hurdle of introducing a non technical person to a tool like Beancount?
- john2095 2y agoShow them fava https://beancount.github.io/fava/ https://beancount.github.io/fava/. Offer the url; they can comb through it all at their own leisure. "Here let me show you." Mine likes the pretty graphs. As I enthusiastically explain them, the eyes start flickering elsewhere, attention rapidly dwindles, and trust is effectively reassured for another month, or six.