For the last few years I've been using Yolt, which is an awesome mobile-only account aggregation tool from ING, which works by connecting to your various accounts via Open Banking APIs and pulling all your spending / balances into a single coherent view. This has been working great, until recently as I've moved to Sweden which has caused several problems:
- The integrations with Swedish banks is non-existent, they haven't announced any plan to add Nordea, SEB, or Swedbank.
- I'm actually doing a lot of my spending via TransferWise Borderless accounts, due to the fact that I've procrastinated setting up a Swedish bank account.
So my budget tracking has gone out of the window and I've resorted to manually entering transactions from TransferWise into a Google Sheet at the end of every month, categorising spending as best as I can. After doing this a few times I've decided it's time to automate it. My broad goal is to have a single dashboard, ideally web-based, where I can see all balances from my various current and savings accounts in both the UK and Sweden, as well as the value of any other assets I own. I looked into YNAB which seems like a great fit, except that I'd still need to write some of the integrations myself on top of paying the subscription fee, which at $80 a year seems like a cop-out. I'm doing this to save money, not commit to another recurring outgoing.
Enter Firefly III - an open-source budgeting tool that you self-host. Of course, paying for a $5/month DigitalOcean VM is nearly as bad as the YNAB subscription, and I'm only going to be checking this a few times a week, so having the box available all the time seems pretty wasteful. Hosting it on Heroku, on a free-tier dynamo however, means that I'm only going to be charged for time when it's in-use, and only after the first 550 hours/month. Caveats with this model:
- It'll take a few seconds for the instance to start when I make a request, which could cause issues with the automation. If the calls timeout because Heroku took too long, I'll have to make the request again.
- I'm not sure about persistence. Heroku gives a free-tier Postgres instance as well, and according to the Firefly documentation that's good for about 10,000 transactions. It might be necessary at some point to pay for a bigger DB, potentially AWS RDS which has a substantially more generous free-tier (at least for the first year).
I have been a loyal customer of Monzo for some time, I love their UI and customer-centric feature development, Pots is a great concept and I love the flexibility of it all. When I was actively spending with them the push notifications were a breath of fresh air coming from old-school banks. Also they have a really extensive API, which I'll be querying from AWS Lambda (free invocations) and pushing the resulting TXs and balances to Heroku.
This is a new addition to my portfolio which I'm really happy with, as they offer an ethical S&S ISA with a decent return. Sadly, no API and very little in the way of integrations beyond Yolt with whom they have an exclusive partnership. They do however have a web interface, so I'll be writing a Selenium bot to log in and scrape the balances of my ISA.
Although this has been a lifesaver in terms of flexibility during my migration to Sweden, I don't plan on using them forever - the fees are kind of high and their is nothing in terms of personal finance management, they really are just holding money and swapping it in and out of their reserves passing the costs onto the consumer. They have an API which I'll be querying a few times a week and pushing into Firefly. They are missing any kind of transaction categorisation which is a shame, but I'll come back to this later.
It's not really necessary to integrate directly with brokers as I know how much of each stock I own, and only rarely make significant changes, so I'm happy for this to be a manual process of logging into the AWS console and changing some symbol-quantity pairs I have set as ENV variables. Once a week I can fetch those amounts in their currencies from the Yahoo Finance API, convert into local currency, and push to Firefly.
All of the above worked really nicely, and it was a super fun 2-day project to get it all set up and working. I've kind of achieved my goal of unifying my budgets which is honestly really useful. Of course, no project would be complete without a Slack integration - so this is what gets pinged to me each evening:
Moving forwards, I'd love to figure out some way to determine when it was worthwhile making transfers between Monzo and TransferWise in different currencies, but this is a whole project in itself. I find it amazing that it takes this much work to get to a point where I have a single-pane-of-glass view of my finances, and wonder how normal people are expected to have any kind of oversight of it all considering the lack of interoperable APIs or systems. This is the premise of OpenBanking, but there's a long way to go with that.