n8n-nodes-ynab-by-liam
v1.0.1
Published
A community node for the YNAB budgeting app
Maintainers
Readme
Overview of YNAB Node
I created this node for personal use.
While I am currently an employee of n8n, this is an unofficial node I built in my own time. I have no affiliation with YNAB beyond being a user.
Haven't heard of YNAB? Check it out here.
Version 2 (breaking changes)
As of 1.0.0, the YNAB node has a new version 2. Version 2 is the default for
any node you newly add to a workflow. If you already have YNAB nodes in
existing workflows, they are unaffected — n8n pins them to version 1
automatically, so nothing breaks. You can manually upgrade a node to v2 by
removing it and re-adding it (or replacing it), then updating its parameters
to match the changes below.
Version 1.0.0+ of this package requires n8n 1.80 or newer, since it uses
APIs that older n8n versions lack. If you're on an older n8n, stay on package
version 0.1.6.
Breaking changes
- One item per record. List-type operations (Get Many) now output one
n8n item per YNAB record, instead of a single item wrapping all results.
v1 returned:
[{ "json": [ {account1}, {account2} ] }]for List Accounts, or[{ "json": { "payees": [...] } }]for List Payees. v2 returns one item per record, so Split In Batches and Filter work naturally downstream. - Operations renamed to the "Get Many" convention. e.g.
List Accountsis nowGet Many,Get Accountis nowGet. See the full migration table below. - Update operations use an "Update Fields" collection. Fields you want to change are now added individually to an "Update Fields" collection instead of being fixed top-level parameters, matching standard n8n node UX.
Sinceparameter renamed. The UI label remains "Since", but the internal parameter key changed fromsincetosinceDateon operations that support delta requests (affects expressions referencing the parameter).- Scheduled Transaction update now uses
PUT, matching the current YNAB API (the endpoint no longer acceptsPATCH).
Fixed bugs
- Amounts like
-128.14are no longer rejected (#1). Converting to milliunits with floating point math could produce a non-integer (e.g.-128140.00000000001), which YNAB's API rejects. This is fixed in both v1 and v2. Delete Scheduled Transactionnow actually works. In v1 this operation was present in the UI but silently did nothing.- An amount of
0is now accepted on create/update operations (v2 only) — previously it was dropped. - The trigger node is more robust: the first poll after activation no longer floods your workflow with every historical event, each event type tracks its own delta cursor, and the deduplication buffer is larger.
New in v2
- Return All / Limit options on Get Many operations, so you can cap results without pulling every record.
- Name-or-ID dropdowns for Account, Category, and Payee fields — pick from a searchable list instead of pasting a raw ID.
- Usable as an AI Agent tool.
- Credential test button to verify your Personal Access Token and Budget ID before running a workflow.
Migration table (v1 operation → v2 operation)
| Resource | v1 operation | v2 operation |
| --- | --- | --- |
| Budget | budgetDetails | get |
| Budget | budgetSettings | getSettings |
| Account | listAccounts | getMany |
| Account | getAccount | get |
| Account | createAccount | create |
| Category | listCategories | getMany |
| Category | getCategory | get |
| Category | updateCategory | update |
| Payee | listPayees | getMany |
| Payee | getPayee | get |
| Payee | updatePayee | update |
| Payee Location | listPayeesLocations | getMany |
| Payee Location | getLocationById | get |
| Payee Location | getLocationByPayee | getByPayee |
| Month | listMonths | getMany |
| Month | getMonth | get |
| Transaction | listTransactions | getMany |
| Transaction | getTransaction | get |
| Transaction | getTransactionByCategory | getManyByCategory |
| Transaction | getTransactionByPayee | getManyByPayee |
| Transaction | getTransactionByMonth | getManyByMonth |
| Transaction | createTransaction | create |
| Transaction | createTransactions | createMany |
| Transaction | updateTransaction | update |
| Transaction | deleteTransaction | deleteTransaction |
| Scheduled Transaction | listScheduledTransactions | getMany |
| Scheduled Transaction | getScheduledTransaction | get |
| Scheduled Transaction | createScheduledTransaction | create |
| Scheduled Transaction | updateScheduledTransaction | update |
| Scheduled Transaction | deleteScheduledTransaction | deleteScheduledTransaction |
Note that resource values also changed from plural to singular in v2, e.g.
accounts → account, categories → category, payees → payee,
payeeLocations → payeeLocation, months → month,
transactions → transaction, scheduledTransactions → scheduledTransaction,
budget stays budget.
Bugs/Contributing/Feature Request
If you have a bug to report or a feature request, please submit a GitHub issue with as much detail as you're able to give.
Feel free to submit PRs, but please get in touch with me first to make sure I am willing to add the feature before you spend the time on it.
Documentation
Installation
This can only be installed if you are self-hosting n8n or if this node becomes a verified community node.
Follow the installation guide in the n8n community nodes documentation.
Operations
It should be pretty self explainitory.
If you get stuck, try checking out the YNAB api docs and refrence since this node is just a thin layer ontop of the API.
Credentials
You need a personal access token and your budget ID to authenticate with this node.
This will tell you how to create an access token in YNAB.
And the budget ID will be in this spot on your URL when you are on the webapp.

You will need to make a credential per budget if you work with multiple budgets
Development
If you're contributing to this node, npm run dev now runs n8n-node dev,
which starts a local n8n instance with the node loaded and hot reload enabled.
On very new Node.js versions (26+), npm install may need to be run as
npm install --ignore-scripts to work around a transitive native dependency
of the dev CLI. This only affects contributors setting up a dev environment —
it has no effect on users installing the published node.
