I am trying to organize my personal finances to get a better overview of where my money is spent and also in light of some future lack of income. I have read about double entry bookkeeping in the past and had previously tried out Gnucash and Homebank. When I revisited both options this time, I found that Gnucash had the very comfortable option to get transactions automatically from my bank account (using HBCI). When I did that, I could gather about 18 months of financial transactions. Then I found out, that there is no way to automatically assign transactions to expense accounts. I was not going to go through roughly 500 transactions by hand. Homebank on the other hand does offer to classify transactions based on regular expression, by matching strings found in the bank statements. But alas, no automatic downloading of transactions. Was there an alternative that could do both?
Another program I had read about prior is ledger. It is a text based accounting program with many different derivatives (see here). I generally prefer the command line interface (CLI) to graphical interfaces. Other advantages that people mentioned is the ability to have the transaction file under version control (e.g. Git) and a very flexible reporting language. At the same time, I found the aqbanking tool that would theoretically allow me to connect to my bank via HCBI to automatically download bank statements. With this, I would be able to fully script my finances. An intriguing option! Then the problems started.
Originally I wanted to use beancount, because of the fava web interface, but could not get it installed via pip. My system did not have a package for hledger in its package manager. So I went with the original ledger-cli program. On the plus side I could also install that one on my android phone in termux.
After I had setup the necessary software I went ahead and exported the
transactions from Gnucash to csv and then into ledger format. For that I used
the icsv2ledger python script.
Unfortunately it took me a while to understand that the regular expressions
have to match the beginning of the line instead of anywhere inside the string.
I found this counter intuitive and have changed the script by replacing
re.search. Still it took several hours to import all my
After this was done and everything was balancing out in ledger, I wanted to finally analyse my financial status. Here I ran into some more troubles. While people claim the reporting tools of ledger are very flexible, I cannot get them to do what I want. I want to get the sum of all my expenses for each month as well as the percentual change compared to the previous month (or the same month from the previous year). I have yet to figure out how this works, any help appreciated.
I also hit a wall trying to get aqbanking working with my bank. I know there has to be a way, since Gnucash is using the same library and it works flawlessly, but the documentation is very sparse and I get strange errors.