# Invoice Ninja

> Manage your Invoice Ninja billing: clients, invoices, quotes, payments, products and expenses.

App · Accounting & Finance · 20 actions. Web page: https://docs.lodol.com/docs/integrations/invoiceninja

## Actions

### Act on invoices

Mark invoices sent or paid, email them, cancel, clone, archive, restore or delete them.

**Inputs**

- What to do (`bulk_action`, text, required): 'Mark sent' turns a draft into a real invoice. 'Send email' emails it to the client's contacts. One of: `mark_sent` (Mark sent), `mark_paid` (Mark paid), `send_email` (Email to the client), `cancel`, `clone_to_invoice` (Copy to a new invoice), `clone_to_quote` (Copy to a new quote), `archive`, `restore`, `delete`.
- Invoice IDs (`invoice_ids`, list, required): The Invoice Ninja IDs of the invoices to act on, such as 'Opnel5aKBz'.
- Email template (`email_type`, text): Which email to send. Only used when the action is 'Email to the client'; leave blank for the standard invoice email. One of: `invoice`, `quote`, `credit`, `payment`, `payment_partial` (Payment partial), `statement`, `reminder1`, `reminder2`, `reminder3`, `reminder_endless` (Reminder endless), and 5 more.

**Outputs**

- `action` (text): The action that was applied.
- `count` (number): How many invoices Invoice Ninja reported back.
- `ids` (list): The IDs the action was applied to.
- `records` (list): The invoices as they stand after the action.

**Example output**

```json
{
  "action": "mark_sent",
  "count": 1,
  "ids": [
    "Opnel5aKBz"
  ],
  "records": [
    {
      "amount": 1200.0,
      "balance": 1200.0,
      "client_id": "Wpmbk5ezJn",
      "created_at": 1757462400,
      "date": "2026-09-01",
      "due_date": "2026-09-30",
      "id": "Opnel5aKBz",
      "is_deleted": false,
      "line_items": [
        {
          "cost": 150.0,
          "line_total": 1200.0,
          "notes": "Consulting, September",
          "product_key": "CONSULT",
          "quantity": 8.0
        }
      ],
      "number": "0012",
      "paid_to_date": 0.0,
      "status_id": "2"
    }
  ]
}
```

### Act on quotes

Approve quotes, convert them into invoices, email them, mark them sent, restore or delete them.

**Inputs**

- What to do (`bulk_action`, text, required): 'Convert to invoice' raises an invoice from the quote and links the two. One of: `approve`, `convert` (Convert to an invoice), `send_email` (Email to the client), `mark_sent` (Mark sent), `restore`, `delete`.
- Quote IDs (`quote_ids`, list, required): The Invoice Ninja IDs of the quotes to act on, such as 'Opnel5aKBz'.

**Outputs**

- `action` (text): The action that was applied.
- `count` (number): How many quotes Invoice Ninja reported back.
- `ids` (list): The IDs the action was applied to.
- `records` (list): The quotes as they stand after the action.

**Example output**

```json
{
  "action": "mark_sent",
  "count": 1,
  "ids": [
    "Wpmbk5ezJn"
  ],
  "records": [
    {
      "amount": 900.0,
      "client_id": "Opnel5aKBz",
      "created_at": 1757462400,
      "date": "2026-09-01",
      "due_date": "2026-09-15",
      "id": "Wpmbk5ezJn",
      "invoice_id": "",
      "is_deleted": false,
      "line_items": [
        {
          "cost": 150.0,
          "line_total": 900.0,
          "notes": "Discovery workshop",
          "product_key": "CONSULT",
          "quantity": 6.0
        }
      ],
      "number": "Q0004",
      "status_id": "2"
    }
  ]
}
```

### Archive, restore or delete clients

Archive, restore or delete one or more Invoice Ninja clients.

**Inputs**

- What to do (`bulk_action`, text, required): Archiving hides a client without losing anything; deleting removes it from the lists but keeps its history, and can be undone with 'restore'. One of: `archive`, `restore`, `delete`.
- Client IDs (`client_ids`, list, required): The Invoice Ninja IDs of the clients to act on, such as 'Opnel5aKBz'. Pick one or more, or pass a list from an earlier step.

**Outputs**

- `action` (text): The action that was applied.
- `count` (number): How many clients Invoice Ninja reported back.
- `ids` (list): The IDs the action was applied to.
- `records` (list): The clients as they stand after the action.

**Example output**

```json
{
  "action": "archive",
  "count": 1,
  "ids": [
    "Opnel5aKBz"
  ],
  "records": [
    {
      "balance": 1200.0,
      "classification": "business",
      "contacts": [
        {
          "email": "michael@example.com",
          "first_name": "Michael",
          "id": "Wpmbk5ezJn",
          "is_primary": true,
          "last_name": "Bluth"
        }
      ],
      "country_id": "840",
      "created_at": 1757462400,
      "display_name": "Bluth Company",
      "id": "Opnel5aKBz",
      "is_deleted": false,
      "name": "Bluth Company",
      "number": "0001",
      "paid_to_date": 3400.0
    }
  ]
}
```

### Create a client

Add a client to your Invoice Ninja company.

**Inputs**

- Client name (`name`, text, required): The company or person you invoice.
- Contacts (`contacts`, list): The people at this client. The first one becomes the primary contact and is who invoices are emailed to.
- Website (`website`, text): The client's website address.
- Phone (`phone`, text): The client's main phone number.
- Address line 1 (`address1`, text): First line of the billing address.
- Address line 2 (`address2`, text): Second line of the billing address.
- City (`city`, text): Billing address city.
- State or region (`state`, text): Billing address state, province or region.
- Postal code (`postal_code`, text): Billing address postal or ZIP code.
- Country (`country_id`, text): The client's country.
- Industry (`industry_id`, text): The industry the client works in.
- Company size (`size_id`, text): Roughly how many people the client employs.
- Client type (`classification`, text): What kind of entity the client is. One of: `individual`, `business`, `company`, `partnership`, `trust`, `charity`, `government`, `other`.
- VAT number (`vat_number`, text): The client's VAT or tax registration number.
- Your reference (`id_number`, text): Your own reference number for this client.
- Public notes (`public_notes`, text): Notes the client can see.
- Private notes (`private_notes`, text): Notes only your own team can see.

**Outputs**: An Invoice Ninja client (customer).

- `address1` (text): First address line.
- `address2` (text): Second address line.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the client is assigned to.
- `balance` (number): Amount currently owed by this client.
- `city` (text): City.
- `classification` (text): What kind of entity the client is, such as 'business' or 'individual'.
- `client_hash` (text): The key in the client's portal link.
- `contacts` (list): The client's contacts.
- `country_id` (text): ISO numeric country code as text, such as '840' for the United States.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `credit_balance` (number): Outstanding credit note balance.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `display_name` (text): The name Invoice Ninja shows, which falls back to the first contact when the client has no name.
- `documents` (list): Files attached to this record.
- `e_invoice` (object): E-invoicing settings.
- `gateway_tokens` (list): Stored payment methods.
- `group_settings_id` (text): ID of the client group this client belongs to.
- `has_valid_vat_number` (true/false): Whether Invoice Ninja could validate the VAT number.
- `id` (text): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Use this wherever a step asks for a client.
- `id_number` (text): Your own reference number for the client.
- `industry_id` (text): Invoice Ninja industry ID, as text.
- `is_deleted` (true/false): True once the record has been deleted.
- `is_tax_exempt` (true/false): Whether the client is exempt from tax.
- `last_login` (number): Client-portal last login, as a Unix timestamp in seconds.
- `locations` (list): Additional addresses recorded for the client.
- `name` (text): Company or person name.
- `number` (text): The client number, unique within the company.
- `paid_to_date` (number): Total the client has paid so far.
- `payment_balance` (number): Unapplied payment credit held for this client.
- `phone` (text): Phone number.
- `postal_code` (text): Postal or ZIP code.
- `private_notes` (text): Notes only your team can see.
- `public_notes` (text): Notes the client can see.
- `routing_id` (text): Bank routing identifier.
- `settings` (object): Per-client overrides such as currency, language and payment terms.
- `shipping_address1` (text): First shipping address line.
- `shipping_address2` (text): Second shipping address line.
- `shipping_city` (text): Shipping city.
- `shipping_country_id` (text): ISO numeric country code of the shipping address, as text.
- `shipping_postal_code` (text): Shipping postal or ZIP code.
- `shipping_state` (text): Shipping state, province or region.
- `size_id` (text): Invoice Ninja company-size ID, as text.
- `state` (text): State, province or region.
- `tags` (list): Tags attached to this record.
- `tax_info` (object): Tax registration details.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the client.
- `vat_number` (text): VAT or tax number.
- `website` (text): Website address.

**Example output**

```json
{
  "balance": 1200.0,
  "classification": "business",
  "contacts": [
    {
      "email": "michael@example.com",
      "first_name": "Michael",
      "id": "Wpmbk5ezJn",
      "is_primary": true,
      "last_name": "Bluth"
    }
  ],
  "country_id": "840",
  "created_at": 1757462400,
  "display_name": "Bluth Company",
  "id": "Opnel5aKBz",
  "is_deleted": false,
  "name": "Bluth Company",
  "number": "0001",
  "paid_to_date": 3400.0
}
```

### Create a product

Add a product or service to your Invoice Ninja catalogue.

**Inputs**

- Product code (`product_key`, text, required): The short code or name that appears on an invoice line, such as 'CONSULT'.
- Description (`notes`, text): The description printed on the invoice line.
- Price (`price`, number): What you charge for it. At least 0.
- Cost (`cost`, number): What it costs you. At least 0.
- Default quantity (`quantity`, number): The quantity put on an invoice line by default. At least 0.
- Tax category (`tax_id`, text): Which tax category this product falls into. One of: `1` (Physical goods), `2` (Service), `3` (Digital product), `4` (Shipping), `5` (Tax exempt), `6` (Reduced tax), `7` (Override tax), `8` (Zero rated), `9` (Reverse tax).
- Tax name (`tax_name1`, text): Name of the tax on this product, such as 'VAT'.
- Tax rate (`tax_rate1`, number): Percentage rate of that tax, such as 20. From 0 to 100.
- Maximum quantity (`max_quantity`, number): The largest quantity a client may order. At least 0.

**Outputs**: An Invoice Ninja product.

- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the product is assigned to.
- `cost` (number): What the product costs you.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `documents` (list): Files attached to this record.
- `id` (text): The product's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `in_stock_quantity` (number): Units currently in stock.
- `income_account_id` (text): Accounting income account the product maps to.
- `is_deleted` (true/false): True once the record has been deleted.
- `max_quantity` (number): Largest quantity that may be ordered.
- `notes` (text): Product description.
- `price` (number): What you charge for it.
- `product_image` (text): Web address of the product image.
- `product_key` (text): The product code or short name.
- `quantity` (number): Default quantity put on an invoice line.
- `stock_notification` (true/false): Whether Invoice Ninja warns when stock runs low.
- `stock_notification_threshold` (number): Stock level that triggers the warning.
- `tags` (list): Tags attached to this record.
- `tax_id` (text): Tax category as text: '1' physical, '2' service, '3' digital, '4' shipping, '5' exempt, '6' reduced tax, '7' override tax, '8' zero rated, '9' reverse tax.
- `tax_name1` (text): Name of tax 1, for example 'VAT'.
- `tax_name2` (text): Name of tax 2, for example 'VAT'.
- `tax_name3` (text): Name of tax 3, for example 'VAT'.
- `tax_rate1` (number): Percentage rate of tax 1.
- `tax_rate2` (number): Percentage rate of tax 2.
- `tax_rate3` (number): Percentage rate of tax 3.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the product.

**Example output**

```json
{
  "cost": 90.0,
  "created_at": 1757462400,
  "id": "Wpmbk5ezJn",
  "is_deleted": false,
  "notes": "Consulting, per hour",
  "price": 150.0,
  "product_key": "CONSULT",
  "quantity": 1.0,
  "tax_id": "2"
}
```

### Create a quote

Raise a quote for a client.

**Inputs**

- Client ID (`client_id`, text, required): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Open the client in Invoice Ninja and copy the last part of the web address, or use 'List clients' to find one. This is not the client number shown on the record.
- Quote date (`date`, date, required): The date on the quote.
- Valid until (`due_date`, date, required): The last day the quote is good for.
- Line items (`line_items`, list): The lines on the quote. Each needs at least a description ('notes'), a quantity and a unit price ('cost').
- Public notes (`public_notes`, text): Notes the client can see.
- Private notes (`private_notes`, text): Notes only your own team can see.

**Outputs**: An Invoice Ninja quote.

- `amount` (number): Total amount of the document.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the document is assigned to.
- `balance` (number): Amount still outstanding.
- `client_id` (text): ID of the client this document belongs to.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `custom_surcharge1` (text): Custom field 1 on this record.
- `custom_surcharge2` (text): Custom field 2 on this record.
- `custom_surcharge3` (text): Custom field 3 on this record.
- `custom_surcharge4` (text): Custom field 4 on this record.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `date` (text): Document date, as 'YYYY-MM-DD'.
- `design_id` (text): ID of the PDF design template used.
- `discount` (number): Discount applied to the whole document.
- `documents` (list): Files attached to this record.
- `due_date` (text): Due date, as 'YYYY-MM-DD'. On a quote this is the valid-until date.
- `e_invoice` (object): E-invoicing details.
- `entity_type` (text): Which kind of document this is, such as 'invoice' or 'quote'.
- `exchange_rate` (number): Rate used to convert the client's currency to the company's.
- `footer` (text): Footer shown on the document.
- `has_expenses` (true/false): Whether expenses are billed on this document.
- `has_tasks` (true/false): Whether tasks are billed on this document.
- `id` (text): The record's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `invitations` (list): One entry per contact the document is shared with, each carrying the portal link.
- `invoice_id` (text): ID of the invoice this quote was converted into, once it has been.
- `is_amount_discount` (true/false): True when the document discount is an amount rather than a percentage.
- `is_deleted` (true/false): True once the record has been deleted.
- `last_sent_date` (text): When the document was last emailed, as 'YYYY-MM-DD'.
- `line_items` (list): The document's lines.
- `location_id` (text): ID of the location the document is billed from.
- `next_send_date` (text): When the next reminder is scheduled, as 'YYYY-MM-DD'.
- `number` (text): The document number, unique within the company.
- `paid_to_date` (number): Amount paid against this document so far.
- `partial` (number): Deposit amount requested before the full balance.
- `partial_due_date` (text): Due date of the deposit, as 'YYYY-MM-DD'.
- `po_number` (text): Purchase order number.
- `private_notes` (text): Notes only your team can see.
- `project_id` (text): ID of the linked project, when there is one.
- `public_notes` (text): Notes the client can see.
- `status_id` (text): Status as text. For invoices: '1' draft, '2' sent, '3' partial, '4' paid, '5' cancelled, '6' reversed.
- `subscription_id` (text): ID of the subscription that produced the document.
- `tags` (list): Tags attached to this record.
- `tax_info` (object): Tax registration details.
- `tax_name1` (text): Name of tax 1, for example 'VAT'.
- `tax_name2` (text): Name of tax 2, for example 'VAT'.
- `tax_name3` (text): Name of tax 3, for example 'VAT'.
- `tax_rate1` (number): Percentage rate of tax 1.
- `tax_rate2` (number): Percentage rate of tax 2.
- `tax_rate3` (number): Percentage rate of tax 3.
- `terms` (text): Terms shown on the document.
- `total_taxes` (number): Total tax charged.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the document.
- `uses_inclusive_taxes` (true/false): True when the line prices already include tax.
- `vendor_id` (text): ID of the linked vendor, when there is one.

**Example output**

```json
{
  "amount": 900.0,
  "client_id": "Opnel5aKBz",
  "created_at": 1757462400,
  "date": "2026-09-01",
  "due_date": "2026-09-15",
  "id": "Wpmbk5ezJn",
  "invoice_id": "",
  "is_deleted": false,
  "line_items": [
    {
      "cost": 150.0,
      "line_total": 900.0,
      "notes": "Discovery workshop",
      "product_key": "CONSULT",
      "quantity": 6.0
    }
  ],
  "number": "Q0004",
  "status_id": "2"
}
```

### Create an invoice

Raise an invoice for a client. It is created as a draft; use 'Act on invoices' to mark it sent or email it.

**Inputs**

- Client ID (`client_id`, text, required): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Open the client in Invoice Ninja and copy the last part of the web address, or use 'List clients' to find one. This is not the client number shown on the record.
- Line items (`line_items`, list): The lines on the invoice. Each needs at least a description ('notes'), a quantity and a unit price ('cost').
- Invoice number (`number`, text): A number for the invoice. Leave blank to let Invoice Ninja allocate the next one; numbers must be unique.
- PO number (`po_number`, text): The client's purchase order number.
- Invoice date (`date`, date): The date on the invoice. Leave blank for today.
- Due date (`due_date`, date): When payment is due. Leave blank to use the client's payment terms.
- Discount (`discount`, number): A discount off the whole invoice. At least 0.
- Discount is an amount (`is_amount_discount`, true/false): Turn on to treat the discount as a cash amount. Leave off to treat it as a percentage.
- Terms (`terms`, text): Terms printed on the invoice.
- Footer (`footer`, text): Footer printed on the invoice.
- Public notes (`public_notes`, text): Notes the client can see.
- Private notes (`private_notes`, text): Notes only your own team can see.

**Outputs**: An Invoice Ninja invoice.

- `amount` (number): Total amount of the document.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the document is assigned to.
- `auto_bill_enabled` (true/false): Whether the client's stored payment method is charged automatically.
- `balance` (number): Amount still outstanding.
- `client_id` (text): ID of the client this document belongs to.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `custom_surcharge1` (text): Custom field 1 on this record.
- `custom_surcharge2` (text): Custom field 2 on this record.
- `custom_surcharge3` (text): Custom field 3 on this record.
- `custom_surcharge4` (text): Custom field 4 on this record.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `date` (text): Document date, as 'YYYY-MM-DD'.
- `design_id` (text): ID of the PDF design template used.
- `discount` (number): Discount applied to the whole document.
- `documents` (list): Files attached to this record.
- `due_date` (text): Due date, as 'YYYY-MM-DD'. On a quote this is the valid-until date.
- `e_invoice` (object): E-invoicing details.
- `entity_type` (text): Which kind of document this is, such as 'invoice' or 'quote'.
- `exchange_rate` (number): Rate used to convert the client's currency to the company's.
- `footer` (text): Footer shown on the document.
- `has_expenses` (true/false): Whether expenses are billed on this document.
- `has_tasks` (true/false): Whether tasks are billed on this document.
- `id` (text): The record's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `invitations` (list): One entry per contact the document is shared with, each carrying the portal link.
- `is_amount_discount` (true/false): True when the document discount is an amount rather than a percentage.
- `is_deleted` (true/false): True once the record has been deleted.
- `last_sent_date` (text): When the document was last emailed, as 'YYYY-MM-DD'.
- `line_items` (list): The document's lines.
- `location_id` (text): ID of the location the document is billed from.
- `next_send_date` (text): When the next reminder is scheduled, as 'YYYY-MM-DD'.
- `number` (text): The document number, unique within the company.
- `paid_to_date` (number): Amount paid against this document so far.
- `partial` (number): Deposit amount requested before the full balance.
- `partial_due_date` (text): Due date of the deposit, as 'YYYY-MM-DD'.
- `po_number` (text): Purchase order number.
- `private_notes` (text): Notes only your team can see.
- `project_id` (text): ID of the linked project, when there is one.
- `public_notes` (text): Notes the client can see.
- `recurring_id` (text): ID of the recurring invoice that generated this one.
- `reminder_last_sent` (text): When the last reminder went out, as 'YYYY-MM-DD'.
- `status_id` (text): Status as text. For invoices: '1' draft, '2' sent, '3' partial, '4' paid, '5' cancelled, '6' reversed.
- `subscription_id` (text): ID of the subscription that produced the document.
- `tags` (list): Tags attached to this record.
- `tax_info` (object): Tax registration details.
- `tax_name1` (text): Name of tax 1, for example 'VAT'.
- `tax_name2` (text): Name of tax 2, for example 'VAT'.
- `tax_name3` (text): Name of tax 3, for example 'VAT'.
- `tax_rate1` (number): Percentage rate of tax 1.
- `tax_rate2` (number): Percentage rate of tax 2.
- `tax_rate3` (number): Percentage rate of tax 3.
- `terms` (text): Terms shown on the document.
- `total_taxes` (number): Total tax charged.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the document.
- `uses_inclusive_taxes` (true/false): True when the line prices already include tax.
- `vendor_id` (text): ID of the linked vendor, when there is one.

**Example output**

```json
{
  "amount": 1200.0,
  "balance": 1200.0,
  "client_id": "Wpmbk5ezJn",
  "created_at": 1757462400,
  "date": "2026-09-01",
  "due_date": "2026-09-30",
  "id": "Opnel5aKBz",
  "is_deleted": false,
  "line_items": [
    {
      "cost": 150.0,
      "line_total": 1200.0,
      "notes": "Consulting, September",
      "product_key": "CONSULT",
      "quantity": 8.0
    }
  ],
  "number": "0012",
  "paid_to_date": 0.0,
  "status_id": "2"
}
```

### Get a client

Read one Invoice Ninja client by its ID.

**Inputs**

- Client ID (`client_id`, text, required): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Open the client in Invoice Ninja and copy the last part of the web address, or use 'List clients' to find one. This is not the client number shown on the record.
- Also fetch (`include`, text): Extra details to pull into the client record. One or more of: `contacts`, `documents`, `gateway_tokens` (Gateway tokens), `activities`, `ledger`, `system_logs` (System logs), `group_settings` (Group settings).

**Outputs**: An Invoice Ninja client (customer).

- `address1` (text): First address line.
- `address2` (text): Second address line.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the client is assigned to.
- `balance` (number): Amount currently owed by this client.
- `city` (text): City.
- `classification` (text): What kind of entity the client is, such as 'business' or 'individual'.
- `client_hash` (text): The key in the client's portal link.
- `contacts` (list): The client's contacts.
- `country_id` (text): ISO numeric country code as text, such as '840' for the United States.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `credit_balance` (number): Outstanding credit note balance.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `display_name` (text): The name Invoice Ninja shows, which falls back to the first contact when the client has no name.
- `documents` (list): Files attached to this record.
- `e_invoice` (object): E-invoicing settings.
- `gateway_tokens` (list): Stored payment methods.
- `group_settings_id` (text): ID of the client group this client belongs to.
- `has_valid_vat_number` (true/false): Whether Invoice Ninja could validate the VAT number.
- `id` (text): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Use this wherever a step asks for a client.
- `id_number` (text): Your own reference number for the client.
- `industry_id` (text): Invoice Ninja industry ID, as text.
- `is_deleted` (true/false): True once the record has been deleted.
- `is_tax_exempt` (true/false): Whether the client is exempt from tax.
- `last_login` (number): Client-portal last login, as a Unix timestamp in seconds.
- `locations` (list): Additional addresses recorded for the client.
- `name` (text): Company or person name.
- `number` (text): The client number, unique within the company.
- `paid_to_date` (number): Total the client has paid so far.
- `payment_balance` (number): Unapplied payment credit held for this client.
- `phone` (text): Phone number.
- `postal_code` (text): Postal or ZIP code.
- `private_notes` (text): Notes only your team can see.
- `public_notes` (text): Notes the client can see.
- `routing_id` (text): Bank routing identifier.
- `settings` (object): Per-client overrides such as currency, language and payment terms.
- `shipping_address1` (text): First shipping address line.
- `shipping_address2` (text): Second shipping address line.
- `shipping_city` (text): Shipping city.
- `shipping_country_id` (text): ISO numeric country code of the shipping address, as text.
- `shipping_postal_code` (text): Shipping postal or ZIP code.
- `shipping_state` (text): Shipping state, province or region.
- `size_id` (text): Invoice Ninja company-size ID, as text.
- `state` (text): State, province or region.
- `tags` (list): Tags attached to this record.
- `tax_info` (object): Tax registration details.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the client.
- `vat_number` (text): VAT or tax number.
- `website` (text): Website address.

**Example output**

```json
{
  "balance": 1200.0,
  "classification": "business",
  "contacts": [
    {
      "email": "michael@example.com",
      "first_name": "Michael",
      "id": "Wpmbk5ezJn",
      "is_primary": true,
      "last_name": "Bluth"
    }
  ],
  "country_id": "840",
  "created_at": 1757462400,
  "display_name": "Bluth Company",
  "id": "Opnel5aKBz",
  "is_deleted": false,
  "name": "Bluth Company",
  "number": "0001",
  "paid_to_date": 3400.0
}
```

### Get an invoice

Read one Invoice Ninja invoice by its ID.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's Invoice Ninja ID, such as 'Opnel5aKBz'. Use 'List invoices' to find one. This is not the invoice number printed on the document.

**Outputs**: An Invoice Ninja invoice.

- `amount` (number): Total amount of the document.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the document is assigned to.
- `auto_bill_enabled` (true/false): Whether the client's stored payment method is charged automatically.
- `balance` (number): Amount still outstanding.
- `client_id` (text): ID of the client this document belongs to.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `custom_surcharge1` (text): Custom field 1 on this record.
- `custom_surcharge2` (text): Custom field 2 on this record.
- `custom_surcharge3` (text): Custom field 3 on this record.
- `custom_surcharge4` (text): Custom field 4 on this record.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `date` (text): Document date, as 'YYYY-MM-DD'.
- `design_id` (text): ID of the PDF design template used.
- `discount` (number): Discount applied to the whole document.
- `documents` (list): Files attached to this record.
- `due_date` (text): Due date, as 'YYYY-MM-DD'. On a quote this is the valid-until date.
- `e_invoice` (object): E-invoicing details.
- `entity_type` (text): Which kind of document this is, such as 'invoice' or 'quote'.
- `exchange_rate` (number): Rate used to convert the client's currency to the company's.
- `footer` (text): Footer shown on the document.
- `has_expenses` (true/false): Whether expenses are billed on this document.
- `has_tasks` (true/false): Whether tasks are billed on this document.
- `id` (text): The record's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `invitations` (list): One entry per contact the document is shared with, each carrying the portal link.
- `is_amount_discount` (true/false): True when the document discount is an amount rather than a percentage.
- `is_deleted` (true/false): True once the record has been deleted.
- `last_sent_date` (text): When the document was last emailed, as 'YYYY-MM-DD'.
- `line_items` (list): The document's lines.
- `location_id` (text): ID of the location the document is billed from.
- `next_send_date` (text): When the next reminder is scheduled, as 'YYYY-MM-DD'.
- `number` (text): The document number, unique within the company.
- `paid_to_date` (number): Amount paid against this document so far.
- `partial` (number): Deposit amount requested before the full balance.
- `partial_due_date` (text): Due date of the deposit, as 'YYYY-MM-DD'.
- `po_number` (text): Purchase order number.
- `private_notes` (text): Notes only your team can see.
- `project_id` (text): ID of the linked project, when there is one.
- `public_notes` (text): Notes the client can see.
- `recurring_id` (text): ID of the recurring invoice that generated this one.
- `reminder_last_sent` (text): When the last reminder went out, as 'YYYY-MM-DD'.
- `status_id` (text): Status as text. For invoices: '1' draft, '2' sent, '3' partial, '4' paid, '5' cancelled, '6' reversed.
- `subscription_id` (text): ID of the subscription that produced the document.
- `tags` (list): Tags attached to this record.
- `tax_info` (object): Tax registration details.
- `tax_name1` (text): Name of tax 1, for example 'VAT'.
- `tax_name2` (text): Name of tax 2, for example 'VAT'.
- `tax_name3` (text): Name of tax 3, for example 'VAT'.
- `tax_rate1` (number): Percentage rate of tax 1.
- `tax_rate2` (number): Percentage rate of tax 2.
- `tax_rate3` (number): Percentage rate of tax 3.
- `terms` (text): Terms shown on the document.
- `total_taxes` (number): Total tax charged.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the document.
- `uses_inclusive_taxes` (true/false): True when the line prices already include tax.
- `vendor_id` (text): ID of the linked vendor, when there is one.

**Example output**

```json
{
  "amount": 1200.0,
  "balance": 1200.0,
  "client_id": "Wpmbk5ezJn",
  "created_at": 1757462400,
  "date": "2026-09-01",
  "due_date": "2026-09-30",
  "id": "Opnel5aKBz",
  "is_deleted": false,
  "line_items": [
    {
      "cost": 150.0,
      "line_total": 1200.0,
      "notes": "Consulting, September",
      "product_key": "CONSULT",
      "quantity": 8.0
    }
  ],
  "number": "0012",
  "paid_to_date": 0.0,
  "status_id": "2"
}
```

### List clients

Find clients in your Invoice Ninja company.

**Inputs**

- Client name (`name`, text): Only return clients whose name matches this. Leave blank for all.
- Contact email (`email`, text): Only return clients with a contact at this email address.
- Search (`search`, text): Free-text search across client name, ID number, contact names, contact email and phone.
- Include records that are (`record_status`, text): Which records to include. Leave blank to let Invoice Ninja decide, which normally means active ones only. One or more of: `active`, `archived`, `deleted`.
- Also fetch (`include`, text): Extra details to pull into each client. Leave blank for the client record on its own. One or more of: `contacts`, `documents`, `gateway_tokens` (Gateway tokens), `activities`, `ledger`, `system_logs` (System logs), `group_settings` (Group settings).
- Sort by (`sort_by`, text): Which field to sort on. Leave blank for Invoice Ninja's own order. One of: `name`, `number`, `balance`, `id_number` (Id number), `created_at` (Created at), `updated_at` (Updated at).
- Sort direction (`sort_direction`, text): Which way to sort. Only used when a sort field is chosen. One of: `asc` (Ascending (A-Z, oldest first)), `desc` (Descending (Z-A, newest first)).
- Results per page (`per_page`, number): How many clients to return on one page, from 1 to 100. Leave blank for Invoice Ninja's default of 20. From 1 to 100.
- Page (`page`, number): Which page of results to return. Leave blank for the first page. From 1 to 10000.

**Outputs**

- `clients` (list): The clients on this page.
- `pagination` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "clients": [
    {
      "balance": 1200.0,
      "classification": "business",
      "contacts": [
        {
          "email": "michael@example.com",
          "first_name": "Michael",
          "id": "Wpmbk5ezJn",
          "is_primary": true,
          "last_name": "Bluth"
        }
      ],
      "country_id": "840",
      "created_at": 1757462400,
      "display_name": "Bluth Company",
      "id": "Opnel5aKBz",
      "is_deleted": false,
      "name": "Bluth Company",
      "number": "0001",
      "paid_to_date": 3400.0
    }
  ],
  "pagination": {
    "count": 1,
    "current_page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  }
}
```

### List expenses

Find expenses in your Invoice Ninja company.

**Inputs**

- Include records that are (`record_status`, text): Which records to include. Leave blank to let Invoice Ninja decide, which normally means active ones only. One or more of: `active`, `archived`, `deleted`.
- Sort by (`sort_by`, text): Which field to sort on. Leave blank for Invoice Ninja's own order. One of: `number`, `date`, `amount`, `created_at` (Created at), `updated_at` (Updated at).
- Sort direction (`sort_direction`, text): Which way to sort. Only used when a sort field is chosen. One of: `asc` (Ascending (A-Z, oldest first)), `desc` (Descending (Z-A, newest first)).
- Results per page (`per_page`, number): How many expenses to return on one page, from 1 to 100. Leave blank for Invoice Ninja's default of 20. From 1 to 100.
- Page (`page`, number): Which page of results to return. Leave blank for the first page. From 1 to 10000.

**Outputs**

- `expenses` (list): The expenses on this page.
- `pagination` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "expenses": [
    {
      "amount": 42.5,
      "created_at": 1757462400,
      "date": "2026-09-04",
      "id": "Volejrejnm",
      "is_deleted": false,
      "number": "0003",
      "public_notes": "Team lunch",
      "should_be_invoiced": false
    }
  ],
  "pagination": {
    "count": 1,
    "current_page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  }
}
```

### List invoices

Find invoices in your Invoice Ninja company.

**Inputs**

- Client ID (`client_id`, text): Only return records for this client, using its Invoice Ninja ID such as 'Opnel5aKBz'. Leave blank for every client.
- Invoice number (`number`, text): Only return the invoice with this number, such as '0012'.
- Payment status (`payment_status`, text): Narrow to invoices in this payment state. One of: `all`, `paid`, `unpaid`, `overdue`.
- Invoice status (`status_id`, text): Narrow to invoices at these stages. One or more of: `1` (Draft), `2` (Sent), `3` (Partially paid), `4` (Paid), `5` (Cancelled), `6` (Reversed).
- Dated on or after (`date_from`, date): Only return invoices dated on or after this day.
- Dated on or before (`date_to`, date): Only return invoices dated on or before this day. Only used together with 'Dated on or after'.
- Search (`search`, text): Free-text search across invoice number, PO number, date, amount, client name and line items.
- Include records that are (`record_status`, text): Which records to include. Leave blank to let Invoice Ninja decide, which normally means active ones only. One or more of: `active`, `archived`, `deleted`.
- Sort by (`sort_by`, text): Which field to sort on. Leave blank for Invoice Ninja's own order. One of: `number`, `date`, `due_date` (Due date), `amount`, `balance`, `status_id` (Status id), `created_at` (Created at), `updated_at` (Updated at).
- Sort direction (`sort_direction`, text): Which way to sort. Only used when a sort field is chosen. One of: `asc` (Ascending (A-Z, oldest first)), `desc` (Descending (Z-A, newest first)).
- Results per page (`per_page`, number): How many invoices to return on one page, from 1 to 100. Leave blank for Invoice Ninja's default of 20. From 1 to 100.
- Page (`page`, number): Which page of results to return. Leave blank for the first page. From 1 to 10000.

**Outputs**

- `invoices` (list): The invoices on this page.
- `pagination` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "invoices": [
    {
      "amount": 1200.0,
      "balance": 1200.0,
      "client_id": "Wpmbk5ezJn",
      "created_at": 1757462400,
      "date": "2026-09-01",
      "due_date": "2026-09-30",
      "id": "Opnel5aKBz",
      "is_deleted": false,
      "line_items": [
        {
          "cost": 150.0,
          "line_total": 1200.0,
          "notes": "Consulting, September",
          "product_key": "CONSULT",
          "quantity": 8.0
        }
      ],
      "number": "0012",
      "paid_to_date": 0.0,
      "status_id": "2"
    }
  ],
  "pagination": {
    "count": 1,
    "current_page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  }
}
```

### List payments

Find payments in your Invoice Ninja company.

**Inputs**

- Client ID (`client_id`, text): Only return records for this client, using its Invoice Ninja ID such as 'Opnel5aKBz'. Leave blank for every client.
- Payment number (`number`, text): Only return the payment with this number.
- Search (`search`, text): Free-text search across amount, date and custom fields.
- Include records that are (`record_status`, text): Which records to include. Leave blank to let Invoice Ninja decide, which normally means active ones only. One or more of: `active`, `archived`, `deleted`.
- Include linked invoices (`include_invoices`, true/false): Turn on to pull the full invoice records each payment was applied to into the result.
- Sort by (`sort_by`, text): Which field to sort on. Leave blank for Invoice Ninja's own order. One of: `number`, `date`, `amount`, `created_at` (Created at), `updated_at` (Updated at).
- Sort direction (`sort_direction`, text): Which way to sort. Only used when a sort field is chosen. One of: `asc` (Ascending (A-Z, oldest first)), `desc` (Descending (Z-A, newest first)).
- Results per page (`per_page`, number): How many payments to return on one page, from 1 to 100. Leave blank for Invoice Ninja's default of 20. From 1 to 100.
- Page (`page`, number): Which page of results to return. Leave blank for the first page. From 1 to 10000.

**Outputs**

- `pagination` (object): Where this page sits in the full result set.
- `payments` (list): The payments on this page.

**Example output**

```json
{
  "pagination": {
    "count": 1,
    "current_page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  },
  "payments": [
    {
      "amount": 1200.0,
      "applied": 1200.0,
      "client_id": "Opnel5aKBz",
      "created_at": 1757462400,
      "date": "2026-09-05",
      "id": "Volejrejnm",
      "is_deleted": false,
      "is_manual": true,
      "number": "0007",
      "paymentables": [
        {
          "amount": 1200.0,
          "invoice_id": "Opnel5aKBz"
        }
      ],
      "refunded": 0.0,
      "type_id": "1"
    }
  ]
}
```

### List products

Find products in your Invoice Ninja company.

**Inputs**

- Search (`search`, text): Free-text search across product code, description and custom fields.
- Include records that are (`record_status`, text): Which records to include. Leave blank to let Invoice Ninja decide, which normally means active ones only. One or more of: `active`, `archived`, `deleted`.
- Sort by (`sort_by`, text): Which field to sort on. Leave blank for Invoice Ninja's own order. One of: `product_key` (Product key), `cost`, `price`, `created_at` (Created at), `updated_at` (Updated at).
- Sort direction (`sort_direction`, text): Which way to sort. Only used when a sort field is chosen. One of: `asc` (Ascending (A-Z, oldest first)), `desc` (Descending (Z-A, newest first)).
- Results per page (`per_page`, number): How many products to return on one page, from 1 to 100. Leave blank for Invoice Ninja's default of 20. From 1 to 100.
- Page (`page`, number): Which page of results to return. Leave blank for the first page. From 1 to 10000.

**Outputs**

- `pagination` (object): Where this page sits in the full result set.
- `products` (list): The products on this page.

**Example output**

```json
{
  "pagination": {
    "count": 1,
    "current_page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  },
  "products": [
    {
      "cost": 90.0,
      "created_at": 1757462400,
      "id": "Wpmbk5ezJn",
      "is_deleted": false,
      "notes": "Consulting, per hour",
      "price": 150.0,
      "product_key": "CONSULT",
      "quantity": 1.0,
      "tax_id": "2"
    }
  ]
}
```

### List quotes

Find quotes in your Invoice Ninja company.

**Inputs**

- Client ID (`client_id`, text): Only return records for this client, using its Invoice Ninja ID such as 'Opnel5aKBz'. Leave blank for every client.
- Quote number (`number`, text): Only return the quote with this number.
- Search (`search`, text): Free-text search across quote number, PO number, amount and client name.
- Include records that are (`record_status`, text): Which records to include. Leave blank to let Invoice Ninja decide, which normally means active ones only. One or more of: `active`, `archived`, `deleted`.
- Sort by (`sort_by`, text): Which field to sort on. Leave blank for Invoice Ninja's own order. One of: `number`, `date`, `due_date` (Due date), `amount`, `created_at` (Created at), `updated_at` (Updated at).
- Sort direction (`sort_direction`, text): Which way to sort. Only used when a sort field is chosen. One of: `asc` (Ascending (A-Z, oldest first)), `desc` (Descending (Z-A, newest first)).
- Results per page (`per_page`, number): How many quotes to return on one page, from 1 to 100. Leave blank for Invoice Ninja's default of 20. From 1 to 100.
- Page (`page`, number): Which page of results to return. Leave blank for the first page. From 1 to 10000.

**Outputs**

- `pagination` (object): Where this page sits in the full result set.
- `quotes` (list): The quotes on this page.

**Example output**

```json
{
  "pagination": {
    "count": 1,
    "current_page": 1,
    "per_page": 20,
    "total": 1,
    "total_pages": 1
  },
  "quotes": [
    {
      "amount": 900.0,
      "client_id": "Opnel5aKBz",
      "created_at": 1757462400,
      "date": "2026-09-01",
      "due_date": "2026-09-15",
      "id": "Wpmbk5ezJn",
      "invoice_id": "",
      "is_deleted": false,
      "line_items": [
        {
          "cost": 150.0,
          "line_total": 900.0,
          "notes": "Discovery workshop",
          "product_key": "CONSULT",
          "quantity": 6.0
        }
      ],
      "number": "Q0004",
      "status_id": "2"
    }
  ]
}
```

### Record a payment

Record money received from a client, optionally applying it to that client's invoices.

**Inputs**

- Client ID (`client_id`, text, required): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Open the client in Invoice Ninja and copy the last part of the web address, or use 'List clients' to find one. This is not the client number shown on the record.
- Amount (`amount`, number, required): How much was received. At least 0.
- Payment date (`date`, date): When the money arrived. Leave blank for today.
- Payment method (`type_id`, text): How the client paid.
- Apply to invoices (`invoices`, list): Which of the client's invoices to settle, and how much of the payment to put against each. The amounts must not add up to more than the payment. Leave blank to leave the payment unapplied.
- Reference (`transaction_reference`, text): Your own reference for the transaction.
- Private notes (`private_notes`, text): Notes only your own team can see.
- Payment number (`number`, text): A number for the payment. Leave blank to let Invoice Ninja allocate the next one.

**Outputs**: An Invoice Ninja payment.

- `amount` (number): Amount received.
- `applied` (number): How much of the amount has been applied to invoices.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the payment is assigned to.
- `client_contact_id` (text): ID of the contact who paid, when the payment came through the portal.
- `client_id` (text): ID of the client who paid.
- `company_gateway_id` (text): ID of the payment gateway that took the payment.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `currency_id` (text): Invoice Ninja currency ID as text.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `date` (text): Payment date, as 'YYYY-MM-DD'.
- `documents` (list): Files attached to this record.
- `exchange_currency_id` (text): Currency the amount was converted from, as text.
- `exchange_rate` (number): Rate used to convert to the company's currency.
- `gateway_type_id` (text): Kind of gateway method used, as text.
- `id` (text): The payment's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `invitation_id` (text): ID of the invitation the payment came from.
- `invoices` (list): The linked invoices, present only when 'Include linked invoices' is turned on.
- `is_deleted` (true/false): True once the record has been deleted.
- `is_manual` (true/false): True when the payment was entered by hand rather than taken by a gateway.
- `number` (text): The payment number, unique within the company.
- `paymentables` (list): One entry per invoice or credit the payment was applied to, each with the amount applied.
- `private_notes` (text): Notes only your team can see.
- `project_id` (text): ID of the linked project.
- `refunded` (number): How much of the amount has been refunded.
- `status_id` (text): Payment status as text.
- `tags` (list): Tags attached to this record.
- `transaction_id` (text): ID of the matched bank transaction.
- `transaction_reference` (text): Your own reference for the transaction.
- `type_id` (text): Payment method ID as text, such as '1' for a bank transfer or '2' for cash.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who recorded the payment.
- `vendor_id` (text): ID of the linked vendor.

**Example output**

```json
{
  "amount": 1200.0,
  "applied": 1200.0,
  "client_id": "Opnel5aKBz",
  "created_at": 1757462400,
  "date": "2026-09-05",
  "id": "Volejrejnm",
  "is_deleted": false,
  "is_manual": true,
  "number": "0007",
  "paymentables": [
    {
      "amount": 1200.0,
      "invoice_id": "Opnel5aKBz"
    }
  ],
  "refunded": 0.0,
  "type_id": "1"
}
```

### Record an expense

Book an expense in your Invoice Ninja company.

**Inputs**

- Amount (`amount`, number, required): How much was spent. At least 0.
- Expense date (`date`, date): When the money was spent. Leave blank for today.
- Paid on (`payment_date`, date): When the expense was actually paid, if that differs.
- Currency (`currency_id`, text): The currency the money was spent in. Leave blank for the company's own currency.
- Public notes (`public_notes`, text): Notes a client, if the expense is rebilled to one can see.
- Private notes (`private_notes`, text): Notes only your own team can see.
- Reference (`transaction_reference`, text): Your own reference for the transaction.
- Rebill to a client (`should_be_invoiced`, true/false): Turn on to mark the expense as one to bill on to a client.
- Expense number (`number`, text): A number for the expense. Leave blank to let Invoice Ninja allocate the next one.

**Outputs**: An Invoice Ninja expense.

- `amount` (number): Amount spent.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the expense is assigned to.
- `bank_id` (text): ID of the bank account the expense came from.
- `calculate_tax_by_amount` (true/false): True when tax is entered as an amount rather than a rate.
- `category_id` (text): ID of the expense category.
- `client_id` (text): ID of the client the expense will be rebilled to.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `currency_id` (text): Invoice Ninja currency ID as text.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `date` (text): Expense date, as 'YYYY-MM-DD'.
- `documents` (list): Files attached to this record.
- `e_invoice` (object): E-invoicing details.
- `entity_type` (text): Always 'expense' for these records.
- `exchange_rate` (number): Rate used to convert to the company's currency.
- `expense_currency_id` (text): Currency the expense was incurred in, as text.
- `foreign_amount` (number): Amount in the expense's own currency.
- `id` (text): The expense's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `invoice_currency_id` (text): Currency the expense is rebilled in, as text.
- `invoice_documents` (true/false): Whether the expense's files are attached to the invoice it is billed on.
- `invoice_id` (text): ID of the invoice the expense was billed on.
- `is_deleted` (true/false): True once the record has been deleted.
- `number` (text): The expense number, unique within the company.
- `payment_date` (text): When it was paid, as 'YYYY-MM-DD'.
- `payment_type_id` (text): Payment method ID as text.
- `private_notes` (text): Notes only your team can see.
- `project_id` (text): ID of the linked project.
- `public_notes` (text): Notes the client can see when the expense is rebilled.
- `recurring_expense_id` (text): ID of the recurring expense that generated this one.
- `should_be_invoiced` (true/false): Whether the expense is marked to rebill to a client.
- `tags` (list): Tags attached to this record.
- `tax_amount1` (number): Amount of tax 1 on the expense.
- `tax_amount2` (number): Amount of tax 2 on the expense.
- `tax_amount3` (number): Amount of tax 3 on the expense.
- `tax_name1` (text): Name of tax 1, for example 'VAT'.
- `tax_name2` (text): Name of tax 2, for example 'VAT'.
- `tax_name3` (text): Name of tax 3, for example 'VAT'.
- `tax_rate1` (number): Percentage rate of tax 1.
- `tax_rate2` (number): Percentage rate of tax 2.
- `tax_rate3` (number): Percentage rate of tax 3.
- `transaction_id` (text): ID of the matched bank transaction.
- `transaction_reference` (text): Your own reference for the transaction.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who recorded the expense.
- `uses_inclusive_taxes` (true/false): True when the amount already includes tax.
- `vendor_id` (text): ID of the vendor the money was paid to.

**Example output**

```json
{
  "amount": 42.5,
  "created_at": 1757462400,
  "date": "2026-09-04",
  "id": "Volejrejnm",
  "is_deleted": false,
  "number": "0003",
  "public_notes": "Team lunch",
  "should_be_invoiced": false
}
```

### Refund a payment

Refund a recorded payment, in full or in part. Invoice Ninja puts the balance back on any invoices the refund covers.

**Inputs**

- Payment ID (`payment_id`, text, required): The payment's Invoice Ninja ID, such as 'Opnel5aKBz'. Use 'List payments' to find one.
- Refund date (`date`, date, required): The date of the refund.
- Amount (`amount`, number): How much to refund. Leave blank to refund everything that has not been refunded already. At least 0.
- Refund against invoices (`invoices`, list): Which invoices the refund comes off, and how much from each. Leave blank to refund the payment without touching any invoice balance.

**Outputs**: An Invoice Ninja payment.

- `amount` (number): Amount received.
- `applied` (number): How much of the amount has been applied to invoices.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the payment is assigned to.
- `client_contact_id` (text): ID of the contact who paid, when the payment came through the portal.
- `client_id` (text): ID of the client who paid.
- `company_gateway_id` (text): ID of the payment gateway that took the payment.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `currency_id` (text): Invoice Ninja currency ID as text.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `date` (text): Payment date, as 'YYYY-MM-DD'.
- `documents` (list): Files attached to this record.
- `exchange_currency_id` (text): Currency the amount was converted from, as text.
- `exchange_rate` (number): Rate used to convert to the company's currency.
- `gateway_type_id` (text): Kind of gateway method used, as text.
- `id` (text): The payment's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `invitation_id` (text): ID of the invitation the payment came from.
- `invoices` (list): The linked invoices, present only when 'Include linked invoices' is turned on.
- `is_deleted` (true/false): True once the record has been deleted.
- `is_manual` (true/false): True when the payment was entered by hand rather than taken by a gateway.
- `number` (text): The payment number, unique within the company.
- `paymentables` (list): One entry per invoice or credit the payment was applied to, each with the amount applied.
- `private_notes` (text): Notes only your team can see.
- `project_id` (text): ID of the linked project.
- `refunded` (number): How much of the amount has been refunded.
- `status_id` (text): Payment status as text.
- `tags` (list): Tags attached to this record.
- `transaction_id` (text): ID of the matched bank transaction.
- `transaction_reference` (text): Your own reference for the transaction.
- `type_id` (text): Payment method ID as text, such as '1' for a bank transfer or '2' for cash.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who recorded the payment.
- `vendor_id` (text): ID of the linked vendor.

**Example output**

```json
{
  "amount": 1200.0,
  "applied": 1200.0,
  "client_id": "Opnel5aKBz",
  "created_at": 1757462400,
  "date": "2026-09-05",
  "id": "Volejrejnm",
  "is_deleted": false,
  "is_manual": true,
  "number": "0007",
  "paymentables": [
    {
      "amount": 1200.0,
      "invoice_id": "Opnel5aKBz"
    }
  ],
  "refunded": 1200.0,
  "type_id": "1"
}
```

### Update a client

Change details on an existing Invoice Ninja client. Fields left blank keep their current values.

**Inputs**

- Client ID (`client_id`, text, required): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Open the client in Invoice Ninja and copy the last part of the web address, or use 'List clients' to find one. This is not the client number shown on the record.
- Client name (`name`, text): A new name for the client. Leave blank to keep the current one.
- Contacts (`contacts`, list): The full list of people at this client. Invoice Ninja replaces every contact with what is sent here, so leave this blank unless the step means to rewrite them all; the existing contacts are kept for you.
- Website (`website`, text): A new website address.
- Phone (`phone`, text): A new main phone number.
- Address line 1 (`address1`, text): First line of the billing address.
- Address line 2 (`address2`, text): Second line of the billing address.
- City (`city`, text): Billing address city.
- State or region (`state`, text): Billing address state, province or region.
- Postal code (`postal_code`, text): Billing address postal or ZIP code.
- Country (`country_id`, text): The client's country.
- Industry (`industry_id`, text): The industry the client works in.
- Company size (`size_id`, text): Roughly how many people the client employs.
- Client type (`classification`, text): What kind of entity the client is. One of: `individual`, `business`, `company`, `partnership`, `trust`, `charity`, `government`, `other`.
- VAT number (`vat_number`, text): The client's VAT or tax registration number.
- Your reference (`id_number`, text): Your own reference number for this client.
- Public notes (`public_notes`, text): Notes the client can see.
- Private notes (`private_notes`, text): Notes only your own team can see.

**Outputs**: An Invoice Ninja client (customer).

- `address1` (text): First address line.
- `address2` (text): Second address line.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the client is assigned to.
- `balance` (number): Amount currently owed by this client.
- `city` (text): City.
- `classification` (text): What kind of entity the client is, such as 'business' or 'individual'.
- `client_hash` (text): The key in the client's portal link.
- `contacts` (list): The client's contacts.
- `country_id` (text): ISO numeric country code as text, such as '840' for the United States.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `credit_balance` (number): Outstanding credit note balance.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `display_name` (text): The name Invoice Ninja shows, which falls back to the first contact when the client has no name.
- `documents` (list): Files attached to this record.
- `e_invoice` (object): E-invoicing settings.
- `gateway_tokens` (list): Stored payment methods.
- `group_settings_id` (text): ID of the client group this client belongs to.
- `has_valid_vat_number` (true/false): Whether Invoice Ninja could validate the VAT number.
- `id` (text): The client's Invoice Ninja ID, such as 'Opnel5aKBz'. Use this wherever a step asks for a client.
- `id_number` (text): Your own reference number for the client.
- `industry_id` (text): Invoice Ninja industry ID, as text.
- `is_deleted` (true/false): True once the record has been deleted.
- `is_tax_exempt` (true/false): Whether the client is exempt from tax.
- `last_login` (number): Client-portal last login, as a Unix timestamp in seconds.
- `locations` (list): Additional addresses recorded for the client.
- `name` (text): Company or person name.
- `number` (text): The client number, unique within the company.
- `paid_to_date` (number): Total the client has paid so far.
- `payment_balance` (number): Unapplied payment credit held for this client.
- `phone` (text): Phone number.
- `postal_code` (text): Postal or ZIP code.
- `private_notes` (text): Notes only your team can see.
- `public_notes` (text): Notes the client can see.
- `routing_id` (text): Bank routing identifier.
- `settings` (object): Per-client overrides such as currency, language and payment terms.
- `shipping_address1` (text): First shipping address line.
- `shipping_address2` (text): Second shipping address line.
- `shipping_city` (text): Shipping city.
- `shipping_country_id` (text): ISO numeric country code of the shipping address, as text.
- `shipping_postal_code` (text): Shipping postal or ZIP code.
- `shipping_state` (text): Shipping state, province or region.
- `size_id` (text): Invoice Ninja company-size ID, as text.
- `state` (text): State, province or region.
- `tags` (list): Tags attached to this record.
- `tax_info` (object): Tax registration details.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the client.
- `vat_number` (text): VAT or tax number.
- `website` (text): Website address.

**Example output**

```json
{
  "balance": 1200.0,
  "classification": "business",
  "contacts": [
    {
      "email": "michael@example.com",
      "first_name": "Michael",
      "id": "Wpmbk5ezJn",
      "is_primary": true,
      "last_name": "Bluth"
    }
  ],
  "country_id": "840",
  "created_at": 1757462400,
  "display_name": "Bluth Company",
  "id": "Opnel5aKBz",
  "is_deleted": false,
  "name": "Bluth Company",
  "number": "0001",
  "paid_to_date": 3400.0
}
```

### Update an invoice

Change an existing Invoice Ninja invoice. Fields left blank keep their current values.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's Invoice Ninja ID, such as 'Opnel5aKBz'.
- Client ID (`client_id`, text): Move the invoice to a different client, using that client's Invoice Ninja ID such as 'Opnel5aKBz'. Leave blank to keep it where it is.
- Line items (`line_items`, list): The lines on the invoice. Each needs at least a description ('notes'), a quantity and a unit price ('cost'). Sending lines replaces every existing line, so leave this blank unless the step means to rewrite them all.
- Invoice number (`number`, text): A new invoice number. Numbers must be unique.
- PO number (`po_number`, text): The client's purchase order number.
- Invoice date (`date`, date): A new date for the invoice.
- Due date (`due_date`, date): A new date payment is due.
- Discount (`discount`, number): A discount off the whole invoice. At least 0.
- Discount is an amount (`is_amount_discount`, true/false): Turn on to treat the discount as a cash amount. Leave off to treat it as a percentage.
- Terms (`terms`, text): Terms printed on the invoice.
- Footer (`footer`, text): Footer printed on the invoice.
- Public notes (`public_notes`, text): Notes the client can see.
- Private notes (`private_notes`, text): Notes only your own team can see.

**Outputs**: An Invoice Ninja invoice.

- `amount` (number): Total amount of the document.
- `archived_at` (number): When the record was archived, as a Unix timestamp in seconds. 0 when it is not archived.
- `assigned_user_id` (text): ID of the user the document is assigned to.
- `auto_bill_enabled` (true/false): Whether the client's stored payment method is charged automatically.
- `balance` (number): Amount still outstanding.
- `client_id` (text): ID of the client this document belongs to.
- `created_at` (number): When the record was created, as a Unix timestamp in seconds.
- `custom_surcharge1` (text): Custom field 1 on this record.
- `custom_surcharge2` (text): Custom field 2 on this record.
- `custom_surcharge3` (text): Custom field 3 on this record.
- `custom_surcharge4` (text): Custom field 4 on this record.
- `custom_value1` (text): Custom field 1 on this record.
- `custom_value2` (text): Custom field 2 on this record.
- `custom_value3` (text): Custom field 3 on this record.
- `custom_value4` (text): Custom field 4 on this record.
- `date` (text): Document date, as 'YYYY-MM-DD'.
- `design_id` (text): ID of the PDF design template used.
- `discount` (number): Discount applied to the whole document.
- `documents` (list): Files attached to this record.
- `due_date` (text): Due date, as 'YYYY-MM-DD'. On a quote this is the valid-until date.
- `e_invoice` (object): E-invoicing details.
- `entity_type` (text): Which kind of document this is, such as 'invoice' or 'quote'.
- `exchange_rate` (number): Rate used to convert the client's currency to the company's.
- `footer` (text): Footer shown on the document.
- `has_expenses` (true/false): Whether expenses are billed on this document.
- `has_tasks` (true/false): Whether tasks are billed on this document.
- `id` (text): The record's Invoice Ninja ID, such as 'Opnel5aKBz'.
- `invitations` (list): One entry per contact the document is shared with, each carrying the portal link.
- `is_amount_discount` (true/false): True when the document discount is an amount rather than a percentage.
- `is_deleted` (true/false): True once the record has been deleted.
- `last_sent_date` (text): When the document was last emailed, as 'YYYY-MM-DD'.
- `line_items` (list): The document's lines.
- `location_id` (text): ID of the location the document is billed from.
- `next_send_date` (text): When the next reminder is scheduled, as 'YYYY-MM-DD'.
- `number` (text): The document number, unique within the company.
- `paid_to_date` (number): Amount paid against this document so far.
- `partial` (number): Deposit amount requested before the full balance.
- `partial_due_date` (text): Due date of the deposit, as 'YYYY-MM-DD'.
- `po_number` (text): Purchase order number.
- `private_notes` (text): Notes only your team can see.
- `project_id` (text): ID of the linked project, when there is one.
- `public_notes` (text): Notes the client can see.
- `recurring_id` (text): ID of the recurring invoice that generated this one.
- `reminder_last_sent` (text): When the last reminder went out, as 'YYYY-MM-DD'.
- `status_id` (text): Status as text. For invoices: '1' draft, '2' sent, '3' partial, '4' paid, '5' cancelled, '6' reversed.
- `subscription_id` (text): ID of the subscription that produced the document.
- `tags` (list): Tags attached to this record.
- `tax_info` (object): Tax registration details.
- `tax_name1` (text): Name of tax 1, for example 'VAT'.
- `tax_name2` (text): Name of tax 2, for example 'VAT'.
- `tax_name3` (text): Name of tax 3, for example 'VAT'.
- `tax_rate1` (number): Percentage rate of tax 1.
- `tax_rate2` (number): Percentage rate of tax 2.
- `tax_rate3` (number): Percentage rate of tax 3.
- `terms` (text): Terms shown on the document.
- `total_taxes` (number): Total tax charged.
- `updated_at` (number): When the record last changed, as a Unix timestamp in seconds.
- `user_id` (text): ID of the user who created the document.
- `uses_inclusive_taxes` (true/false): True when the line prices already include tax.
- `vendor_id` (text): ID of the linked vendor, when there is one.

**Example output**

```json
{
  "amount": 1200.0,
  "balance": 1200.0,
  "client_id": "Wpmbk5ezJn",
  "created_at": 1757462400,
  "date": "2026-09-01",
  "due_date": "2026-09-30",
  "id": "Opnel5aKBz",
  "is_deleted": false,
  "line_items": [
    {
      "cost": 150.0,
      "line_total": 1200.0,
      "notes": "Consulting, September",
      "product_key": "CONSULT",
      "quantity": 8.0
    }
  ],
  "number": "0012",
  "paid_to_date": 0.0,
  "status_id": "2"
}
```
