- Home
- Resources
- Integrations
- Invoice Ninja
Invoice Ninja n8n integrationAutomate Invoice Ninja with n8n.
Every invoice, payment and expense sitting in Invoice Ninja can become a step in a workflow. The Invoice Ninja n8n integration ships a node with 31 operations across 7 objects, plus a trigger that listens to 5 creation events over a webhook. Made for finance and ops teams who already run billing there.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Invoice Ninja n8n integration actually do?
Two building blocks, one credential. The Invoice Ninja node reads and writes the objects you bill with, clients, invoices, payments, expenses, bank transactions, quotes and tasks, for 31 operations in all. The Invoice Ninja Trigger sits at the other end and starts a workflow the moment a record is created in the app. A credential is the stored login n8n keeps for you, and it is set up once for both nodes.
Start with the money coming in. The trigger fires on create_payment, the workflow pulls the record back with Get a payment and its Include option on Client, and a message lands in Slack before anyone thinks to refresh a dashboard. Same shape on create_invoice, with Email an invoice chained behind it so the document leaves without a manual click.
Second pattern, the Monday receivables list. Get many invoices with Client Status on Unpaid and Return All switched on walks every page of the API instead of stopping at the first batch. The rows go to Google Sheets, the summary goes out through Gmail, and nobody rebuilds the same filter every week.
Third pattern, bank reconciliation. Get many bank transactions lists what the feed brought in, then Match payment to a bank transaction ties a line to a payment that already exists in Invoice Ninja. Teams collecting through Stripe tend to chain those two in a single run.
Expenses follow the same logic. Create an expense accepts an Amount, a Vendor Name or ID and a Category Name or ID, so a receipt captured anywhere ends up booked against the right vendor, with Billable ticked when it is meant to land back on a client invoice.
When an endpoint of the Invoice Ninja API is not part of the node, the HTTP Request node calls it directly and reuses the same credential through its predefined authentication. That fills the gap without a second set of keys and without leaving the workflow.
Two things worth knowing before you build. The credential needs an Invoice Ninja account on a plan that supports API integrations, which means Pro or Enterprise. And every operation carries an API Version option, v4 or v5, that has to match the instance behind the URL. If the platform choice itself is still open, the n8n review goes through it in detail.
How do you connect Invoice Ninja to n8n?
- 01
Generate an API token
Open Invoice Ninja and head to Settings > Account Management > API Tokens, then generate a token. API integrations run on the Pro and Enterprise plans, so check which plan the account sits on before anything else. Copy the token as soon as it appears. It is the single value the credential uses to prove who is calling the API.
- 02
Create the credential in n8n
In n8n, open the Credentials menu and add an Invoice Ninja API credential. Three fields matter. URL takes one of the default URLs when Invoice Ninja hosts the installation, or the address of your own instance when you self-host. API Token takes the value you just copied. Secret is optional and only available for v5 API users.
- 03
Pick a resource and run it
Drop the Invoice Ninja node on the canvas and select the credential from the dropdown. Choose a resource, then an operation, say Client and Get many clients. Set API Version to the version your instance runs, v4 or v5. Execute the step once on its own: real records coming back mean the token, the URL and the version all agree.
What starts an Invoice Ninja workflow?
Invoice Ninja Trigger is the node that starts a workflow when something happens in Invoice Ninja. It listens to 5 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Invoice Ninja account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
create_client.*1create_client. create_client
create_invoice.*1create_invoice. create_invoice
create_payment.*1create_payment. create_payment
create_quote.*1create_quote. create_quote
create_vendor.*1create_vendor. create_vendor
Configuration notes
01Set up the Invoice Ninja Trigger
The trigger node is version 2 and runs over a webhook, meaning a URL that n8n registers with Invoice Ninja when the workflow is activated. Each event then reaches the workflow within seconds, with no polling loop in between.
Key parameters
- Event: the record creation the workflow listens to, chosen among the 5 values the node offers.
- API Version: v4 or v5, set to the same version as the credential's instance.
02Invoice Created
Set Event to Invoice Created and the workflow starts each time a new invoice appears in Invoice Ninja, whether it was typed by hand, generated from a recurring setup or pushed by another automation.
Key parameters
- Event:
create_invoice, the only value needed for this branch.
03Payment Created
Payment Created reacts to a payment recorded in Invoice Ninja. The value is create_payment, and it is the branch that closes the loop on an invoice sent days earlier.
Key parameters
- Event:
create_payment, fired on the creation of the payment record itself. - API Version: keep it aligned with the node that runs after the trigger.
04Quote Created
Quote Created starts a workflow the moment a new quote is saved in Invoice Ninja, whatever the deal behind it looks like.
Key parameters
- Event:
create_quote, the only value this branch listens to.
client to Include when the account matters, and post the summary to the channel where the sales team tracks new deals. A shorter path chains Email a quote right after the trigger, once an approval step has cleared the numbers.05Client Created and Vendor Created
These two watch the directory rather than the documents. Client Created fires on create_client, Vendor Created on create_vendor, each on a separate trigger node when a workflow needs both.
Key parameters
- Event:
create_clientorcreate_vendor, depending on which side of the ledger the record belongs to.
What can the Invoice Ninja node do?
The Invoice Ninja node exposes 31 operations across 7 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Delete | Match Payment | |
|---|---|---|---|---|---|---|
| Bank Transaction | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Client | ✓ | ✓ | ✓ | ✓ | ||
| Expense | ✓ | ✓ | ✓ | ✓ | ||
| Invoice | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Payment | ✓ | ✓ | ✓ | ✓ | ||
| Quote | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Task | ✓ | ✓ | ✓ | ✓ |
Operations index
Bank Transaction
5 operationsCreate a bank transaction
bank_transaction.createWhat you see in n8n
Notes & use cases
This writes a line into the bank transactions of Invoice Ninja, useful when the movement comes from somewhere other than a bank connector. Nothing is required, everything sits in Additional Fields.
Key parameters
- Amount: the value of the movement, often pulled from the step before with
{{ $json.field }}. - Base Type:
CREDITfor a deposit,DEBITfor a withdrawal. - Bank Integration Name or ID: the account the line belongs to, picked from the list or given as an ID through an expression.
- Date and Description: when it happened, and the wording that appears on the statement.
Delete a bank transaction
bank_transaction.deleteWhat you see in n8n
Notes & use cases
Removing a line takes a single value. The operation deletes the bank transaction whose identifier you hand it, and nothing else.
Key parameters
- Bank Transaction ID: required, the identifier of the line to drop, usually carried over from a listing step as
{{ $json.field }}. - API Version: v4 or v5, matching the instance the credential points at.
Get a bank transaction
bank_transaction.getWhat you see in n8n
Notes & use cases
One identifier in, one bank transaction out. The operation retrieves the data of a single line so the rest of the workflow can decide what to do with it.
Key parameters
- Bank Transaction ID: required, the identifier of the line to read.
- API Version: v4 or v5, kept consistent across every Invoice Ninja node of the workflow.
Get many bank transactions
bank_transaction.getAllWhat you see in n8n
Notes & use cases
Listing the bank feed comes with the usual pair of switches, and they decide how much of it the workflow actually sees.
Key parameters
- Return All: on, n8n chains the API pages and brings back every bank transaction; off, it stops at Limit.
- Limit: the maximum number of transactions returned when Return All stays off, handy while you are still testing.
Match payment to a bank transaction
bank_transaction.matchPaymentWhat you see in n8n
Notes & use cases
Reconciliation lives in this operation: it links a bank transaction to a payment, so the movement stops being an orphan line in the feed.
Key parameters
- Bank Transaction ID: required, the line to match.
- Payment Name or ID: the payment to tie it to, chosen from the list or supplied as an ID through an expression.
Client
4 operationsCreate a client
client.createWhat you see in n8n
Notes & use cases
A new client record gets built from optional blocks rather than a fixed form, which is why nothing here is mandatory.
Key parameters
- Contacts: a repeatable block where First Name, Last Name, Email and Phone describe the people to bill.
- Billing Address and Shipping Address: the two address blocks, with Street Address, City, Postal Code and Country Code Name or ID.
- Additional Fields: Client Name, VAT Number, Website, Private Notes and the rest of the profile.
Delete a client
client.deleteWhat you see in n8n
Notes & use cases
The account disappears from Invoice Ninja once this runs, so it belongs behind a step that is sure of its target.
Key parameters
- Client ID: required, the identifier of the account to remove.
- API Version: v4 or v5, the same value used everywhere else in the workflow.
Get a client
client.getWhat you see in n8n
Notes & use cases
Reading one account gives the workflow the details the trigger payload does not carry on its own, and it can bring the billing history along.
Key parameters
- Client ID: required, the identifier of the account to read.
- Include: set to Invoices, the response also carries the client's invoices, which saves a second call.
Get many clients
client.getAllWhat you see in n8n
Notes & use cases
The client directory comes back as a list you can narrow before it ever reaches the next node.
Key parameters
- Return All: on, every client comes through page after page; off, the run stops at Limit.
- Status: Active, Archived or Deleted, to keep a sync on live accounts only.
- Created At and Updated At: date filters for an incremental run rather than a full reload.
Expense
4 operationsCreate an expense
expense.createWhat you see in n8n
Notes & use cases
Booking a cost takes one call, and the 17 fields of Additional Fields decide how much detail lands in the books.
Key parameters
- Amount: what was spent.
- Vendor Name or ID and Category Name or ID: who was paid and under which heading, from the list or as an ID through an expression.
- Billable: on when the cost is meant to be passed back to a client.
- Expense Date, Payment Type and Transaction Reference: when, how, and under which reference it was settled.
Delete an expense
expense.deleteWhat you see in n8n
Notes & use cases
An expense that should never have been booked leaves the ledger here, one record per execution.
Key parameters
- Expense ID: required, the identifier of the cost to remove.
- API Version: v4 or v5, aligned with the instance behind the credential.
Get an expense
expense.getWhat you see in n8n
Notes & use cases
Pulling a single cost back gives the workflow something to quote, attach or compare later on.
Key parameters
- Expense ID: required, the identifier of the expense to read, commonly supplied as
{{ $json.field }}from the step before. - API Version: v4 or v5, matching the rest of the workflow.
Get many expenses
expense.getAllWhat you see in n8n
Notes & use cases
Costs come back as a list, and the two switches below decide whether that list is complete or just a sample.
Key parameters
- Return All: on, n8n follows the API pages until every expense is in; off, it stops at Limit.
- Limit: the maximum number of expenses to bring back, which is the sane setting while a workflow is being built.
Invoice
5 operationsCreate an invoice
invoice.createWhat you see in n8n
Notes & use cases
Here is where a document actually comes into existence, with its lines and its 23 optional fields.
Key parameters
- Invoice Items: the repeatable block of lines, each with Description, Cost, Hours and Service.
- Client Name or ID: the account being billed, from the list or as an ID through an expression.
- Invoice Status:
1for Draft,2for Sent. - Due Date, Tax Name 1 and Tax Rate 1: the terms and the tax line carried on the document.
- Email Invoice: on, the document is emailed as part of the same call.
Delete an invoice
invoice.deleteWhat you see in n8n
Notes & use cases
One identifier, one invoice gone from Invoice Ninja. Straightforward, and worth guarding with a condition upstream.
Key parameters
- Invoice ID: required, the identifier of the document to remove.
- API Version: v4 or v5, consistent with the credential's instance.
Email an invoice
invoice.emailWhat you see in n8n
Notes & use cases
Sending is its own operation, separate from creation, which means a document can be reviewed first and mailed later by another workflow.
Key parameters
- Invoice ID: required, the identifier of the invoice to send.
- API Version: v4 or v5, matching the instance.
Get an invoice
invoice.getWhat you see in n8n
Notes & use cases
Reading one document is what turns a trigger payload into something the next steps can use, especially when the client details matter.
Key parameters
- Invoice ID: required, the identifier of the invoice to read.
- Include: set to Client, the response carries the client alongside the invoice.
create_invoice, read the document with Include on Client so the notification names the account instead of showing a bare identifier.Get many invoices
invoice.getAllWhat you see in n8n
Notes & use cases
The receivables workhorse. Its 7 options let the list arrive already filtered instead of sorted after the fact.
Key parameters
- Client Status: All, Paid, Unpaid or Overdue.
- Return All: switched on, every matching invoice comes back page after page, one API call chained to the next until nothing is left to fetch; switched off, the run stops as soon as it hits Limit.
- Invoice Number and Status: to target one document, or to keep Archived and Deleted records out.
Payment
4 operationsCreate a payment
payment.createWhat you see in n8n
Notes & use cases
Recording cash against a document is what moves an invoice out of the chasing list, and this operation does it in one step.
Key parameters
- Invoice Name or ID: the document being paid, from the list or as an ID through an expression.
- Amount: the sum received, which can differ from the invoice total on a partial settlement.
- Payment Type: Bank Transfer, Cash, SEPA and the rest of the list.
- Transfer Reference: the bank reference, so the line can be found again later.
Delete a payment
payment.deleteWhat you see in n8n
Notes & use cases
Cash entered against the wrong invoice is corrected here, by removing the payment record itself.
Key parameters
- Payment ID: required, the identifier of the payment to remove.
- API Version: v4 or v5, the same version the rest of the workflow uses.
Get a payment
payment.getWhat you see in n8n
Notes & use cases
A single payment comes back with its detail, and optionally with the account it belongs to.
Key parameters
- Payment ID: required, the identifier of the payment to read.
- Include: set to Client, the client travels back with the payment in the same response.
create_payment event without a second lookup on the account.Get many payments
payment.getAllWhat you see in n8n
Notes & use cases
Cash-in history arrives as a list, filtered on dates or on the state of the records.
Key parameters
- Return All: on, n8n pages through every payment rather than stopping at the first batch that comes back; off, Limit decides where it stops.
- Created At and Updated At: the pair of date filters that turns a full reload into a short, incremental daily or weekly run instead.
- Include: set to Client, each payment carries its account, which saves a lookup per row.
Quote
5 operationsCreate a quote
quote.createWhat you see in n8n
Notes & use cases
A quote lands in Invoice Ninja with its line items already filled in, and the created record comes back into the workflow.
Key parameters
- Invoice Items: the repeating collection that holds the quote lines, one entry per
Add Invoice Item. - Client Name or ID: choose the client from the list, or pass an identifier through an expression, a snippet like
{{ $json.field }}that reads a value from the incoming item. - Quote Status: two values are offered,
1(Draft) and2(Sent). - Due Date: a date-time value, set in Additional Fields.
Delete a quote
quote.deleteWhat you see in n8n
Notes & use cases
Removing a quote from Invoice Ninja takes one identifier and nothing else. The call hits a single record, so most workflows put a check step in front of it.
Key parameters
- Quote ID: the required identifier of the quote to remove. A required field left empty stops the node before it runs, so feed it from an expression such as
{{ $json.field }}rather than typing it by hand. - API Version: pick
v4orv5to match the Invoice Ninja instance behind the credential.
Email a quote
quote.emailWhat you see in n8n
Notes & use cases
Sending a quote out is its own operation: the workflow points at one quote and Invoice Ninja sends it by email. No template step and no mail node sit in between.
Key parameters
- Quote ID: the required identifier of the quote to send, typically carried over from the node that created or fetched it, for example
{{ $json.field }}. - API Version: the same
v4orv5choice as the rest of the node.
Get a quote
quote.getWhat you see in n8n
Notes & use cases
One quote, read by its identifier, with the data Invoice Ninja returns for that record. Useful whenever a later branch needs the quote itself and not just its number.
Key parameters
- Quote ID: required, the identifier of the quote to read.
- Include: the Options collection offers one value,
client.
client included, and posts the details to the channel where the sales team follows new deals.Get many quotes
quote.getAllWhat you see in n8n
Notes & use cases
This one reads several quotes in a single node, which is what reporting and export workflows run on.
Key parameters
- Return All: switched on, n8n walks through the API pages and brings back every quote; switched off, Limit caps how many items come out.
- Status: three values,
active,archivedanddeleted. - Quote Number: a text value in the Options collection, for narrowing the read down.
- Created At and Updated At: date-time values in the same collection.
active quotes with Return All on and writes them to a sheet the commercial team already reads.Task
4 operationsCreate a task
task.createWhat you see in n8n
Notes & use cases
Billable time gets a home here: the operation writes a task into Invoice Ninja, with or without the hours already logged against it.
Key parameters
- Time Logs: the repeating collection for the logged periods, one entry per
Add Time Log. - Client Name or ID and Project Name or ID: both come from a dropdown, and both accept an identifier through an expression when the value arrives from an earlier node.
- Duration (Hours): a number, set in Additional Fields.
Delete a task
task.deleteWhat you see in n8n
Notes & use cases
Tasks pile up fast when a workflow creates them automatically. This operation removes one of them, identified by its own ID.
Key parameters
- Task ID: required. It is the Invoice Ninja identifier of the task, not its description, and an empty value stops the node before the call goes out.
- API Version:
v4orv5, matching the instance the credential points at.
Get a task
task.getWhat you see in n8n
Notes & use cases
Reading a single task gives the workflow what Invoice Ninja holds on it, which is the usual first step before a branch decides what to do next.
Key parameters
- Task ID: required, the identifier of the task to read, often passed as
{{ $json.field }}from the node before it. - Include: one value here too,
client.
client included and checks the values against what the project manager entered.Get many tasks
task.getAllWhat you see in n8n
Notes & use cases
Bulk reading of tasks, for the workflows that count hours rather than handle them one by one.
Key parameters
- Return All: on, n8n follows the API pages until every task has been read; off, Limit sets the maximum number of tasks returned.
- Include: the Options collection offers
client. - API Version:
v4orv5.
Need help automating Invoice Ninja with n8n?
A person reads every message.