nenoDevelopers
⌘K
v1

Concepts

Document lifecycle

Invoices and quotes share a data model but move through separate sets of statuses.

Invoices

draftpending_reviewapprovedfinalizedsentpaid
Status Meaning
draft Can be edited. No invoice number yet.
pending_review Waiting for someone in the workspace to review it.
approved Reviewed and ready to finalize.
finalized Numbered and locked against changes.
sent Emailed to the customer.
paid Payment recorded. paidAt is set.
cancelled Voided. Kept on record.

We may add statuses to this list. Treat a value you don’t recognise as still in progress instead of raising an error. See Compatibility.

Drafts

There’s no separate drafts endpoint. List drafts with GET /invoices?status=draft and edit them with PATCH /invoices/{id}. Only drafts can be edited.

Quotes

quote_draftquote_sentquote_acceptedquote_convertedA sent quote can also end asquote_declinedorquote_expired

Quote statuses start with quote_ so they can’t be mistaken for invoice statuses. A quote can only be accepted or declined once it has been sent, and it can expire while sent or accepted. Converting an accepted quote creates a new draft invoice and moves the quote to quote_converted.

Invoice numbers

invoiceNumber is null until the invoice is finalized. Numbers follow the sequence set up in the workspace, so don’t generate your own or depend on the format.

The id field is a public handle, not the invoice number. Use id in API calls and show invoiceNumber to people.