<!-- BusyBot node reference — https://busybot.net/tools/invoice-ninja/ -->

> Node: Invoice Ninja (`invoice_ninja`) · Action · v1
> Category: Finance · Credentials: Invoice Ninja API (`invoiceNinjaApi`)
> Updated: 2026-08-16

# Invoice Ninja

> Manage clients, invoices, payments, expenses, quotes, tasks, and bank transactions in Invoice Ninja.

## 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.

**Category:** Finance  
**Tool Name:** `invoice_ninja`  
**Version:** 1

**Appearance:** Icon: `lucide-Receipt` | Color: `#000000`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Invoice Ninja API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/invoice-ninja-api/) 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

Every parameter accepts expressions, including the values inside collections, so IDs, amounts and line items can all be built from the incoming item.

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| API Version (`apiVersion`) | `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 (1–100). |

#### Bank Transaction: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Properties of the transaction to record. |
| — Amount (`amount`) | `number` | No | `0` | Transaction amount. |
| — Bank Integration ID (`bankIntegrationId`) | `string` | No | — | Bank integration ID. Find in Invoice Ninja under Banking > Integrations. |
| — Base Type (`baseType`) | `options` | No | `CREDIT` | Whether money came in or went out. |
| | | | | Options: `CREDIT` (deposit), `DEBIT` (withdrawal) |
| — Currency ID (`currencyId`) | `string` | No | — | Currency ID. |
| — Date (`date`) | `string` | No | — | Transaction date (YYYY-MM-DD). |
| — Description (`description`) | `string` | No | — | Free-text description. |

#### Bank Transaction: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Bank Transaction ID (`bankTransactionId`) | `string` | Yes | — | The ID of the bank transaction. |

#### Bank Transaction: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Bank Transaction ID (`bankTransactionId`) | `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 (1–60). _(shown when Return All is `false`)_ |

#### Bank Transaction: Match Payment

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Bank Transaction ID (`bankTransactionId`) | `string` | Yes | — | The ID of the bank transaction to match. |
| Payment ID (`paymentId`) | `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 (`additionalFields`) | `collection` | No | `{}` | Core client properties. |
| — Client Name (`clientName`) | `string` | No | — | The name of the client. |
| — ID Number (`idNumber`) | `string` | No | — | Client ID number. |
| — Private Notes (`privateNotes`) | `string` | No | — | Private notes about the client. |
| — VAT Number (`vatNumber`) | `string` | No | — | Client VAT number. |
| — Work Phone (`workPhone`) | `string` | No | — | Work phone number. |
| — Website (`website`) | `string` | No | — | Client website URL. |
| Billing Address (`billingAddressUi`) | `fixedCollection` | No | `{}` | The client's billing address. One address only. |
| — Street Address (`streetAddress`) | `string` | No | — | Street address. |
| — Apt/Suite (`aptSuite`) | `string` | No | — | Second address line. |
| — City (`city`) | `string` | No | — | City. |
| — State (`state`) | `string` | No | — | State or region. |
| — Postal Code (`postalCode`) | `string` | No | — | Postal or ZIP code. |
| — Country Code (`countryCode`) | `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 |
| Shipping Address (`shippingAddressUi`) | `fixedCollection` | No | `{}` | The client's shipping address. One address only. |
| — Street Address (`streetAddress`) | `string` | No | — | Street address. |
| — Apt/Suite (`aptSuite`) | `string` | No | — | Second address line. |
| — City (`city`) | `string` | No | — | City. |
| — State (`state`) | `string` | No | — | State or region. |
| — Postal Code (`postalCode`) | `string` | No | — | Postal or ZIP code. |
| — Country Code (`countryCode`) | `string` | No | — | ISO numeric country code. |
| Contacts (`contactsUi`) | `fixedCollection` | No | `{}` | People at the client. Add as many contacts as you need. |
| — First Name (`firstName`) | `string` | No | — | Contact's first name. |
| — Last Name (`lastName`) | `string` | No | — | Contact's last name. |
| — Email (`email`) | `string` | No | — | Contact's email address. |
| — Phone (`phone`) | `string` | No | — | Contact's phone number. |

#### Client: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Client ID (`clientId`) | `string` | Yes | — | The ID of the client. |

#### Client: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Client ID (`clientId`) | `string` | Yes | — | The ID of the client. |
| Options | `collection` | No | `{}` | Extra request options. |
| — Include (`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 (1–60). _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Filters and related data for the listing. |
| — Include (`include`) | `options` | No | `invoices` | Related data to include. |
| | | | | Options: `invoices` |
| — Status (`status`) | `options` | No | `active` | Which records to list. |
| | | | | Options: `active`, `archived`, `deleted` |
| — Created At (`createdAt`) | `string` | No | — | Filter by creation date (ISO 8601). |
| — Updated At (`updatedAt`) | `string` | No | — | Filter by update date (ISO 8601). |
| — Is Deleted (`isDeleted`) | `boolean` | No | `false` | Include deleted records. |

#### Expense: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Properties of the expense. |
| — Amount (`amount`) | `number` | No | `0` | Expense amount. |
| — Billable (`billable`) | `boolean` | No | `false` | Whether the expense should be invoiced. |
| — Client (`client`) | `string` | No | — | Client ID to associate the expense with. |
| — Custom Value 1 (`customValue1`) | `string` | No | — | Custom field 1. |
| — Custom Value 2 (`customValue2`) | `string` | No | — | Custom field 2. |
| — Category (`category`) | `string` | No | — | Expense category ID. Find in Invoice Ninja under Settings > Expense Categories. |
| — Expense Date (`expenseDate`) | `string` | No | — | Date of the expense (YYYY-MM-DD). |
| — Payment Date (`paymentDate`) | `string` | No | — | Date payment was made (YYYY-MM-DD). |
| — Payment Type (`paymentType`) | `options` | No | `1` | The type of payment. |
| | | | | Options: `1` (Bank Transfer), `2` (Cash), `4` (ACH), `5` (Visa), `6` (Mastercard), `7` (American Express), `8` (Discover), `9` (Diners), `10` (Eurocard), `11` (Nova), `12` (Credit Card Other), `13` (PayPal), `15` (Check), `16` (Carte Blanche), `17` (UnionPay), `18` (JCB), `19` (Laser), `20` (Maestro), `21` (Solo), `22` (Switch), `24` (Venmo), `27` (Alipay), `28` (Sofort), `29` (SEPA), `30` (GoCardless), `31` (Crypto), `32` (Credit), `33` (Zelle), `34` (Mollie Bank Transfer), `35` (KBC), `36` (Bancontact), `37` (iDEAL), `38` (Hosted Page), `39` (Giropay), `40` (Przelewy24), `41` (EPS), `42` (Direct Debit), `43` (BECS), `44` (ACSS), `45` (Instant Bank Pay), `46` (FPX), `47` (Klarna), `48` (Interac E-Transfer), `49` (BACS), `50` (Stripe Bank Transfer), `51` (Cash App), `52` (Pay Later) |
| — Private Notes (`privateNotes`) | `string` | No | — | Notes only staff can see. |
| — Public Notes (`publicNotes`) | `string` | No | — | Notes visible to the client. |
| — Tax Name 1 (`taxName1`) | `string` | No | — | First tax name. |
| — Tax Name 2 (`taxName2`) | `string` | No | — | Second tax name. |
| — Tax Rate 1 (`taxRate1`) | `number` | No | `0` | First tax rate. |
| — Tax Rate 2 (`taxRate2`) | `number` | No | `0` | Second tax rate. |
| — Transaction Reference (`transactionReference`) | `string` | No | — | Reference for the transaction. |
| — Vendor (`vendor`) | `string` | No | — | Vendor ID. Find in Invoice Ninja under Vendors. |

#### Expense: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Expense ID (`expenseId`) | `string` | Yes | — | The ID of the expense. |

#### Expense: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Expense ID (`expenseId`) | `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 (1–60). _(shown when Return All is `false`)_ |

#### Invoice: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Invoice header properties. |
| — Client (`client`) | `string` | No | — | Client ID. Find in Invoice Ninja under client settings. |
| — Auto Bill (`autoBill`) | `boolean` | No | `false` | Charge the client's stored payment method automatically. |
| — Custom Value 1 (`customValue1`) | `number` | No | `0` | Custom field 1. |
| — Custom Value 2 (`customValue2`) | `number` | No | `0` | Custom field 2. |
| — Discount (`discount`) | `string` | No | — | Discount to apply. |
| — Due Date (`dueDate`) | `string` | No | — | Due date (ISO 8601 or YYYY-MM-DD). |
| — Email (`email`) | `string` | No | — | Email address to associate with the invoice. |
| — Email Invoice (`emailInvoice`) | `boolean` | No | `false` | Whether to email the invoice upon creation. |
| — Invoice Date (`invoiceDate`) | `string` | No | — | Invoice date (ISO 8601 or YYYY-MM-DD). |
| — Invoice Number (`invoiceNumber`) | `string` | No | — | Override the generated invoice number. |
| — Invoice Status (`invoiceStatus`) | `options` | No | `1` | Status the invoice is created with. |
| | | | | Options: `1` (Draft), `2` (Sent) |
| — Is Amount Discount (`isAmountDiscount`) | `boolean` | No | `false` | Treat the discount as an amount rather than a percentage. |
| — Mark Sent (`markSent`) | `boolean` | No | `false` | Mark the invoice as sent. |
| — Paid (`paid`) | `number` | No | `0` | Amount already paid. |
| — Partial (`partial`) | `number` | No | `0` | Partial/deposit amount. |
| — Partial Due Date (`partialDueDate`) | `string` | No | — | Due date for the partial amount. |
| — PO Number (`poNumber`) | `string` | No | — | Client's purchase order number. |
| — Private Notes (`privateNotes`) | `string` | No | — | Notes only staff can see. |
| — Public Notes (`publicNotes`) | `string` | No | — | Notes visible to the client. |
| — Tax Name 1 (`taxName1`) | `string` | No | — | First tax name. |
| — Tax Name 2 (`taxName2`) | `string` | No | — | Second tax name. |
| — Tax Rate 1 (`taxRate1`) | `number` | No | `0` | First tax rate. |
| — Tax Rate 2 (`taxRate2`) | `number` | No | `0` | Second tax rate. |
| Invoice Items (`invoiceItemsUi`) | `fixedCollection` | No | `{}` | Line items. Add as many as you need. |
| — Cost (`cost`) | `number` | No | `0` | Unit cost. |
| — Description (`description`) | `string` | No | — | Line description. |
| — Service (`service`) | `string` | No | — | Service or product name. |
| — Hours/Quantity (`hours`) | `number` | No | `0` | Quantity or hours. |
| — Tax Name 1 (`taxName1`) | `string` | No | — | First tax name for the line. |
| — Tax Name 2 (`taxName2`) | `string` | No | — | Second tax name for the line. |
| — Tax Rate 1 (`taxRate1`) | `number` | No | `0` | First tax rate for the line. |
| — Tax Rate 2 (`taxRate2`) | `number` | No | `0` | Second tax rate for the line. |

#### Invoice: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID (`invoiceId`) | `string` | Yes | — | The ID of the invoice. |

#### Invoice: Email

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID (`invoiceId`) | `string` | Yes | — | The ID of the invoice. |

#### Invoice: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID (`invoiceId`) | `string` | Yes | — | The ID of the invoice. |
| Options | `collection` | No | `{}` | Extra request options. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | 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 (1–60). _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Filters and related data for the listing. |
| — Invoice Number (`invoiceNumber`) | `string` | No | — | Find a specific invoice number. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | Options: `client` |
| — Status (`status`) | `options` | No | `active` | Which records to list. |
| | | | | Options: `active`, `archived`, `deleted` |
| — Created At (`createdAt`) | `string` | No | — | Filter by creation date (ISO 8601). |
| — Updated At (`updatedAt`) | `string` | No | — | Filter by update date (ISO 8601). |
| — Is Deleted (`isDeleted`) | `boolean` | No | `false` | Include deleted records. |
| — Client Status (`clientStatus`) | `options` | No | `all` | Filter by payment state. |
| | | | | Options: `all`, `paid`, `unpaid`, `overdue` |

#### Payment: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice (`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 (`additionalFields`) | `collection` | No | `{}` | Optional payment properties. |
| — Payment Type (`paymentType`) | `options` | No | `1` | The type of payment. |
| | | | | Options: `1` (Bank Transfer), `2` (Cash), `4` (ACH), `5` (Visa), `6` (Mastercard), `7` (American Express), `8` (Discover), `9` (Diners), `10` (Eurocard), `11` (Nova), `12` (Credit Card Other), `13` (PayPal), `15` (Check), `16` (Carte Blanche), `17` (UnionPay), `18` (JCB), `19` (Laser), `20` (Maestro), `21` (Solo), `22` (Switch), `24` (Venmo), `27` (Alipay), `28` (Sofort), `29` (SEPA), `30` (GoCardless), `31` (Crypto), `32` (Credit), `33` (Zelle), `34` (Mollie Bank Transfer), `35` (KBC), `36` (Bancontact), `37` (iDEAL), `38` (Hosted Page), `39` (Giropay), `40` (Przelewy24), `41` (EPS), `42` (Direct Debit), `43` (BECS), `44` (ACSS), `45` (Instant Bank Pay), `46` (FPX), `47` (Klarna), `48` (Interac E-Transfer), `49` (BACS), `50` (Stripe Bank Transfer), `51` (Cash App), `52` (Pay Later) |
| — Transfer Reference (`transferReference`) | `string` | No | — | Bank or gateway reference for the transfer. |
| — Private Notes (`privateNotes`) | `string` | No | — | Notes only staff can see. |

#### Payment: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Payment ID (`paymentId`) | `string` | Yes | — | The ID of the payment. |

#### Payment: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Payment ID (`paymentId`) | `string` | Yes | — | The ID of the payment. |
| Options | `collection` | No | `{}` | Extra request options. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | 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 (1–60). _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Filters and related data for the listing. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | Options: `client` |
| — Status (`status`) | `options` | No | `active` | Which records to list. |
| | | | | Options: `active`, `archived`, `deleted` |
| — Created At (`createdAt`) | `string` | No | — | Filter by creation date (ISO 8601). |
| — Updated At (`updatedAt`) | `string` | No | — | Filter by update date (ISO 8601). |
| — Is Deleted (`isDeleted`) | `boolean` | No | `false` | Include deleted records. |

#### Quote: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Quote header properties. |
| — Client (`client`) | `string` | No | — | Client ID. |
| — Auto Bill (`autoBill`) | `boolean` | No | `false` | Charge the client's stored payment method automatically. |
| — Custom Value 1 (`customValue1`) | `number` | No | `0` | Custom field 1. |
| — Custom Value 2 (`customValue2`) | `number` | No | `0` | Custom field 2. |
| — Discount (`discount`) | `string` | No | — | Discount to apply. |
| — Due Date (`dueDate`) | `string` | No | — | Due date. |
| — Email (`email`) | `string` | No | — | Email address to associate with the quote. |
| — Email Quote (`emailQuote`) | `boolean` | No | `false` | Whether to email the quote upon creation. |
| — Quote Date (`quoteDate`) | `string` | No | — | Quote date. |
| — Quote Number (`quoteNumber`) | `string` | No | — | Override the generated quote number. |
| — Quote Status (`quoteStatus`) | `options` | No | `1` | Status the quote is created with. |
| | | | | Options: `1` (Draft), `2` (Sent) |
| — Is Amount Discount (`isAmountDiscount`) | `boolean` | No | `false` | Treat the discount as an amount rather than a percentage. |
| — Paid (`paid`) | `number` | No | `0` | Amount already paid. |
| — Partial (`partial`) | `number` | No | `0` | Partial/deposit amount. |
| — Partial Due Date (`partialDueDate`) | `string` | No | — | Due date for the partial amount. |
| — PO Number (`poNumber`) | `string` | No | — | Client's purchase order number. |
| — Private Notes (`privateNotes`) | `string` | No | — | Notes only staff can see. |
| — Public Notes (`publicNotes`) | `string` | No | — | Notes visible to the client. |
| — Tax Name 1 (`taxName1`) | `string` | No | — | First tax name. |
| — Tax Name 2 (`taxName2`) | `string` | No | — | Second tax name. |
| — Tax Rate 1 (`taxRate1`) | `number` | No | `0` | First tax rate. |
| — Tax Rate 2 (`taxRate2`) | `number` | No | `0` | Second tax rate. |
| Quote Items (`invoiceItemsUi`) | `fixedCollection` | No | `{}` | Line items. Add as many as you need. Stored under the same key as invoice line items. |
| — Cost (`cost`) | `number` | No | `0` | Unit cost. |
| — Description (`description`) | `string` | No | — | Line description. |
| — Service (`service`) | `string` | No | — | Service or product name. |
| — Hours/Quantity (`hours`) | `number` | No | `0` | Quantity or hours. |
| — Tax Name 1 (`taxName1`) | `string` | No | — | First tax name for the line. |
| — Tax Name 2 (`taxName2`) | `string` | No | — | Second tax name for the line. |
| — Tax Rate 1 (`taxRate1`) | `number` | No | `0` | First tax rate for the line. |
| — Tax Rate 2 (`taxRate2`) | `number` | No | `0` | Second tax rate for the line. |

#### Quote: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Quote ID (`quoteId`) | `string` | Yes | — | The ID of the quote. |

#### Quote: Email

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Quote ID (`quoteId`) | `string` | Yes | — | The ID of the quote. |

#### Quote: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Quote ID (`quoteId`) | `string` | Yes | — | The ID of the quote. |
| Options | `collection` | No | `{}` | Extra request options. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | 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 (1–60). _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Filters and related data for the listing. |
| — Quote Number (`quoteNumber`) | `string` | No | — | Find a specific quote number. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | Options: `client` |
| — Status (`status`) | `options` | No | `active` | Which records to list. |
| | | | | Options: `active`, `archived`, `deleted` |
| — Created At (`createdAt`) | `string` | No | — | Filter by creation date (ISO 8601). |
| — Updated At (`updatedAt`) | `string` | No | — | Filter by update date (ISO 8601). |
| — Is Deleted (`isDeleted`) | `boolean` | No | `false` | Include deleted records. |

#### Task: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Task properties. |
| — Client (`client`) | `string` | No | — | Client ID to associate the task with. |
| — Custom Value 1 (`customValue1`) | `string` | No | — | Custom field 1. |
| — Custom Value 2 (`customValue2`) | `string` | No | — | Custom field 2. |
| — Description (`description`) | `string` | No | — | What the task covers. |
| — Project (`project`) | `string` | No | — | Project ID. Find in Invoice Ninja under Projects. |
| Time Logs (`timeLogsUi`) | `fixedCollection` | No | `{}` | Time entries for the task. Add as many as you need. |
| — Start Date (`startDate`) | `string` | No | — | Start date/time (ISO 8601). |
| — End Date (`endDate`) | `string` | No | — | End date/time (ISO 8601). Either set endDate or duration. |
| — Duration (Hours) (`duration`) | `number` | No | `0` | Duration in hours. Used instead of End Date. |

#### Task: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Task ID (`taskId`) | `string` | Yes | — | The ID of the task. |

#### Task: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Task ID (`taskId`) | `string` | Yes | — | The ID of the task. |
| Options | `collection` | No | `{}` | Extra request options. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | 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 (1–60). _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Related data for the listing. |
| — Include (`include`) | `options` | No | `client` | Related data to include. |
| | | | | Options: `client` |

## 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.

## Usage Examples

- Create a new client in Invoice Ninja
- List all unpaid invoices
- Create a payment for an invoice
- Email an invoice to a client
- Create a new expense record
- Get all quotes with status active
- Create a task with time logs
- Match a payment to a bank transaction

## Example Configuration

Create a client with a billing address and one contact:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "type": "invoice_ninja",
  "parameters": {
    "apiVersion": "v5",
    "resource": "invoice",
    "operation": "email",
    "invoiceId": "{{ $json.id }}"
  }
}
```

Record a bank-transfer payment against an invoice:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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

Use Invoice Ninja to create and manage clients, invoices, payments, expenses, quotes, tasks, and bank transactions via the Invoice Ninja API.

- **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.