Maybe I missed something, but it seemed like beancount wants everything to live in One Giant Journal file. I really wanted a pipeline where each bank statement PDF would output one file with a corresponding list of transactions (this stage can run completely in parallel and I use "ninja" to make it very fast).
Then another process can run over these files looking for matches (+$X, -$X), and spit out "transaction groups", where each transaction group is a set of transaction ids that sum to zero. And then a different interactive tool lets you categorize transactions and spits out transaction groups with embedded "expense" transactions. It's all non-destructive; each tool only adds data, and nothing ever modifies existing files. Then a final step can combine all these files and spit out a beancount file for Fava.
How does this compare with the way beancount's importer does it? How does its importer handle transfers and categorization? Is it destructive or non-destructive?
For example, I can't get CSV about my pay stub and all the places money flows (taxes, insurance, etc). So I use PDF as the best way to get all the data.
Parsing PDF is a huge PITA, since PDF is really designed only for layout and not to encode semantic document structure. But if you want the greatest amount of visibility, nothing is as authoritative as the actual statements.
Regarding taxes, I do a tax year calculation using my W2's and returns to compute an effective tax rate and figure out ways I can improve my situation re taxes -- but my budgeting basically only starts once the net money hits a bank account which has worked pretty well.
- It's an additional step and unnecessary when you're already downloading PDF statements, which you probably should be doing regardless
- Data is often unavailable for export after a few months or a year or two (depending on the bank), far earlier than PDFs
- If you have PDF scans (especially from earlier days) then you need to parse the OCR anyway
- If you're using official APIs (instead of writing a scraper or or downloading by hand) then you may need to pay extra
I did do a historical net worth calculation and the only data I had going back far enough was PDFs, so through a mix of bash scripts and pdftotext, I was able to get a number for each month back about 10 years. But I ended up just putting that monthly balance for each account in a google sheet so I could sum and plot it there. Now I just stick the month-end balance for each account in a sheet to keep this updated.
Actually, beancount supports include directive. See includes section [1] of the language syntax document
[1]: https://docs.google.com/document/d/1wAMVrKIA2qtRGmoVDSUBJGmY...
My understanding is that the whole transaction has to live in one file with Beancount. This doesn't seem amenable to having each bank statement generate a single Beancount output file.
But I could be wrong. I don't know how Beancount's importer works.
I have the categorizer send such transactions to a temporary "limbo account". So I have two transactions:
# This TX is imported from checking acct statement:
2020-05-15 * "ACH Payment BankA credit card"
Assets:BankA:Checking -500
Equity:Limbo:CreditCardPayments
# This TX is imported from credit card statement:
2020-05-16 * "Payment applied THANK YOU"
Liabilities:BankB:CreditCard 500
Equity:Limbo:CreditCardPayments
In both cases the second posting is added by the automatic categorizer based on the description.After doing a bout of imports, I look at the Limbo account, which should always sum to zero. Sometimes the two TXs don't appear on the same day, so occasionally there's a temporary balance there but that's fine.
I use the same to match up my direct deposits (one end from paystubs import, other from checking account), wire transfers between banks/brokerage, etc. I tend to put them in different subaccounts of "Equity:Limbo" so that I can more easily spot any discrepancies.
Edit: Should've first read the previous reply that says the same thing!
https://github.com/redstreet/beancount_reds_plugins/tree/mas...
Often (in the US) the dates are different- debit from the bank on day X, post to credit card on day X + 1 or X + 2. For my stuff I want the dates in beancount to reflect the dates on the respective statements, so that the balances, which are date-specific, match.
So I capture these as two transactions. I do it as- debit the bank, credit the "ether", then debit the "ether" credit the credit card.
Beancount just wants the postings within a literal transaction to sum to zero. If this conceptual transaction is split into two literal transactions, with some fictional bridge account in between, they can live in different beancount files.
https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
Beancount user here, even if you don't bother with any finance tracking, organizing financial documents following the folder structure is useful - see "Filing Dcouments" in https://docs.google.com/document/d/1e4Vz3wZB_8-ZcAwIFde8X5Cj...
Shameless promos:
- People are starting to make Fava extensions for things like envelope budgeting, portfolio tracking, etc. Usually these are announced on the mailing list: https://groups.google.com/forum/#!forum/beancount
- The sublime plugin is great but I have a really useful improvement to search by org-mode headlines that never seemed to get merged - see https://github.com/norseghost/sublime-beancount/pull/14
I've been hearing about making extensions for envelope budgeting for years, with little progress. I haven't checked in the last 2 years though - any progress on this?
To be frank, it was fairly annoying that the author kept declaring it as "not too hard" and yet no one came up with one.
discussion: https://groups.google.com/forum/#!topic/beancount/RXvOvHHdse...
But the "how to get going" part is where I find the real difficulty lies.
There is a conceptual friction in double-entry accounting, which beancount enforces. If you do not have prior exposure to it, even if you are financially and mathematically inclined- grokking double entry can be a life-changing practice. It is the Iyengar Yoga to the 7 minute workout that is just tracking transactions as per GnuCash or Quicken or whatever.
One has to have the appetite to consume a worldview. As someone living in that world, FWIW, I highly recommend it. I would not undersell the conceptual work required. It is not for everyone.
But if the approach speaks to you, reach out on the mailing list and people will help with the mechanics.
Cheers.
I was able to write a plugin to get data from the Milan stock exchange in a few hours, which was very nice. The vim plugin is also pretty ok.
I've never used the import features, the manual inputting of transactions into a text file doesn't take too long.
More importantly, the importers (for all my banks and financial services) let me import and reconcile all transactions, but also archive all documents (including PDF, text files, etc) in one, well organized directory: each file is saved into a folder that corresponds to my account structure such as Asset:Current:Cash, Liability:Mortgage, Income:Salary, Expenses:Health:Dentist. It's great to rely on fava (example: https://fava.pythonanywhere.com/example-beancount-file/incom...) to check your accounting (with all files listed in the journal by date, with tags and links and other neat features) and still be able to browse documents in your file browser.