Invoices
Invoices with line items, totals, balances, and a send flow.
/invoicesList invoices
Returns a cursor-paginated list of invoices for the organization that owns the API key. Results are ordered by document id and exclude soft-deleted invoices. Pass number or uuid to look up a specific invoice server-side instead of paging the whole list. Requires scope: invoices:read.
Parameters
Query
numberuuidResponse 200
Errors
/invoicesCreate an invoice
Creates a new invoice. The provided lineItems are validated and the subtotal, tax total, total, and balance are computed server-side - any caller-sent totals are ignored. A sequential business number is assigned from the organization's numbering settings. At least one line item is required. Requires scope: invoices:write.
Request body
lineItemsrequirednamerequireddescriptionquantityrequiredunitPricerequiredunitCosttaxabletaxRatetypeitemIdinvoiceNamestatusdueDatetermscurrencynotesdiscountNameclientIdclientUUIDclientDocIdclientNamefirstNamelastNamecompanyNameemailphoneNumberaddressline1unitcitystatezipcountryappointmentIdappointmentUUIDappointmentDocIdorganizationCompanyIdcustomFieldsResponse 201
idobjectnumberuuidinvoiceNamestatuscurrencytermsdueDatesentsentAtsubtotaltaxTotaltotaldiscountTotaldiscountNametipTotaltaxableTotaltaxRateitemCostTotallaborCostTotalamountPaidbalancenotesclientIdclientUUIDclientDocIdclientNamefirstNamelastNamecompanyNameemailphoneNumberaddressline1unitcitystatezipcountryappointmentIdappointmentUUIDappointmentDocIdorganizationCompanyIdbilledFromcompanyNameaddressemailphonelogoUrlwebsiteUrltimeZonetimeZoneLabellineItemsentryIditemIditemandservicesIdnamedescriptionquantityunitPriceunitCostamounttaxabletaxRatetypesignaturessignaturecustomFieldsissueDatereminderSentAtcreatedAtupdatedAtErrors
/invoices/{id}Retrieve an invoice
Returns a single invoice by id. A record belonging to another organization returns 404 rather than 403, so this can never confirm cross-tenant existence. Requires scope: invoices:read.
Parameters
Path
idrequiredResponse 200
idobjectnumberuuidinvoiceNamestatuscurrencytermsdueDatesentsentAtsubtotaltaxTotaltotaldiscountTotaldiscountNametipTotaltaxableTotaltaxRateitemCostTotallaborCostTotalamountPaidbalancenotesclientIdclientUUIDclientDocIdclientNamefirstNamelastNamecompanyNameemailphoneNumberaddressline1unitcitystatezipcountryappointmentIdappointmentUUIDappointmentDocIdorganizationCompanyIdbilledFromcompanyNameaddressemailphonelogoUrlwebsiteUrltimeZonetimeZoneLabellineItemsentryIditemIditemandservicesIdnamedescriptionquantityunitPriceunitCostamounttaxabletaxRatetypesignaturessignaturecustomFieldsissueDatereminderSentAtcreatedAtupdatedAtErrors
/invoices/{id}Update an invoice
Updates an existing invoice. Only the supplied fields are changed. When lineItems are provided, the subtotal, tax total, total, and balance are recomputed server-side - caller-sent totals are never trusted. Line-item edits are rejected with a 422 once the invoice is paid, completed, fulfilled, cancelled, or voided. At least one line item is required when lineItems is supplied. Requires scope: invoices:write.
Parameters
Path
idrequiredRequest body
lineItemsnamerequireddescriptionquantityrequiredunitPricerequiredunitCosttaxabletaxRatetypeitemIdinvoiceNamestatusdueDatetermscurrencynotesdiscountNamesentclientIdclientUUIDclientDocIdclientNamefirstNamelastNamecompanyNameemailphoneNumberaddressline1unitcitystatezipcountryappointmentIdappointmentUUIDappointmentDocIdorganizationCompanyIdcustomFieldsResponse 200
idobjectnumberuuidinvoiceNamestatuscurrencytermsdueDatesentsentAtsubtotaltaxTotaltotaldiscountTotaldiscountNametipTotaltaxableTotaltaxRateitemCostTotallaborCostTotalamountPaidbalancenotesclientIdclientUUIDclientDocIdclientNamefirstNamelastNamecompanyNameemailphoneNumberaddressline1unitcitystatezipcountryappointmentIdappointmentUUIDappointmentDocIdorganizationCompanyIdbilledFromcompanyNameaddressemailphonelogoUrlwebsiteUrltimeZonetimeZoneLabellineItemsentryIditemIditemandservicesIdnamedescriptionquantityunitPriceunitCostamounttaxabletaxRatetypesignaturessignaturecustomFieldsissueDatereminderSentAtcreatedAtupdatedAtErrors
/invoices/{id}Delete an invoice
Soft-deletes an invoice. The invoice is never hard-deleted; it is stamped with a deletion timestamp and excluded from future reads. Requires scope: invoices:write.
Parameters
Path
idrequiredResponse 200
idobjectdeletedErrors
/invoices/{id}/sendSend an invoice
Marks an invoice as sent (sets the sent flag and a sent timestamp). If the invoice is currently a draft or has no status, its status transitions to "sent"; an invoice already past draft keeps its status. This endpoint does not email the client. Requires scope: invoices:write.
Parameters
Path
idrequiredResponse 200
idobjectnumberuuidinvoiceNamestatuscurrencytermsdueDatesentsentAtsubtotaltaxTotaltotaldiscountTotaldiscountNametipTotaltaxableTotaltaxRateitemCostTotallaborCostTotalamountPaidbalancenotesclientIdclientUUIDclientDocIdclientNamefirstNamelastNamecompanyNameemailphoneNumberaddressline1unitcitystatezipcountryappointmentIdappointmentUUIDappointmentDocIdorganizationCompanyIdbilledFromcompanyNameaddressemailphonelogoUrlwebsiteUrltimeZonetimeZoneLabellineItemsentryIditemIditemandservicesIdnamedescriptionquantityunitPriceunitCostamounttaxabletaxRatetypesignaturessignaturecustomFieldsissueDatereminderSentAtcreatedAtupdatedAt