Comment by bspammer
1 month 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.
How do you deal with one of transactions? How do you assign them to the right account?
For checking accounts, I have a list of rules that each transaction passes through. If a rule matches it generates the double-entry transaction going from the checking account to the account listed in the rule (or vice versa if the amount is positive). Earlier rules take precedence over later rules. If no rule matches it errors and prints out the transaction so I can add a new rule.
The main account I use for day to day spending is Monzo, they correctly categorise 99% of my transactions for me (and this is included in the csv export) which makes this way easier.