Invoices
Create, send, and manage invoices. Invoices post to the double-entry ledger when sent, debiting Accounts Receivable and crediting revenue accounts.
The Invoice Object
| Field | Type | Description |
|---|---|---|
| id | string | Invoice UUID |
| object | string | Always 'invoice' |
| invoice_number | string | Human-readable invoice number (e.g., INV-0001) |
| document_status | string | draft, issued, or voided |
| payment_status | string | unpaid, partially_paid, paid, or written_off; null unless issued |
| delivery_status | string | not_sent, sending, sent, or viewed; null when unknown (delivered outside Imprest, or before it was recorded) |
| display_status | string | The one word to show: voided, draft, pending_approval, written_off, paid, overdue, partially_paid, viewed, sent, not_sent, or open |
| overdue | boolean | Owes money past its due date on the company's day |
| issued_at | string | ISO 8601 timestamp the invoice went on the books (null for a draft) |
| voided_at | string | ISO 8601 timestamp it was voided (null unless voided) |
| paid_at | string | ISO 8601 timestamp its balance reached zero (null while it owes) |
| first_viewed_at | string | ISO 8601 timestamp the customer first opened it (null if never) |
| issue_date | string | ISO 8601 date |
| due_date | string | ISO 8601 date |
| currency | string | ISO currency code (e.g., USD) |
| subtotal_cents | number | Subtotal before tax, in cents |
| tax_amount_cents | number | Total tax in cents |
| total_cents | number | Total including tax, in cents |
| amount_due_cents | number | Remaining balance in cents |
| terms | string | Payment terms |
| memo | string | Internal memo |
| note_to_customer | string | Note visible to customer |
| party | object | |
| line_items | string[] | Invoice line items |
| created_at | string | ISO 8601 timestamp |
| updated_at | string | ISO 8601 timestamp |
Endpoints
/api/v1/invoicesList invoices
Returns a paginated list of invoices for the current organization.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| document_status | array | Filter by document state: a value, or document_status[] for any of (draft, issued, voided) |
| payment_status | array | Filter by payment state: a value, or payment_status[] for any of (unpaid, partially_paid, paid, written_off) |
| display_status | array | Filter by the shown word: a value, or display_status[] for any of (see display_status) |
| delivery_status | array | Filter by delivery: a value, or delivery_status[] for any of (not_sent, sending, sent, viewed) |
| overdue | string | true: owes money past its due date on the company's day; false: everything else |
| customer_id | string | Filter by customer (party) UUID |
| search | string | Search by invoice number, customer name or memo |
| page | number | Page number (default 1) |
| per_page | number | Results per page (1-200, default 50) |
| limit | number | Number of results (1-50, default 25) |
/api/v1/invoicesCreate an invoice
Creates a new invoice with line items.
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| customer_idrequired | string | Customer UUID |
| invoice_number | string | Custom invoice number |
| issue_date | string | Issue date (YYYY-MM-DD) |
| due_date | string | Due date (YYYY-MM-DD) |
| terms | string | Payment terms |
| note_to_customer | string | Note visible to customer |
| memo | string | Internal memo |
| line_items_attributes | array | Line items |
/api/v1/invoices/:idRetrieve an invoice
Returns a single invoice with its payments.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Invoice UUID |
/api/v1/invoices/:idUpdate an invoice
Updates an invoice. Recalculates totals and reposts to ledger.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Invoice UUID |
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| customer_id | string | Customer UUID |
| invoice_number | string | Custom invoice number |
| issue_date | string | Issue date (YYYY-MM-DD) |
| due_date | string | Due date (YYYY-MM-DD) |
| terms | string | Payment terms |
| note_to_customer | string | Note visible to customer |
| memo | string | Internal memo |
| line_items_attributes | array | Line items |
/api/v1/invoices/:id/sendSend an invoice
Sends the invoice to the customer via email. Posts to ledger if not already posted.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Invoice UUID |
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| dimension_values | object | Dimension tagging (dimension_id => value_id) |
/api/v1/invoices/:id/emailEmail an invoice
Emails an invoice that is already issued: one saved without sending (delivery_status not_sent), or a resend. Never posts or changes the invoice; its delivery_status reads sending until the email goes out. A refusal is a 422 whose error_code says why: invoice_draft (use send), invoice_voided, customer_no_email or already_sending; a 503 (email_not_queued) means nothing was sent and it can be tried again.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Invoice UUID |
/api/v1/invoices/:id/remindSend payment reminder
Queues a payment reminder email to the customer, in the company's reminder wording (its reminder schedule's step for this invoice when the schedule is on). Never re-sends or posts the invoice. At most one reminder per invoice per day. A refusal is a 422 whose error_code says why: invoice_not_owed, customer_no_email, customer_opted_out, invoice_opted_out, customer_email_bounced, reminders_paused, already_reminded_today, company_write_locked or demo_company.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Invoice UUID |
/api/v1/invoices/:id/voidVoid an invoice
Voids the invoice and reverses its ledger entry.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Invoice UUID |
/api/v1/invoices/:id/record_paymentRecord a payment
Records a payment against the invoice.
Path & Query Parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Invoice UUID |
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| amount_cents | number | Payment amount in cents (defaults to amount due) |
| date | string | Payment date (YYYY-MM-DD, defaults to today) |
| payment_method | string | Payment method (check, cash, credit_card, bank_transfer, other) |
| deposit_to_account_id | string | Account to deposit into |
| intercompany_account_overrides | array | Multi-entity companies: which account each automatic owed-between line uses, when the deposit account belongs to a different entity than the invoice |