Putting it All Together into a Workflow
This is how my workflow looks:
bean-download needs-update # optional
bean-download download # works in the background; multi-threaded
# manual: download remaining transaction files via browser # 1-2mins
./process_all_files.zsh # (includes manual inspection, and bean-check) # 2-3mins
git commit -m "Data update" # and we're done!
Learn more about needs-update here and
bean-download
here.
The process_all_files.zsh
step above can occasionally take 10 minutes or longer (eg:
lot reductions, many unseen credit card transactions after a trip, etc.), but this tends
to happen infrequently, about 2-3 times a year for me.
Import Processor stage in detail:
process_all_files.zsh
automates this stage. See a sample here
which you can modify to your needs.
- Importing all files that can be imported from the Downloads folder
-
Deduping already imported transactions via
bean-extract
- Auto categorization via smart_importer
Imported transactions are now in multiple files, one per account, in a staging directory.
Manual Inspection
- is not needed for investment accounts, given these are deterministic
- is needed for investment accounts only when making lot reductions, since lot matching is typically not available via import files (OFX or CSV)
- is needed for credit cards, expense categorization: smart_importer is terrific, but gets it wrong in 5-10% of the cases
Append to Ledger Source
Once inspected, I use a simple script to append the staged transactions to the main repo of beancount ledger files. Note that I use per-account beancount files.
Revision Control
I maintain my source ledger files in git
for rollbacks and answering “why did I do
that?” In practice, I’ve rarely had to use it for those reasons. The most helpful reason
to use git
is to know what your import process has appended in the current session,
and to provide insurance against errors.
Alternatives
In my understanding, Fava provides essentially the same workflow as above, with the
caveat that it does not support multi-account imports (a single .ofx
containing
multiple accounts, for example). See a user’s
post here. Though
I have not personally used it, Fava is thoughtfully designed and maintained, and is a
great alternative to check out.