v2

latestOpenAPI 3.1.12026-08-078549932.4 MB
Invoices

Cancel a bill that should never have been billed (wrong patient, duplicate, service not rendered, goodwill write-off): Status → InvoiceStatus.Void, terminal. This is the exit for invoices built directly in the Payments panel, which have no source estimate and therefore can't revert. A required reason lands in the payment audit log. Refused once any money is attached — reverse the payments first (a Void bill can never take or hold a payment). Dispensed lines do NOT block: voiding the bill never returns stock (there is no reverse-dispense primitive; see docs/dispensing.md §5) — stock corrections are a separate inventory adjustment. Distinct from Superseded (finalized then replaced): merge and revert keep producing Superseded; Void means cancelled outright. Releases the bill's claims on everything upstream of it — the appointment slot, the source quote's invoice_id, and the reverse dispense links — so a live quote stops resolving to a written-off bill. Unlike revert-to-estimate this leaves the quote's EstimateStatus untouched: void cancels the bill, it does not reopen the quote for editing.

post/Invoices/{id}/void

Path parameters

idstring required

Request body

reasonstring nullable

Response

OK

idstring
invoiceNumberstring
clientIdstring nullable
clientNamestring nullable
patientIdstring nullable
patientNamestring nullable
appointmentIdstring nullable
providerModestring
invoiceProviderIdstring nullable
statusstring
taxModestring

"us-sales-tax" or "vat" — snapshot at estimate creation.

notesstring nullable
mergedIntoInvoiceIdstring nullable

Set when this invoice was merged into a new combined invoice (it is then Superseded): the id of the successor bill.

mergedIntoInvoiceNumberstring nullable

Human-readable number of the successor combined invoice this one was merged into (set only on a Superseded source). Lets the UI link forward without a second fetch.

signatureDatastring nullable
signedAtstring date-time nullable
issuedAtstring date-time nullable

When the bill was issued (Draft → Unpaid) and its totals frozen. Null for Drafts and legacy invoices issued before the issue boundary.

createdAtstring date-time
updatedAtstring date-time