Reference · Tools

Invoice Ninja

Manage invoicing, billing, and financial data via the Invoice Ninja API. Create and manage clients, invoices, payments, expenses, quotes, tasks, and bank transactions.

Action Finance v1

The Invoice Ninja node manages the billing stack — clients, invoices, payments, expenses, quotes, tasks and bank transactions — through the Invoice Ninja API. A typical build is creating an invoice from completed project tasks each month and recording the payment when it clears.

Node type
Action
Parameters
58
Outputs
Output, Error
Credentials
Invoice Ninja API

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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Invoice Ninja API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Bank TransactionbankTransaction
Clientclient
Expenseexpense
Invoiceinvoice
Paymentpayment
Quotequote
Tasktask

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.

ResourceOperationValueDescription
Bank TransactionCreatecreateRecord a bank transaction
Bank TransactionDeletedeleteDelete a bank transaction
Bank TransactionGetgetGet a bank transaction
Bank TransactionGet ManygetAllList bank transactions
Bank TransactionMatch PaymentmatchPaymentMatch a payment to a bank transaction
ClientCreatecreateCreate a client
ClientDeletedeleteDelete a client
ClientGetgetGet a client
ClientGet ManygetAllList clients
ExpenseCreatecreateCreate an expense
ExpenseDeletedeleteDelete an expense
ExpenseGetgetGet an expense
ExpenseGet ManygetAllList expenses
InvoiceCreatecreateCreate an invoice
InvoiceDeletedeleteDelete an invoice
InvoiceEmailemailEmail an invoice to the client
InvoiceGetgetGet an invoice
InvoiceGet ManygetAllList invoices
PaymentCreatecreateRecord a payment against an invoice
PaymentDeletedeleteDelete a payment
PaymentGetgetGet a payment
PaymentGet ManygetAllList payments
QuoteCreatecreateCreate a quote
QuoteDeletedeleteDelete a quote
QuoteEmailemailEmail a quote to the client
QuoteGetgetGet a quote
QuoteGet ManygetAllList quotes
TaskCreatecreateCreate a task
TaskDeletedeleteDelete a task
TaskGetgetGet a task
TaskGet ManygetAllList 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

ParameterTypeRequiredDefaultDescription
API Version (apiVersion)optionsNov5The Invoice Ninja API version to use. v5 is recommended for new installations.
Options: v4, v5
Max ConcurrencynumberNo10Maximum number of items to process concurrently (1–100).

Bank Transaction: Create

ParameterTypeRequiredDefaultDescription
Additional Fields (additionalFields)collectionNo{}Properties of the transaction to record.
— Amount (amount)numberNo0Transaction amount.
— Bank Integration ID (bankIntegrationId)stringNoBank integration ID. Find in Invoice Ninja under Banking > Integrations.
— Base Type (baseType)optionsNoCREDITWhether money came in or went out.
Options: CREDIT (deposit), DEBIT (withdrawal)
— Currency ID (currencyId)stringNoCurrency ID.
— Date (date)stringNoTransaction date (YYYY-MM-DD).
— Description (description)stringNoFree-text description.

Bank Transaction: Delete

ParameterTypeRequiredDefaultDescription
Bank Transaction ID (bankTransactionId)stringYesThe ID of the bank transaction.

Bank Transaction: Get

ParameterTypeRequiredDefaultDescription
Bank Transaction ID (bankTransactionId)stringYesThe ID of the bank transaction.

Bank Transaction: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return (1–60). (shown when Return All is false)

Bank Transaction: Match Payment

ParameterTypeRequiredDefaultDescription
Bank Transaction ID (bankTransactionId)stringYesThe ID of the bank transaction to match.
Payment ID (paymentId)stringYesThe payment ID to match to the bank transaction. In Invoice Ninja, find matchable payments under Payments.

Client: Create

ParameterTypeRequiredDefaultDescription
Additional Fields (additionalFields)collectionNo{}Core client properties.
— Client Name (clientName)stringNoThe name of the client.
— ID Number (idNumber)stringNoClient ID number.
— Private Notes (privateNotes)stringNoPrivate notes about the client.
— VAT Number (vatNumber)stringNoClient VAT number.
— Work Phone (workPhone)stringNoWork phone number.
— Website (website)stringNoClient website URL.
Billing Address (billingAddressUi)fixedCollectionNo{}The client’s billing address. One address only.
— Street Address (streetAddress)stringNoStreet address.
— Apt/Suite (aptSuite)stringNoSecond address line.
— City (city)stringNoCity.
— State (state)stringNoState or region.
— Postal Code (postalCode)stringNoPostal or ZIP code.
— Country Code (countryCode)stringNoISO 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)fixedCollectionNo{}The client’s shipping address. One address only.
— Street Address (streetAddress)stringNoStreet address.
— Apt/Suite (aptSuite)stringNoSecond address line.
— City (city)stringNoCity.
— State (state)stringNoState or region.
— Postal Code (postalCode)stringNoPostal or ZIP code.
— Country Code (countryCode)stringNoISO numeric country code.
Contacts (contactsUi)fixedCollectionNo{}People at the client. Add as many contacts as you need.
— First Name (firstName)stringNoContact’s first name.
— Last Name (lastName)stringNoContact’s last name.
— Email (email)stringNoContact’s email address.
— Phone (phone)stringNoContact’s phone number.

Client: Delete

ParameterTypeRequiredDefaultDescription
Client ID (clientId)stringYesThe ID of the client.

Client: Get

ParameterTypeRequiredDefaultDescription
Client ID (clientId)stringYesThe ID of the client.
OptionscollectionNo{}Extra request options.
— Include (include)optionsNoinvoicesRelated data to include.
Options: invoices

Client: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return (1–60). (shown when Return All is false)
OptionscollectionNo{}Filters and related data for the listing.
— Include (include)optionsNoinvoicesRelated data to include.
Options: invoices
— Status (status)optionsNoactiveWhich records to list.
Options: active, archived, deleted
— Created At (createdAt)stringNoFilter by creation date (ISO 8601).
— Updated At (updatedAt)stringNoFilter by update date (ISO 8601).
— Is Deleted (isDeleted)booleanNofalseInclude deleted records.

Expense: Create

ParameterTypeRequiredDefaultDescription
Additional Fields (additionalFields)collectionNo{}Properties of the expense.
— Amount (amount)numberNo0Expense amount.
— Billable (billable)booleanNofalseWhether the expense should be invoiced.
— Client (client)stringNoClient ID to associate the expense with.
— Custom Value 1 (customValue1)stringNoCustom field 1.
— Custom Value 2 (customValue2)stringNoCustom field 2.
— Category (category)stringNoExpense category ID. Find in Invoice Ninja under Settings > Expense Categories.
— Expense Date (expenseDate)stringNoDate of the expense (YYYY-MM-DD).
— Payment Date (paymentDate)stringNoDate payment was made (YYYY-MM-DD).
— Payment Type (paymentType)optionsNo1The 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)stringNoNotes only staff can see.
— Public Notes (publicNotes)stringNoNotes visible to the client.
— Tax Name 1 (taxName1)stringNoFirst tax name.
— Tax Name 2 (taxName2)stringNoSecond tax name.
— Tax Rate 1 (taxRate1)numberNo0First tax rate.
— Tax Rate 2 (taxRate2)numberNo0Second tax rate.
— Transaction Reference (transactionReference)stringNoReference for the transaction.
— Vendor (vendor)stringNoVendor ID. Find in Invoice Ninja under Vendors.

Expense: Delete

ParameterTypeRequiredDefaultDescription
Expense ID (expenseId)stringYesThe ID of the expense.

Expense: Get

ParameterTypeRequiredDefaultDescription
Expense ID (expenseId)stringYesThe ID of the expense.

Expense: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return (1–60). (shown when Return All is false)

Invoice: Create

ParameterTypeRequiredDefaultDescription
Additional Fields (additionalFields)collectionNo{}Invoice header properties.
— Client (client)stringNoClient ID. Find in Invoice Ninja under client settings.
— Auto Bill (autoBill)booleanNofalseCharge the client’s stored payment method automatically.
— Custom Value 1 (customValue1)numberNo0Custom field 1.
— Custom Value 2 (customValue2)numberNo0Custom field 2.
— Discount (discount)stringNoDiscount to apply.
— Due Date (dueDate)stringNoDue date (ISO 8601 or YYYY-MM-DD).
— Email (email)stringNoEmail address to associate with the invoice.
— Email Invoice (emailInvoice)booleanNofalseWhether to email the invoice upon creation.
— Invoice Date (invoiceDate)stringNoInvoice date (ISO 8601 or YYYY-MM-DD).
— Invoice Number (invoiceNumber)stringNoOverride the generated invoice number.
— Invoice Status (invoiceStatus)optionsNo1Status the invoice is created with.
Options: 1 (Draft), 2 (Sent)
— Is Amount Discount (isAmountDiscount)booleanNofalseTreat the discount as an amount rather than a percentage.
— Mark Sent (markSent)booleanNofalseMark the invoice as sent.
— Paid (paid)numberNo0Amount already paid.
— Partial (partial)numberNo0Partial/deposit amount.
— Partial Due Date (partialDueDate)stringNoDue date for the partial amount.
— PO Number (poNumber)stringNoClient’s purchase order number.
— Private Notes (privateNotes)stringNoNotes only staff can see.
— Public Notes (publicNotes)stringNoNotes visible to the client.
— Tax Name 1 (taxName1)stringNoFirst tax name.
— Tax Name 2 (taxName2)stringNoSecond tax name.
— Tax Rate 1 (taxRate1)numberNo0First tax rate.
— Tax Rate 2 (taxRate2)numberNo0Second tax rate.
Invoice Items (invoiceItemsUi)fixedCollectionNo{}Line items. Add as many as you need.
— Cost (cost)numberNo0Unit cost.
— Description (description)stringNoLine description.
— Service (service)stringNoService or product name.
— Hours/Quantity (hours)numberNo0Quantity or hours.
— Tax Name 1 (taxName1)stringNoFirst tax name for the line.
— Tax Name 2 (taxName2)stringNoSecond tax name for the line.
— Tax Rate 1 (taxRate1)numberNo0First tax rate for the line.
— Tax Rate 2 (taxRate2)numberNo0Second tax rate for the line.

Invoice: Delete

ParameterTypeRequiredDefaultDescription
Invoice ID (invoiceId)stringYesThe ID of the invoice.

Invoice: Email

ParameterTypeRequiredDefaultDescription
Invoice ID (invoiceId)stringYesThe ID of the invoice.

Invoice: Get

ParameterTypeRequiredDefaultDescription
Invoice ID (invoiceId)stringYesThe ID of the invoice.
OptionscollectionNo{}Extra request options.
— Include (include)optionsNoclientRelated data to include.
Options: client

Invoice: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return (1–60). (shown when Return All is false)
OptionscollectionNo{}Filters and related data for the listing.
— Invoice Number (invoiceNumber)stringNoFind a specific invoice number.
— Include (include)optionsNoclientRelated data to include.
Options: client
— Status (status)optionsNoactiveWhich records to list.
Options: active, archived, deleted
— Created At (createdAt)stringNoFilter by creation date (ISO 8601).
— Updated At (updatedAt)stringNoFilter by update date (ISO 8601).
— Is Deleted (isDeleted)booleanNofalseInclude deleted records.
— Client Status (clientStatus)optionsNoallFilter by payment state.
Options: all, paid, unpaid, overdue

Payment: Create

ParameterTypeRequiredDefaultDescription
Invoice (invoice)stringYesInvoice ID to apply the payment to. Find in Invoice Ninja under invoice details.
AmountnumberNo0The payment amount.
Additional Fields (additionalFields)collectionNo{}Optional payment properties.
— Payment Type (paymentType)optionsNo1The 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)stringNoBank or gateway reference for the transfer.
— Private Notes (privateNotes)stringNoNotes only staff can see.

Payment: Delete

ParameterTypeRequiredDefaultDescription
Payment ID (paymentId)stringYesThe ID of the payment.

Payment: Get

ParameterTypeRequiredDefaultDescription
Payment ID (paymentId)stringYesThe ID of the payment.
OptionscollectionNo{}Extra request options.
— Include (include)optionsNoclientRelated data to include.
Options: client

Payment: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return (1–60). (shown when Return All is false)
OptionscollectionNo{}Filters and related data for the listing.
— Include (include)optionsNoclientRelated data to include.
Options: client
— Status (status)optionsNoactiveWhich records to list.
Options: active, archived, deleted
— Created At (createdAt)stringNoFilter by creation date (ISO 8601).
— Updated At (updatedAt)stringNoFilter by update date (ISO 8601).
— Is Deleted (isDeleted)booleanNofalseInclude deleted records.

Quote: Create

ParameterTypeRequiredDefaultDescription
Additional Fields (additionalFields)collectionNo{}Quote header properties.
— Client (client)stringNoClient ID.
— Auto Bill (autoBill)booleanNofalseCharge the client’s stored payment method automatically.
— Custom Value 1 (customValue1)numberNo0Custom field 1.
— Custom Value 2 (customValue2)numberNo0Custom field 2.
— Discount (discount)stringNoDiscount to apply.
— Due Date (dueDate)stringNoDue date.
— Email (email)stringNoEmail address to associate with the quote.
— Email Quote (emailQuote)booleanNofalseWhether to email the quote upon creation.
— Quote Date (quoteDate)stringNoQuote date.
— Quote Number (quoteNumber)stringNoOverride the generated quote number.
— Quote Status (quoteStatus)optionsNo1Status the quote is created with.
Options: 1 (Draft), 2 (Sent)
— Is Amount Discount (isAmountDiscount)booleanNofalseTreat the discount as an amount rather than a percentage.
— Paid (paid)numberNo0Amount already paid.
— Partial (partial)numberNo0Partial/deposit amount.
— Partial Due Date (partialDueDate)stringNoDue date for the partial amount.
— PO Number (poNumber)stringNoClient’s purchase order number.
— Private Notes (privateNotes)stringNoNotes only staff can see.
— Public Notes (publicNotes)stringNoNotes visible to the client.
— Tax Name 1 (taxName1)stringNoFirst tax name.
— Tax Name 2 (taxName2)stringNoSecond tax name.
— Tax Rate 1 (taxRate1)numberNo0First tax rate.
— Tax Rate 2 (taxRate2)numberNo0Second tax rate.
Quote Items (invoiceItemsUi)fixedCollectionNo{}Line items. Add as many as you need. Stored under the same key as invoice line items.
— Cost (cost)numberNo0Unit cost.
— Description (description)stringNoLine description.
— Service (service)stringNoService or product name.
— Hours/Quantity (hours)numberNo0Quantity or hours.
— Tax Name 1 (taxName1)stringNoFirst tax name for the line.
— Tax Name 2 (taxName2)stringNoSecond tax name for the line.
— Tax Rate 1 (taxRate1)numberNo0First tax rate for the line.
— Tax Rate 2 (taxRate2)numberNo0Second tax rate for the line.

Quote: Delete

ParameterTypeRequiredDefaultDescription
Quote ID (quoteId)stringYesThe ID of the quote.

Quote: Email

ParameterTypeRequiredDefaultDescription
Quote ID (quoteId)stringYesThe ID of the quote.

Quote: Get

ParameterTypeRequiredDefaultDescription
Quote ID (quoteId)stringYesThe ID of the quote.
OptionscollectionNo{}Extra request options.
— Include (include)optionsNoclientRelated data to include.
Options: client

Quote: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return (1–60). (shown when Return All is false)
OptionscollectionNo{}Filters and related data for the listing.
— Quote Number (quoteNumber)stringNoFind a specific quote number.
— Include (include)optionsNoclientRelated data to include.
Options: client
— Status (status)optionsNoactiveWhich records to list.
Options: active, archived, deleted
— Created At (createdAt)stringNoFilter by creation date (ISO 8601).
— Updated At (updatedAt)stringNoFilter by update date (ISO 8601).
— Is Deleted (isDeleted)booleanNofalseInclude deleted records.

Task: Create

ParameterTypeRequiredDefaultDescription
Additional Fields (additionalFields)collectionNo{}Task properties.
— Client (client)stringNoClient ID to associate the task with.
— Custom Value 1 (customValue1)stringNoCustom field 1.
— Custom Value 2 (customValue2)stringNoCustom field 2.
— Description (description)stringNoWhat the task covers.
— Project (project)stringNoProject ID. Find in Invoice Ninja under Projects.
Time Logs (timeLogsUi)fixedCollectionNo{}Time entries for the task. Add as many as you need.
— Start Date (startDate)stringNoStart date/time (ISO 8601).
— End Date (endDate)stringNoEnd date/time (ISO 8601). Either set endDate or duration.
— Duration (Hours) (duration)numberNo0Duration in hours. Used instead of End Date.

Task: Delete

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.

Task: Get

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.
OptionscollectionNo{}Extra request options.
— Include (include)optionsNoclientRelated data to include.
Options: client

Task: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return (1–60). (shown when Return All is false)
OptionscollectionNo{}Related data for the listing.
— Include (include)optionsNoclientRelated 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:

OperationOutput
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:

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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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.

Frequently asked questions

Why does Get Many return one item instead of many?

Lists arrive on a single item with everything under `items` and a `count`. Add a Split Out node on `items` when you want one workflow item per record.

Why do quote line items use an invoice key?

Quote Items is written as `invoiceItemsUi` / `invoiceItemsValues` in a JSON configuration, exactly like invoice line items — the same underlying structure serves both.

What format do country codes take?

ISO numeric, not two-letter codes — 840 for the United States, 826 for the United Kingdom. Passing `US` will not match.

How are payment and expense types specified?

Numerically. Look up the numeric type in Invoice Ninja rather than passing the label you see in its interface.

Build with the Invoice Ninja node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Invoice Ninja API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.