Now you know how to detail your expenses, per-account. For some accounts or for cash you can track expenses manually, for others you can setup an automatic importer.

For automatic importers we have considered various stages, here is how they are handled in this system:

  1. Download the data from bank. It’s up to you to download the csv files. I think this is the part that is prone to breaking and APIs are varied between all financial institutions. I think maintaining code to do this fully automatically is just not worth it.
  2. Parse the data into Beancount format. For this you use Python code and https://github.com/jbms/beancount-import system that provides UI for review.
  3. Add/edit categories, tags, whatever. You can adjust them manually after import whenever you need it, beancount-import guarantees the adjusted data will not be re-imported.
  4. Possibly deduplicate transactions. Again, beancount-import handles this for a single source/configuration. But you will need to make sure there is no duplication between different bank/institutions.

How frequently you want to import data is totally up to you. Since transactions are usually available to download for years, you can do it on demand, and don’t have to do it at any regularity unlike tracking totals. The process here is more involved and you may decide to do it once a month or every couple of months.

If you want to get really precise and minimize amounts in Unattributed and Uncategorized categories, I would recommend to take notes about cash purchases in the note taking app and then dump these into transactions whenever you have convenient time. And you may add a note in the bank app about transactions happened daily. If you are in the trip and have a bunch of those, you may not be able to remember what it was all about a couple weeks later just looking at the (not always descriptive) merchant name and the amount.