For US Folks in the UK: Monzo & FBAR

Last night I settled down getting ready to file my US taxes. As any US expats know, one part of that involves filling out the FBAR form. Intent aside, the specifics of the form are pretty clear: find the highest balance for each foreign bank account during the tax year, multiply it by the average annual exchange rate ($1.3175 per £ in 2025), and put it on the form.

With most UK banks this is pretty simple, but with Monzo this is a lot trickier. Partially because Monzo doesn’t show a running balance, but mostly because pots are handled separately in the app and on statements (even though they technically fall under the current account). My wife and I have three Monzo “bank accounts” for the FBAR’s purposes (my current, her current, joint), but we also have 2 regular pots, 5 solo savings pots, 8 joint savings pots, and two active challenges… This setup actually makes the FBAR a bit of a nightmare, as unless I am mistaken there is not really an easy way to go back for the past year and find the highest total balance for each “account” including pots and challenges.

Now I solved this last night by treating it as a fun little python challenge, and I’ve written some code (I wrote it, not vibe coded!) that will parse a Monzo full-year pdf statement pretty well, track daily total balance including pots, and spit out the amount needed for the FBAR. Now that I’ve written the code I should be able to use it for future years as well, which is handy. I am curious if any other US-in-UK Monzo users have found better solutions? Or if anyone in a similar situation wants my poorly-optimised-but-functioning code to run themselves?

2 Likes

Love to hear when people turn difficult situations into fun coding projects. Good on you and hopefully it makes the tax situation less burdensome in the future

2 Likes

As often happens with this sort of project, I originally thought it would be max ten lines of code… :laughing: I got the pdf read in pretty quickly (under ten lines), but then I had to deal with pypdf not parsing multi-line transactions well (a couple more lines), and then I realised pots were broken out (15 more lines…), and then…..

1 Like

Appreciate the fact you also didn’t vibe code it and actually coded it properly, seems rare in this day and age to find people actually coding anymore

1 Like

Monzo presumably know how many US nationals they have as customers - I wonder if it’s enough to make it worthwhile having a button (just for them?) near the interest statements section to show the highest balance of the year. Sounds like a Monzo Time project, if that’s still a thing.

1 Like

That would be great, especially as how I discovered a flaw in my process last night (if I send £1,000 to my Monzo, and then divy that up between various pots, it effectively gets counted twice since it was in my current account as well as the pots in the same day…).

1 Like