Automatically import transactions to YNAB

There’s a plugin on Github that allows you to automatically import your transactions to YNAB. I’ve been pulling my hair trying to make it work, but I simply don’t understand the instructions. Does anyone here use it and know how to get it properly set up?


I got this to work - how far did you get? You did try to use the Heroku method right?

Edit - actually it looks as though YNAB has recently restricted their developer access needed to generate a personal key. Is that where you had the problem?

1 Like

I used Heroku, yes. I got a YNAB API token and a Monzo API, but I had no idea how to use it in Heroku. The instructions on GitHub weren’t comprehensive to me. How did you do it?

Hey @timeconsumer - I’ve just managed to set up this app with both APIs - had a couple of points where I stumbled - related to my old pre-paid account - but just tested it and it works.

How far did you get with the set up in Heroku?

1 Like

Honestly not far at all. I found the YNAB access token, but that’s about it. I would need a seriously dumbed-down version of the instructions to understand anything at all, and I do consider myself quite tech-savvy otherwise.

1 Like

Happy to give a few pointers if you want them?

So assuming you have got / can get your YNAB API token.

From there.


The “with Webhooks” section of the Github site will give you this link:

And will ask you to recreate your own version of it. Create a heroku account, etc. Then create your own “deployment” in Heroku:


The “app name” bit will become part of the URL you’ll use later. I just used “bens-ynab-importer” (will become “” for later stages where you need a URL. Back to that later.

Next you’ll come up to the “config vars”, which is where you need to enter your YNAB API tokens, account references, and budget references.


YNAB_ACCESS_TOKEN is the one generated by the YNAB API Page - which you should already have.

For the next two points, if you log into your YNAB online account, open the relevant budget, and click into your Monzo account on the left pane. The URL will look like this:**[a random set of numbers]**/accounts/**[more randdom numbers]**

The first set of numbers is your YNAB_BUDGET_ID - enter that into said box.

The second set is the your YNAB_ACCOUNT_ID - or rather, the ID of the account you want the data to Sync to. Enter that in there too.

The last entry, URL_SECRET says optional - I think it’s used to verify that the right account/data is being synced - I just put a random word in here - but if you use it, it will come back later as part of the overall URL you’ll need.

(Basically, the URL you will need is "https://[your-app-name][?secret-phrase-if-you-used-it]


The Github guide then points you here for the Monzo set up.

Firstly, go to this page to access the Monzo API. Sign in and do the email magic link thing and you’ll be presented with an dashboard to generate your “webhooks”. Basically, I understand that these webhooks are what you need for the API to work. Groovy.

This is where I got stuck because the instructions from here are unclear… So…

First, in the API section:

You will have a screen like this:


Now the first problem I had was that the “account ID” that the Github guide tells me I need, is actually the account ID of the pre-paid account. If you started with Monzo in the pre-paid phase you’ll need to take some extra steps.

First, click on “list accounts” in the End Point List. It should say “GET /accounts”. Press send, and you’ll be presented with a list of account ID’s.

You should see one with the attributes of:

  • Closed = False
  • Type = UK_Retail
    and with your name, sort code, account number etc.

Copy the id from this page - should be “acc_” and a long string. Paste this into notepad or somewhere you can access later.

Now go to “Register Webhook”. You should see:


Now replace the $account_id with the ID you’ve just found (without the dollar sign) but keep the quotes.

The URL should be replaced with the URL of your heroku app, with your secret term appended if you’ve chosen one.

Should look like so “https://[your-app-name][your-secret-word]” (if you didn’t use a secret word, omit everything after “monzo”)

Or like so in the box, curly brackets and quotes in the same places:


Once you’ve got that edited, click on the “Send” button, and it should register.

If you then go to “List Webhooks”, and press the Send button, the info you’ve entered should come out on the other end:


Once all those variables are in place, make sure you’ve pressed “Deploy” on the Heroku page. AND THAT IT IS.

From here on out, any transaction (including moving money to pots) will appear on your YNAB Monzo account page.

Hope that is helpful :slight_smile:


THANK YOU. This is the installation guide we need for this plugin. It works a treat!

1 Like

Thanks Ben, these steps were really easy to follow.

I couldn’t get it to work though… the webhook I created in Monzo (as per your instructions above) doesn’t show up when I List Webhooks. Tried following the steps from scratch twice and still nothing. Any suggestions?

Also noticed, visiting the Heroku app URL returns {“error”:“unauthorised”} Is that normal?


1 Like

Hey! So I had a few issues setting up the webhook at first. Couple of things that worked (typing on my phone so memory might be a bit off)

  • did you definitely remove the $ from the account id?
  • did you keep quotes around the account id?
  • when you go to the “list webhooks” bit - is there an account id already listed in the box? You may need to replace the default option with the one you used (if you have a pre pay and a current account this might be why you don’t see it?)

The error you get when you go to the heroku page shouldn’t be a problem - I got the same.

Did you get an error of any kind when you made your webhook?

Just checked the developer page - when you do the “list webhook” you need to enter the ID of the relevant account otherwise it defaults to the prepay if you had one.

On said “list webhooks” page enter the same acc_000(etc) number, and I think it should show?

Alternatively, try moving some money into/out of your account and it should pop up in YNAB.

Hey, I got it working!

You’re right, the webhooks in Monzo defaulted to the pre-pay account and not the current account, so I cleared them all out and tried again.

Also, I wasn’t inserting the full Heroku URL with the “/monzo?secret…” afterwards.

Now it works like a dream :smile:

1 Like

Hi guys, would this work for Joint Accounts?
I’ve tried the IFTTT integration that YNAB suggests on their community forum, but it’s not pulling the joint account transactions, which I assume is because the Monzo IFTTT integration is not deployed to Joint yet.
So before I go through the process on the GitHub option, just wanted to check if it’s unlikely to work for Joint Accounts.


Hey @Freitas

I don’t have a joint account so couldn’t test this myself - but my strong suspicion is that it would.

If you go to the page and login, go to “list accounts” and press send on that page - if you can see an account entry for your joint account it should work.

You’d just need to ensure you set the thing up with your joint account id into the correct YNAB account ID too

Hi @BritishLibrary

I missed your response back then, but just came across it on another quest to make this work.
I’ve tried your suggestion, but nothing shows up on the List Accounts. Just ‘0 items’.

This is huge. Thanks Ben for the comprehensive instructions. I got my Monzo Joint Account to auto-update in YNAB

The only stumble I had was listing the webhooks after I’d sent the webhook with the required data - none were displayed. I then changed the default ''GET," from “/webhooks?account_id=$account_id” to “”/webhooks?account_id=[mymonzojointaccountaccountid]" and it was displayed OK (substituting ‘[mymonzojointaccountaccountid]’ for the actual monzo account ID of course!)

A few test transfers between my CA and the JA showed up seconds later in YNAB. Fantastic :partying_face:

1 Like

Just curious: is anyone else who uses this plugin having doubles popping up in their transaction list? Some transactions are being imported twice for me since 2-3 days ago.

I’ve just looked and I’m getting the same thing. All my contactless purchases are popping up twice!

Everything from the 8th Nov is doing it - with the exceptions of transactions like TFL.


No duplications for me so far - and I’ve made quite a few contactless payments since 08-Nov.


Yes, I think mine are also from the 8th and onward. I know that the guy who built the plugin is beta testing an advanced version, maybe he changed something.

I’ve not had any issues with this occurring on mine so it looks as though it isn’t effecting everyone.