Cancel a draft or open invoice, moving it to void and queueing a void-stamped document. This is terminal: reissue by creating a new invoice.
The invoice's line items are deleted in the same transaction and their ledger journal entries are released back to the uninvoiced pool, so the response always carries an empty line_items array.
A void is rejected with 409 when the invoice has a linked payment that has already gone to the bank (any status other than pending), since that payment can no longer be cancelled. To reverse a paid invoice, issue a credit note instead: create an invoice with original_invoice_id set.
A credit note itself can never be voided, also 409: it is allocated to the invoice it credits on creation, and that invoice is already refunded.
Invoicing is opt-in per organization: unless the invoicing feature flag is enabled for your organization this endpoint returns 403.
400The invoice cannot move to void from its current status. Only a draft or open invoice can be voided.
403Invoicing is not enabled for the organization, or the caller is missing the invoices:void permission.
404No such invoice, or the caller's user group does not grant access to its policy.
409The invoice's linked payment has already gone to the bank and can no longer be cancelled (reconcile the payment before voiding), the invoice is a credit note, or the invoice was modified by a concurrent writer.