invoice_invalid_status_transition
The target status is unreachable from the current one. The document lifecycle is directed: `draft` moves to `scheduled`, `issued` or `cancelled`, `scheduled` back to `draft` or on to `issued`, `issued` to `overdue` or `annulled`, `overdue` to `annulled`, and `cancelled` and `annulled` are terminal. The lifecycle is the same in every API version; before `2026-10-01` the `issued` status is published as `sent`. Being paid is not a step of that lifecycle: it is read from the payment ledger.
| Code | Type | HTTP | Category |
|---|---|---|---|
invoice_invalid_status_transition | invalid_request_error | 422 | Invoices |
Cause
The target status is unreachable from the current one. The document lifecycle is directed: draft moves to scheduled, issued or cancelled, scheduled back to draft or on to issued, issued to overdue or annulled, overdue to annulled, and cancelled and annulled are terminal. The lifecycle is the same in every API version; before 2026-10-01 the issued status is published as sent. Being paid is not a step of that lifecycle: it is read from the payment ledger.
What to do
Read the current status and call the operation for the step you actually need, instead of setting the target status directly.