Overview
Invoice Ninja is an open-source invoicing and billing platform. This tool provides access to the Invoice Ninja v5 API for managing clients (create, get, list, delete), invoices (create, get, list, delete, email), payments (create, get, list, delete), expenses (create, get, list, delete), quotes (create, get, list, delete, email), tasks (create, get, list, delete), and bank transactions (create, get, list, delete, match payment). Supports both hosted (invoicing.co) and self-hosted instances. Uses link-based pagination with per_page parameter.
Node Type
Action — processes input items and produces output
| Direction | Port(s) |
|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Invoice Ninja API credentials.
See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|
| Bank Transaction | bankTransaction |
| Client | client |
| Expense | expense |
| Invoice | invoice |
| Payment | payment |
| Quote | quote |
| Task | task |
Operations
Each resource has its own Operation list, and all of them reuse the same core values (create, delete, get, getAll). Pick the resource first, then the operation.
| Resource | Operation | Value | Description |
|---|
| Bank Transaction | Create | create | Record a bank transaction |
| Bank Transaction | Delete | delete | Delete a bank transaction |
| Bank Transaction | Get | get | Get a bank transaction |
| Bank Transaction | Get Many | getAll | List bank transactions |
| Bank Transaction | Match Payment | matchPayment | Match a payment to a bank transaction |
| Client | Create | create | Create a client |
| Client | Delete | delete | Delete a client |
| Client | Get | get | Get a client |
| Client | Get Many | getAll | List clients |
| Expense | Create | create | Create an expense |
| Expense | Delete | delete | Delete an expense |
| Expense | Get | get | Get an expense |
| Expense | Get Many | getAll | List expenses |
| Invoice | Create | create | Create an invoice |
| Invoice | Delete | delete | Delete an invoice |
| Invoice | Email | email | Email an invoice to the client |
| Invoice | Get | get | Get an invoice |
| Invoice | Get Many | getAll | List invoices |
| Payment | Create | create | Record a payment against an invoice |
| Payment | Delete | delete | Delete a payment |
| Payment | Get | get | Get a payment |
| Payment | Get Many | getAll | List payments |
| Quote | Create | create | Create a quote |
| Quote | Delete | delete | Delete a quote |
| Quote | Email | email | Email a quote to the client |
| Quote | Get | get | Get a quote |
| Quote | Get Many | getAll | List quotes |
| Task | Create | create | Create a task |
| Task | Delete | delete | Delete a task |
| Task | Get | get | Get a task |
| Task | Get Many | getAll | List tasks |
Parameters
Bank Transaction: Create
| Parameter | Type | Required | Default | Description |
|---|
| Additional Fields | collection | No | {} | |
| | | | Options: 1, CREDIT |
| — Amount | number | No | 0 | |
| — Bank Integration ID | string | No | — | Bank integration ID. Find in Invoice Ninja under Banking > Integrations. |
| — Base Type | options | No | CREDIT | |
| | | | Options: CREDIT, DEBIT |
| — Currency ID | string | No | — | Currency ID. |
| — Date | string | No | — | Transaction date (YYYY-MM-DD). |
| — Description | string | No | — | |
Bank Transaction: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Bank Transaction ID | string | Yes | — | The ID of the bank transaction. |
Bank Transaction: Get
| Parameter | Type | Required | Default | Description |
|---|
| Bank Transaction ID | string | Yes | — | The ID of the bank transaction. |
Bank Transaction: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Bank Transaction: Match Payment
| Parameter | Type | Required | Default | Description |
|---|
| Bank Transaction ID | string | Yes | — | The ID of the bank transaction to match. |
| Payment ID | string | Yes | — | The payment ID to match to the bank transaction. In Invoice Ninja, find matchable payments under Payments. |
Client: Create
| Parameter | Type | Required | Default | Description |
|---|
| Additional Fields | collection | No | {} | |
| | | | Options: 1, CREDIT |
| — Client Name | string | No | — | The name of the client. |
| — ID Number | string | No | — | Client ID number. |
| — Private Notes | string | No | — | Private notes about the client. |
| — VAT Number | string | No | — | Client VAT number. |
| — Work Phone | string | No | — | Work phone number. |
| — Website | string | No | — | Client website URL. |
| Billing Address | fixedCollection | No | {} | |
| — Street Address | string | No | — | |
| — Apt/Suite | string | No | — | |
| — City | string | No | — | |
| — State | string | No | — | |
| — Postal Code | string | No | — | |
| — Country Code | string | No | — | ISO numeric country code (e.g. 840 for US, 826 for UK). Find at https://en.wikipedia.org/wiki/ISO_3166-1_numeric |
| Contacts | fixedCollection | No | {} | |
| — First Name | string | No | — | |
| — Last Name | string | No | — | |
| — Email | string | No | — | |
| — Phone | string | No | — | |
| Shipping Address | fixedCollection | No | {} | |
| — Street Address | string | No | — | |
| — Apt/Suite | string | No | — | |
| — City | string | No | — | |
| — State | string | No | — | |
| — Postal Code | string | No | — | |
| — Country Code | string | No | — | ISO numeric country code. |
Client: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Client ID | string | Yes | — | The ID of the client. |
Client: Get
| Parameter | Type | Required | Default | Description |
|---|
| Client ID | string | Yes | — | The ID of the client. |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | invoices | Related data to include. |
| | | | Options: invoices |
Client: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | invoices | |
| | | | Options: invoices |
| — Status | options | No | active | |
| | | | Options: active, archived, deleted |
| — Created At | string | No | — | Filter by creation date (ISO 8601). |
| — Updated At | string | No | — | Filter by update date (ISO 8601). |
| — Is Deleted | boolean | No | false | |
Expense: Create
| Parameter | Type | Required | Default | Description |
|---|
| Additional Fields | collection | No | {} | |
| | | | Options: 1, CREDIT |
| — Amount | number | No | 0 | |
| — Billable | boolean | No | false | Whether the expense should be invoiced. |
| — Client | string | No | — | Client ID to associate the expense with. |
| — Custom Value 1 | string | No | — | |
| — Custom Value 2 | string | No | — | |
| — Category | string | No | — | Expense category ID. Find in Invoice Ninja under Settings > Expense Categories. |
| — Expense Date | string | No | — | Date of the expense (YYYY-MM-DD). |
| — Payment Date | string | No | — | Date payment was made (YYYY-MM-DD). |
| — Payment Type | options | No | 1 | The type of payment. |
| | | | Options: 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 |
| — Private Notes | string | No | — | |
| — Public Notes | string | No | — | |
| — Tax Name 1 | string | No | — | |
| — Tax Name 2 | string | No | — | |
| — Tax Rate 1 | number | No | 0 | |
| — Tax Rate 2 | number | No | 0 | |
| — Transaction Reference | string | No | — | |
| — Vendor | string | No | — | Vendor ID. Find in Invoice Ninja under Vendors. |
Expense: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Expense ID | string | Yes | — | The ID of the expense. |
Expense: Get
| Parameter | Type | Required | Default | Description |
|---|
| Expense ID | string | Yes | — | The ID of the expense. |
Expense: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Invoice: Create
| Parameter | Type | Required | Default | Description |
|---|
| Additional Fields | collection | No | {} | |
| | | | Options: 1, CREDIT |
| — Client | string | No | — | Client ID. Find in Invoice Ninja under client settings. |
| — Auto Bill | boolean | No | false | |
| — Custom Value 1 | number | No | 0 | |
| — Custom Value 2 | number | No | 0 | |
| — Discount | string | No | — | |
| — Due Date | string | No | — | Due date (ISO 8601 or YYYY-MM-DD). |
| — Email | string | No | — | |
| — Email Invoice | boolean | No | false | Whether to email the invoice upon creation. |
| — Invoice Date | string | No | — | Invoice date (ISO 8601 or YYYY-MM-DD). |
| — Invoice Number | string | No | — | |
| — Invoice Status | options | No | 1 | |
| | | | Options: 1, 2 |
| — Is Amount Discount | boolean | No | false | |
| — Mark Sent | boolean | No | false | |
| — Paid | number | No | 0 | |
| — Partial | number | No | 0 | |
| — Partial Due Date | string | No | — | |
| — PO Number | string | No | — | |
| — Private Notes | string | No | — | |
| — Public Notes | string | No | — | |
| — Tax Name 1 | string | No | — | |
| — Tax Name 2 | string | No | — | |
| — Tax Rate 1 | number | No | 0 | |
| — Tax Rate 2 | number | No | 0 | |
| Invoice Items | fixedCollection | No | {} | |
| — Cost | number | No | 0 | |
| — Description | string | No | — | |
| — Service | string | No | — | |
| — Hours/Quantity | number | No | 0 | |
| — Tax Name 1 | string | No | — | |
| — Tax Name 2 | string | No | — | |
| — Tax Rate 1 | number | No | 0 | |
| — Tax Rate 2 | number | No | 0 | |
Invoice: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Invoice ID | string | Yes | — | The ID of the invoice. |
Invoice: Email
| Parameter | Type | Required | Default | Description |
|---|
| Invoice ID | string | Yes | — | The ID of the invoice. |
Invoice: Get
| Parameter | Type | Required | Default | Description |
|---|
| Invoice ID | string | Yes | — | The ID of the invoice. |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | client | |
| | | | Options: client |
Invoice: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Invoice Number | string | No | — | |
| — Include | options | No | client | |
| | | | Options: client |
| — Status | options | No | active | |
| | | | Options: active, archived, deleted |
| — Created At | string | No | — | |
| — Updated At | string | No | — | |
| — Is Deleted | boolean | No | false | |
| — Client Status | options | No | all | |
| | | | Options: all, paid, unpaid, overdue |
Payment: Create
| Parameter | Type | Required | Default | Description |
|---|
| Invoice | string | Yes | — | Invoice ID to apply the payment to. Find in Invoice Ninja under invoice details. |
| Amount | number | No | 0 | The payment amount. |
| Additional Fields | collection | No | {} | |
| | | | Options: 1, CREDIT |
| — Payment Type | options | No | 1 | The type of payment. |
| | | | Options: 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 |
| — Transfer Reference | string | No | — | |
| — Private Notes | string | No | — | |
Payment: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Payment ID | string | Yes | — | The ID of the payment. |
Payment: Get
| Parameter | Type | Required | Default | Description |
|---|
| Payment ID | string | Yes | — | The ID of the payment. |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | client | |
| | | | Options: client |
Payment: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | client | |
| | | | Options: client |
| — Status | options | No | active | |
| | | | Options: active, archived, deleted |
| — Created At | string | No | — | |
| — Updated At | string | No | — | |
| — Is Deleted | boolean | No | false | |
Quote: Create
| Parameter | Type | Required | Default | Description |
|---|
| Additional Fields | collection | No | {} | |
| | | | Options: 1, CREDIT |
| — Client | string | No | — | Client ID. |
| — Auto Bill | boolean | No | false | |
| — Custom Value 1 | number | No | 0 | |
| — Custom Value 2 | number | No | 0 | |
| — Discount | string | No | — | |
| — Due Date | string | No | — | |
| — Email | string | No | — | |
| — Email Quote | boolean | No | false | |
| — Quote Date | string | No | — | |
| — Quote Number | string | No | — | |
| — Quote Status | options | No | 1 | |
| | | | Options: 1, 2 |
| — Is Amount Discount | boolean | No | false | |
| — Paid | number | No | 0 | |
| — Partial | number | No | 0 | |
| — Partial Due Date | string | No | — | |
| — PO Number | string | No | — | |
| — Private Notes | string | No | — | |
| — Public Notes | string | No | — | |
| — Tax Name 1 | string | No | — | |
| — Tax Name 2 | string | No | — | |
| — Tax Rate 1 | number | No | 0 | |
| — Tax Rate 2 | number | No | 0 | |
| Quote Items | fixedCollection | No | {} | |
| — Cost | number | No | 0 | |
| — Description | string | No | — | |
| — Service | string | No | — | |
| — Hours/Quantity | number | No | 0 | |
| — Tax Name 1 | string | No | — | |
| — Tax Name 2 | string | No | — | |
| — Tax Rate 1 | number | No | 0 | |
| — Tax Rate 2 | number | No | 0 | |
Quote: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Quote ID | string | Yes | — | The ID of the quote. |
Quote: Email
| Parameter | Type | Required | Default | Description |
|---|
| Quote ID | string | Yes | — | The ID of the quote. |
Quote: Get
| Parameter | Type | Required | Default | Description |
|---|
| Quote ID | string | Yes | — | The ID of the quote. |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | client | |
| | | | Options: client |
Quote: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Quote Number | string | No | — | |
| — Include | options | No | client | |
| | | | Options: client |
| — Status | options | No | active | |
| | | | Options: active, archived, deleted |
| — Created At | string | No | — | |
| — Updated At | string | No | — | |
| — Is Deleted | boolean | No | false | |
Task: Create
| Parameter | Type | Required | Default | Description |
|---|
| Additional Fields | collection | No | {} | |
| | | | Options: 1, CREDIT |
| — Client | string | No | — | Client ID to associate the task with. |
| — Custom Value 1 | string | No | — | |
| — Custom Value 2 | string | No | — | |
| — Description | string | No | — | |
| — Project | string | No | — | Project ID. Find in Invoice Ninja under Projects. |
| Time Logs | fixedCollection | No | {} | |
| — Start Date | string | No | — | Start date/time (ISO 8601). |
| — End Date | string | No | — | End date/time (ISO 8601). Either set endDate or duration. |
| — Duration (Hours) | number | No | 0 | Duration in hours. Used instead of End Date. |
Task: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | The ID of the task. |
Task: Get
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | The ID of the task. |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | client | |
| | | | Options: client |
Task: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Options | collection | No | {} | |
| | | | Options: invoices, active, client, all |
| — Include | options | No | client | |
| | | | Options: client |
All Operations
| Parameter | Type | Required | Default | Description |
|---|
| API Version | options | No | v5 | The Invoice Ninja API version to use. v5 is recommended for new installations. |
| | | | Options: v4, v5 |
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
Every operation produces exactly one output item per input item — no operation fans out. Binary data on the input item is forwarded unchanged. What lands in the JSON depends on whether the call returned a record or a list:
| Operation | Output |
|---|
| Create, Get, Delete, Email, Match Payment (any resource) | The returned record is merged onto the input item’s JSON — the fields the item already carried survive, and a response key with the same name overwrites the item’s value. Address the record directly, e.g. {{ $json.id }}. |
| Get Many (any resource) | The whole list arrives on one item as items (an array) plus count, and the input item’s JSON is replaced — nothing it carried survives. Use a Split Out node on items to turn the list into one item per record. |
So a listing that matches nothing still produces an item, carrying items: [] and count: 0 rather than disappearing — check count before treating the branch as a hit.
Example Configuration
Create a client with a billing address and one contact:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "client",
"operation": "create",
"additionalFields": {
"clientName": "{{ $json.company }}",
"vatNumber": "GB123456789",
"website": "https://example.com"
},
"billingAddressUi": {
"billingAddressValue": {
"streetAddress": "1 High Street",
"city": "London",
"postalCode": "EC1A 1AA",
"countryCode": "826"
}
},
"contactsUi": {
"contactsValues": [
{
"firstName": "Jane",
"lastName": "Doe",
"email": "{{ $json.email }}",
"phone": "+441234567890"
}
]
}
}
}
Raise an invoice with two line items and email it straight away:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "invoice",
"operation": "create",
"additionalFields": {
"client": "{{ $json.clientId }}",
"invoiceDate": "{{ $datetime.date }}",
"dueDate": "2026-02-28",
"invoiceStatus": 2,
"emailInvoice": true,
"poNumber": "PO-4471"
},
"invoiceItemsUi": {
"invoiceItemsValues": [
{ "service": "Consulting", "description": "Discovery workshop", "cost": 850, "hours": 2 },
{ "service": "Support", "description": "Monthly retainer", "cost": 400, "hours": 1 }
]
}
}
}
List unpaid invoices — one item carrying the whole list:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "invoice",
"operation": "getAll",
"returnAll": false,
"limit": 50,
"options": {
"status": "active",
"clientStatus": "unpaid",
"include": "client"
}
}
}
Email an existing invoice:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "invoice",
"operation": "email",
"invoiceId": "{{ $json.id }}"
}
}
Record a bank-transfer payment against an invoice:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "payment",
"operation": "create",
"invoice": "{{ $json.id }}",
"amount": 1250,
"additionalFields": {
"paymentType": 1,
"transferReference": "{{ $json.reference }}",
"privateNotes": "Matched from bank feed"
}
}
}
Log a billable expense:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "expense",
"operation": "create",
"additionalFields": {
"amount": 96.5,
"billable": true,
"client": "{{ $json.clientId }}",
"expenseDate": "{{ $datetime.date }}",
"paymentType": 5,
"publicNotes": "Travel to client site"
}
}
}
Create a task with a time log:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "task",
"operation": "create",
"additionalFields": {
"client": "{{ $json.clientId }}",
"description": "Implementation call"
},
"timeLogsUi": {
"timeLogsValues": [
{ "startDate": "2026-01-15T09:00:00Z", "duration": 1.5 }
]
}
}
}
Match a payment to a bank transaction:
{
"type": "invoice_ninja",
"parameters": {
"apiVersion": "v5",
"resource": "bankTransaction",
"operation": "matchPayment",
"bankTransactionId": "{{ $json.id }}",
"paymentId": "{{ $json.paymentId }}"
}
}
Error Handling
| Mode | Behavior |
|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Invoice Ninja manages clients, invoices, payments, expenses, quotes, tasks, and bank transactions. It is ideal for comprehensive financial record keeping, offering more than just simple invoice generation. This tool produces new records, lists of existing items, and detailed information about specific financial entries.
- Lists arrive on one item. Get Many puts everything under
items with a count, so add a Split Out node on items when you want one item per record.
- Quote line items reuse the invoice key. In a JSON config, Quote Items is written as
invoiceItemsUi / invoiceItemsValues, exactly like invoice line items.
- Country codes are ISO numeric, not two-letter codes — 840 for the US, 826 for the UK.
- Payment and expense types are numeric codes. Bank Transfer is 1, Cash is 2, and the numbering skips values (there is no 3, 14 or 23).
- Pick the API version once. v5 matches current hosted and self-hosted installations; v4 changes the endpoints the node calls, and only the email operations differ in behaviour.
- Both hosted and self-hosted work — the instance URL comes from the credential, so the same node configuration works against invoicing.co or your own server.