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

FieldTypeDescription
idstringInvoice UUID
objectstringAlways 'invoice'
invoice_numberstringHuman-readable invoice number (e.g., INV-0001)
document_statusstringdraft, issued, or voided
payment_statusstringunpaid, partially_paid, paid, or written_off; null unless issued
delivery_statusstringnot_sent, sending, sent, or viewed; null when unknown (delivered outside Imprest, or before it was recorded)
display_statusstringThe one word to show: voided, draft, pending_approval, written_off, paid, overdue, partially_paid, viewed, sent, not_sent, or open
overduebooleanOwes money past its due date on the company's day
issued_atstringISO 8601 timestamp the invoice went on the books (null for a draft)
voided_atstringISO 8601 timestamp it was voided (null unless voided)
paid_atstringISO 8601 timestamp its balance reached zero (null while it owes)
first_viewed_atstringISO 8601 timestamp the customer first opened it (null if never)
issue_datestringISO 8601 date
due_datestringISO 8601 date
currencystringISO currency code (e.g., USD)
subtotal_centsnumberSubtotal before tax, in cents
tax_amount_centsnumberTotal tax in cents
total_centsnumberTotal including tax, in cents
amount_due_centsnumberRemaining balance in cents
termsstringPayment terms
memostringInternal memo
note_to_customerstringNote visible to customer
partyobject
line_itemsstring[]Invoice line items
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Endpoints

GET/api/v1/invoices

List invoices

Returns a paginated list of invoices for the current organization.

Path & Query Parameters

ParameterTypeDescription
document_statusarrayFilter by document state: a value, or document_status[] for any of (draft, issued, voided)
payment_statusarrayFilter by payment state: a value, or payment_status[] for any of (unpaid, partially_paid, paid, written_off)
display_statusarrayFilter by the shown word: a value, or display_status[] for any of (see display_status)
delivery_statusarrayFilter by delivery: a value, or delivery_status[] for any of (not_sent, sending, sent, viewed)
overduestringtrue: owes money past its due date on the company's day; false: everything else
customer_idstringFilter by customer (party) UUID
searchstringSearch by invoice number, customer name or memo
pagenumberPage number (default 1)
per_pagenumberResults per page (1-200, default 50)
limitnumberNumber of results (1-50, default 25)
POST/api/v1/invoices

Create an invoice

Creates a new invoice with line items.

Body Parameters

ParameterTypeDescription
customer_idrequiredstringCustomer UUID
invoice_numberstringCustom invoice number
issue_datestringIssue date (YYYY-MM-DD)
due_datestringDue date (YYYY-MM-DD)
termsstringPayment terms
note_to_customerstringNote visible to customer
memostringInternal memo
line_items_attributesarrayLine items
GET/api/v1/invoices/:id

Retrieve an invoice

Returns a single invoice with its payments.

Path & Query Parameters

ParameterTypeDescription
idrequiredstringInvoice UUID
PATCH/api/v1/invoices/:id

Update an invoice

Updates an invoice. Recalculates totals and reposts to ledger.

Path & Query Parameters

ParameterTypeDescription
idrequiredstringInvoice UUID

Body Parameters

ParameterTypeDescription
customer_idstringCustomer UUID
invoice_numberstringCustom invoice number
issue_datestringIssue date (YYYY-MM-DD)
due_datestringDue date (YYYY-MM-DD)
termsstringPayment terms
note_to_customerstringNote visible to customer
memostringInternal memo
line_items_attributesarrayLine items
POST/api/v1/invoices/:id/send

Send an invoice

Sends the invoice to the customer via email. Posts to ledger if not already posted.

Path & Query Parameters

ParameterTypeDescription
idrequiredstringInvoice UUID

Body Parameters

ParameterTypeDescription
dimension_valuesobjectDimension tagging (dimension_id => value_id)
POST/api/v1/invoices/:id/email

Email 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

ParameterTypeDescription
idrequiredstringInvoice UUID
POST/api/v1/invoices/:id/remind

Send 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

ParameterTypeDescription
idrequiredstringInvoice UUID
POST/api/v1/invoices/:id/void

Void an invoice

Voids the invoice and reverses its ledger entry.

Path & Query Parameters

ParameterTypeDescription
idrequiredstringInvoice UUID
POST/api/v1/invoices/:id/record_payment

Record a payment

Records a payment against the invoice.

Path & Query Parameters

ParameterTypeDescription
idrequiredstringInvoice UUID

Body Parameters

ParameterTypeDescription
amount_centsnumberPayment amount in cents (defaults to amount due)
datestringPayment date (YYYY-MM-DD, defaults to today)
payment_methodstringPayment method (check, cash, credit_card, bank_transfer, other)
deposit_to_account_idstringAccount to deposit into
intercompany_account_overridesarrayMulti-entity companies: which account each automatic owed-between line uses, when the deposit account belongs to a different entity than the invoice