Monzo Credit Card Pot Sync

Hey folks,

Apologies if this is in the wrong section :slight_smile:

If you’re like me, you do most of your day-to-day spending on credit cards (those sweet, sweet American Express points :drooling_face:). If you’re also like me, you pay your credit card bill(s) each month from a Monzo pot.

Unfortunately, Monzo doesn’t yet have the ability to move money to a pot when you spend on your credit card(s), meaning you have to move money into your credit card pot everytime you buy a coffee.

Well, no longer! I’ve developed a small application that will keep track of your credit card spending and automatically move money into your credit card pot.

The Monzo API doesn’t let me host this and open it up to users (Monzo API Reference). Fortunately for me that means I don’t have to worry about GDPR or get PCI certification for my Raspberry Pi. Unfortunately, it does mean you have to run it yourself.

I’ve only added support for American Express & Barclaycard so far (no prizes for guessing what credit cards I have…), but the access is through TrueLayer (the same provider Monzo use for connecting accounts), so adding new card providers is trivial as long as TrueLayer support them.

Feel free to check it out & provide feedback!


16 Likes

Question: can you only have one credit card pot set?

I have a few credit cards and each has their own pot, and I’d like to retain this approach.

1 Like

Thanks MattGo, having just opened an AMEX this is exactly what I need.
Forgive my ignorance, but where would this be installed ?
Thanks

1 Like

You would need to install it on a VPS/Spare computer at home. It’s fully self-hosted so you will need to understand basics like Linux/Docker.

4 Likes

Great idea. Some questions from me (won’t be home for a few weeks so can’t test it out):

  • Can we have different pots for different credit cards or is it 1 pot for all link cards?
  • If 1 pot only, can we run mulitple instances via muiltple docker containers to achieve it?
  • How often does it sync? I wouldn’t want it to transfer 6 times in a day for 6 seperate transactions. Syncing once a day would be preferred.
  • Could you add Natwest and Halifax credit card support please?
1 Like

Yeah, for a complete novice something like a Raspberry Pi, or using a cheap instance from somewhere like Digital Ocean, is probably the easiest way to get it running.

1 Like

Good questions!

  1. Only 1 pot for now, but this is a really good idea. I’ll have a think about how I could shuffle things around to do that.
  2. I think you could do that, but you’d need to create a Monzo API client for each one, otherwise their tokens would overwrite each other.
  3. At the moment every 2 minutes, but should be fairly trivial to make it configurable. I’ll see what I can do tomorrow :muscle:
  4. Sure! Tomorrow as above.
2 Likes

All added :sunglasses:

1 Like

Awesome. Once I’m home (whenever that happens) I will be sure to test it out.
Thanks for taking the time to implement them so quick though. Great to see community working together!

Could someone do an Idiot’s Guide for this?

I have a server hosting my Plex and torrenting stuff, I’d like to chuck it on there, but I feel like I need to install something more before I can do the steps laid out on github. Is it node.js or something?

Correction: it’s python I need to install, having looked properly. See, Idiot Guide needed!!

Depends what device and OS you are using.
I use a Raspberry Pi running the self install of OpenMediaVault (Raspbery Pi Lite OS/Linux), and then using Docker to run anything extra I need on top of that, such as Home Assistant and Plex. I’ll be running this via Docker too.

Just use docker :slight_smile:

This is the docker compose file from the Github

services:
  monzo-credit-card-pot-sync:
    image: ghcr.io/mattgogerly/monzo-credit-card-pot-sync:latest
    container_name: monzo-credit-card-pot-sync
    restart: always
    environment:
      - DATABASE_URI=sqlite:////monzo-credit-card-pot-sync/data/app.db
    ports:
      - 1337:1337
    volumes:
      - data:/monzo-credit-card-pot-sync/data:rw

volumes:
  data:
2 Likes

It’s a hosted server with ultra.cc, and I feel like I’d spend more time faffing about getting it to install and also fiddling with mapping “allowed” ports, maybe I’d be better dusting off my old NAS, see how I get on there; at least it’s all local and then I don’t have to worry too much.

I’ll see how I get on.

FYI @MattGo I have sent a PR as the version is no longer needed in Docker Compose as it’s legacy :slight_smile:

The readme might also need to be updated if people are not running it on their local machine as it mentions localhost which some people will try (if they don’t know etc)

1 Like

This is way over my head, i just create a pretty looking pot.

6 Likes

Hi Matt,
Trying to install on Raspberry Pi using Docker but getting an error about wrong architecture.
Image is for amd64 but I would need arm64.
How do we go about this?
Thanks

Thanks for highlighting, I’ve updated the builds to publish amd64 and arm64 versions. A normal docker pull on latest should pull the right one for your platform :pray:t2:

2 Likes

Hi Matt,
Me again, sorry!
I have raised an issue on GitHub if you’re able to have a look.
Appreciate your help
Paul

I do not feel that I have any use for this, However, for the ultra budget people. This is absolutely awesome, This just goes to show what you can do and how much the community appreciates it when you bring your ideas into the open.

Weirdly, this is something that is built into the MonzoUS account, But not the UK account

The MonzoUS account has credit card pots

2 Likes

Spent the weekend going through crates in the cellar tracking down my Raspberry Pi which I bought and never used, many hours installing the OS and updating (I should never have used the wifi instead of a wired connection, lesson learned), and now I’m almost ready to install this.

Next weekend now, there’s just no time in the week! Crossed fingers it all goes well.

1 Like