Command line accounting: From mint.com to Ledger.19 Nov 2016
I’ve recently switched all my families accounting from manually looking at bank websites + mint.com to Ledger. This post describes the first part of that fairly long but ultimately successful journey: Motivation and Challenges.
Motivation A: If your bank dropped $1,000 from your account, would you notice?
I think my dad would have. He had all statements printed. In Germany, you do this at a small machine in the bank building (or you have the printouts mailed to you) and by putting them into a folder, you see old and new balances as well as the transactions between the two. This presumably makes spotting that something is off fairly easy.
For me, this is probably a no. My checking account balance is usually fairly high since our rent is payed by check and is a few thousand dollars that have to be on the account when the check is cashed. Some days, I would probably notice a thousand dollars missing. Other days I wouldn’t.
Worse yet, I just read an intriguing email thread at work where someone’s bank took credit card payments for someone else’s credit card off of their checking account. The colleague who, quite embarrassedly actually, reported this, did not notice the $100-ish payments which did not belong to them going out of their account for 5 years. I think this is not completely unlikely to happen for others as well.
Now does this mean that I am losing money from my bank misreporting my balance or payments going out that shouldn’t? Probably no, but at the same time I feel I might just not notice which is bad.
Motivation B: How many accounts do you have and what is the sum of all balances?
This sounds like a fantastic problem to have but realistically I simply don’t know. We have 5ish credit cards in the US, we have 3 credit cards in Germany, we have 2 checking accounts in the US, 2 checking accounts in Germany, we have 401ks, we have all kinds of other weird financial products and very little cash. And really the only reason that I know we have all these random accounts is because I just put all of this into ledger. This is part of why this is important and cool work. You actually have one place that is aware of all accounts and it knows how to deal with different commodities and convert between them so you can get a digestible picture.
Mint partially solves this. If you only have accounts in the US and all of them work with Mint, then this could be a decent tool. I never much cared for many parts of the interface but if you are comfortable with it and Motivation A doesn’t matter to you then this is probably not the worst solution.
Getting from Mint to Ledger.
I made one simplifying assumption first: I won’t care about the past. While this is not at all true, it just didn’t seem worth it to import a year or more of past transactions and categorize them from scratch. Granted, it would give insight into past behavior but the last two or so months are probably sufficient for that.
Then I needed to solve the most fundamental issue: How do I stop myself from starting entering things in Ledger and then stopping 2 weeks later when it becomes a chore. My solution to this is automation. I do not enjoy copy and pasting stuff from my bank’s website. Neither do I want to log into 5 websites every three days just so that my finances are up to date. What simplifies this is that we really only use one credit card frequently, one checking account and one bank in Germany. It seemed reasonable to automate all transaction downloading for three financial institutions and maintaining that code. With a little luck one might even be able to find a second person who would help maintain that if open sourced.
What I’ve ended up with now is a solution consisting of:
- Ledger file in Dropbox.
- Automated downloading of transactions from
- our Credit Union, and
- our German bank.
- Automated report generation from the ledger file.
The next post will talk about the implementation of the automated downloader for Chase as this had about the most caveats. The code will go on Github when that post is ready.Tweet