October 23, 2018

My thoughts on Monzo

Open Banking, "Challenger banks" and plugging some of my code

My thoughts on Monzo

One thing that's really bugged me about banks in the UK is how creakingly behind the times they are. Behind a shiny app they're all running on decades old code held together by duct tape and prayers (Leading to situations such as TSB when the prayers come unstuck).

This year we've seen the roll out of Open Banking and a wondrous golden age of control over our own data begi–... What's that? You haven't seen anything change? Yeah me neither.

The main issue is that many if not all of these APIs are locked down to only being accessible to those regulated by the FCA, and something tells me they won't let some random student have a mess about with it.

The most I've seen come out of Open Banking is that apps like Yolt have stopped asking for your actual online banking login details (sweet Jesus, is that a bad idea) and instead using these APIs. Whoop-de-doo, I'm a bit safer when I use an app which just collates account balances (and no doubt collates my spending history to sell on). I can't get at my data in any meaningful way so we can do any of the fun stuff.

On the other hand, there have been some so-called "challenger banks" such as Starling Bank and Monzo popping up in the last few years, which are much more aligned with my expectations for Open Banking despite predating it. In particular, they've both published APIs for people to pull information about their own accounts from and to perform some actions such as transfer money to and from savings accounts.

This got me thinking about how I can use this as a motivator for my behaviour and possibly integrate this into Home Assistant:

  • Remind me to go for a run if I've spent money on fast food today.
  • Take money out of my travel pot if I forgot to practice on Duolingo today.
  • Transfer money to a "fun money" pot if Fitbit notices that I've been on a run.

This is not to mention the ease of data analysis on my spending (by me this time). The downside to these bank accounts is that the interest rates tend to be pretty dire, but you can't have everything.

Many of the implementations of Python APIs were woefully out of date or incomplete. None had a OAuth flow set up and instead took short lived access tokens, requiring me to have to reauthorise access every day as it expired.

I'd been meaning to learn a bit more in depth about the OAuth flow for a while and this looked like a nice project to learn and also contribute to a large open source project like Home Assistant. I've been contributing to a Python wrapper (which you can find here) in order to add full OAuth capabilities as well as adding the rest of the functionality as given by the Monzo API. Integration into Home Assistant will be coming SoonTM

I'm quite excited about how banks like these will change how the landscape in terms of banking in the UK. Sure, not everyone is going to be making their own programs to mess about with their financial data but hopefully, given time, there will be enough platforms using an API like Monzo's to give the big banks in the UK a kick in the right direction.