Skip to main content

Invoice Ninja

Invoice Ninja is an invoicing and project management platform for small businesses and freelancers. Its REST API exposes clients, products, invoices, quotes, payments, projects, tasks, and expenses, letting you read those records for reporting and analytics or write new records back into your account.

Invoice Ninja icon

Power end-to-end data operations for your Invoice Ninja API with Nexla. Our bi-directional Invoice Ninja connector is purpose-built for Invoice Ninja, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Invoice Ninja or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Invoice Ninja workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Before creating an Invoice Ninja credential, you need an API token and the base URL of your Invoice Ninja instance. Invoice Ninja authenticates API requests with a token sent in the X-API-TOKEN header, and all requests must be made over HTTPS.

To obtain your API token, follow these steps:

  1. Sign in to your Invoice Ninja account. The hosted service is available at https://invoicing.co; self-hosted instances run on your own domain.

  2. Open Settings from the left navigation.

  3. Under Advanced Settings, click Account Management, then open the Integrations section and locate API Tokens.

  4. Click the Add Token (+) button in the upper-right corner of the API Tokens page.

  5. Enter a descriptive name for the token (for example, "Nexla Integration"), then click Save.

  6. Copy the generated token value and store it securely. This is the value you will supply as the API Key Value in your Nexla credential.

Determine the Base URL for your instance. For the Invoice Ninja hosted service, the base URL is https://invoicing.co. For a self-hosted deployment, use the HTTPS URL of your own server (for example, https://invoices.example.com). Nexla appends the API paths (such as /api/v1/clients) to this base URL.

The header name changed between major versions: Invoice Ninja v5 uses X-API-TOKEN, whereas v4 used X-Ninja-Token. This connector uses the v5 X-API-TOKEN header. If your token is compromised, delete it from the API Tokens page and generate a new one.

For complete details on authentication and available endpoints, see the Invoice Ninja API Reference and the Invoice Ninja Developer Guide.

Authenticate

Credentials required

FieldRequiredSecretDescription
API Key ValueYesNoAn encoded string value used as a secret token to authenticate API requests
Base URLYesNoThe base URL for the Invoice Ninja API.

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter your Invoice Ninja API token in the API Key Value field. This is the token you generated on the API Tokens page in Prerequisites. It is sent in the X-API-TOKEN header on every API request and must be kept confidential.

  4. Enter your instance URL in the Base URL field. For the hosted service, use https://invoicing.co; for a self-hosted deployment, use the HTTPS URL of your own server.

  5. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Invoice Ninja connector tile, then select the credential that will be used to connect to the Invoice Ninja instance, and click Next; or, create a new Invoice Ninja credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Invoice Ninja endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

[Rest API] List Clients

Returns a list of all clients in the Invoice Ninja account.

  • This endpoint reads client records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Products

Returns a list of all products in the Invoice Ninja account.

  • This endpoint reads product/service catalog records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Invoices

Returns a list of all invoices in the Invoice Ninja account.

  • This endpoint reads invoice records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Recurring Invoices

Returns a list of all recurring invoices in the Invoice Ninja account.

  • This endpoint reads recurring-invoice records using offset-based pagination, so Nexla fetches subsequent pages until no further records are returned.

[Rest API] List Payments

Returns a list of all payments recorded in the Invoice Ninja account.

  • This endpoint reads payment records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Quotes

Returns a list of all quotes in the Invoice Ninja account.

  • This endpoint reads quote/estimate records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Credits

Returns a list of all credit notes in the Invoice Ninja account.

  • This endpoint reads credit-note records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Projects

Returns a list of all projects in the Invoice Ninja account.

  • This endpoint reads project records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Tasks

Returns a list of all tasks in the Invoice Ninja account.

  • This endpoint reads task records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Vendors

Returns a list of all vendors in the Invoice Ninja account.

  • This endpoint reads vendor records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Purchase Orders

Returns a list of all purchase orders in the account.

  • This endpoint reads purchase-order records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Expenses

Returns a list of all expenses in the account.

  • This endpoint reads expense records and paginates automatically, so Nexla fetches subsequent pages until all records have been retrieved.

[Rest API] List Recurring Expenses

Returns a list of all recurring expenses in the account.

  • This endpoint reads recurring-expense records using offset-based pagination, so Nexla fetches subsequent pages until no further records are returned.

[Rest API] List Bank Transactions

Returns a list of all bank transactions in the account.

  • This endpoint reads bank-transaction records using offset-based pagination, so Nexla fetches subsequent pages until no further records are returned.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Invoice Ninja data sources can also be manually configured to ingest data from any valid Invoice Ninja API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Invoice Ninja data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Invoice Ninja destination, and select the Send to Destination option from the menu. Select the Invoice Ninja connector from the list of available destination connectors, then select the credential that will be used to connect to the Invoice Ninja account, and click Next; or, create a new Invoice Ninja credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Invoice Ninja endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

[Rest API] Create a new client record

Create a new client record.

  • Each record from your Nexset is sent as a JSON request body to create a new client. The body should contain the client data in the format required by the Invoice Ninja API.

[Rest API] Create a new invoice for a client

Create a new invoice for a client.

  • Each record from your Nexset is sent as a JSON request body to create a new invoice. The body should contain the invoice data, including client reference and line items, in the format required by the Invoice Ninja API.

[Rest API] Record a payment against an invoice

Record a payment against an invoice.

  • Each record from your Nexset is sent as a JSON request body to record a payment. The body should contain the payment data in the format required by the Invoice Ninja API.

[Rest API] Update client details (name, contacts, billing address)

Update client details (name, contacts, billing address).

  • Provide the Client ID of the record to update. Each record from your Nexset is sent as a JSON request body to update the matching client.

[Rest API] Update an existing invoice (amounts, line items, status)

Update an existing invoice (amounts, line items, status).

  • Provide the Invoice ID of the record to update. Each record from your Nexset is sent as a JSON request body to update the matching invoice.

[Rest API] Create a new expense entry

Create a new expense entry.

  • Each record from your Nexset is sent as a JSON request body to create a new expense. The body should contain the expense data in the format required by the Invoice Ninja API.

[Rest API] Create or import product/service catalog entries

Create or import product/service catalog entries.

  • Each record from your Nexset is sent as a JSON request body to create a new product. The body should contain the product data in the format required by the Invoice Ninja API.

[Rest API] Create a project record

Create a project record.

  • Each record from your Nexset is sent as a JSON request body to create a new project. The body should contain the project data in the format required by the Invoice Ninja API.

[Rest API] Create a purchase order issued to a vendor

Create a purchase order issued to a vendor.

  • Each record from your Nexset is sent as a JSON request body to create a new purchase order. The body should contain the purchase-order data, including vendor reference, in the format required by the Invoice Ninja API.

[Rest API] Create a quote/estimate for a client

Create a quote/estimate for a client.

  • Each record from your Nexset is sent as a JSON request body to create a new quote. The body should contain the quote data, including client reference and line items, in the format required by the Invoice Ninja API.

[Rest API] Create a billable task linked to a project

Create a billable task linked to a project.

  • Each record from your Nexset is sent as a JSON request body to create a new task. The body should contain the task data, including its project reference, in the format required by the Invoice Ninja API.

[Rest API] Delete or archive an invoice

Delete or archive an invoice.

  • Provide the Invoice ID of the record to remove. Nexla issues a delete request for the matching invoice.

Manual configuration

Invoice Ninja destinations can also be manually configured to send data to any valid Invoice Ninja API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

Invoice Ninja APIs expect JSON format for create and update operations. For update and delete operations, include the ID of the object to be modified at the end of the URL.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Invoice Ninja endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to the Invoice Ninja endpoint until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.