| bad_request | 400 | no | — | The request is malformed — a missing header, an unparseable body, an unknown filter value. |
| config_error | 500 | no | — | A server-side misconfiguration. Not a client error; report it. |
| forbidden | 403 | no | — | The key is valid but its permissions do not include the one this route requires. |
| idempotency_conflict | 409 | no | — | This Idempotency-Key already names a different order. Use a fresh key for a new order. |
| illegal_transition | 500 | no | — | The order was in an unexpected status when the change was applied. Nothing was charged. Report it if it repeats. |
| insufficient_funds | 402 | no | yes | The account balance does not cover the order. details carries the shortfall in cents. |
| internal_error | 500 | no | — | An unhandled server-side failure. Report it with the time of the call. |
| invalid_amount | 500 | no | — | A price or amount failed validation. Server-side; report it. |
| invalid_argument | 400 | no | — | A pagination or filter argument was out of range or the wrong shape. |
| invalid_ledger_entry | 500 | no | — | A ledger entry failed validation. Server-side; report it. |
| invalid_order_input | 500 | no | — | An order field was rejected before anything was charged. |
| invalid_pricing_rule | 500 | no | — | A pricing rule is malformed. Server-side; report it. |
| invalid_refund_reason | 500 | no | — | A refund was attempted with an unknown reason. Server-side; report it. |
| invalid_signature | 401 | no | — | A webhook signature did not verify. Not reachable from /api/v1. |
| ledger_post_failed | 500 | no | — | A balance movement could not be recorded. Nothing was charged; the request is safe to retry. |
| not_found | 404 | no | — | No such route, order, country, service or destination for this key's account. |
| order_create_conflict | 409 | yes | — | The Idempotency-Key collided with an order that then rolled back. Retry with the same key. |
| order_family_mismatch | 500 | no | — | An order was routed to the wrong family's provisioner. Server-side; report it. |
| order_not_cancellable | 409 | no | — | The order is in a status that cannot be cancelled — it is already completed, expired, failed or cancelled. |
| order_not_found | 404 | no | — | The order named by the request does not exist. |
| order_transition_failed | 500 | no | — | The order's status could not be advanced. Server-side; report it. |
| out_of_stock | 409 | no | — | No provider could supply this product right now. Nothing was charged. |
| provider_not_registered | 500 | no | — | No adapter is registered for the provider this order needs. Server-side; report it. |
| provider_unavailable | 503 | yes | — | A provider's circuit breaker is open. Safe to retry shortly. |
| rate_limited | 429 | yes | yes | Over the key's rate_limit for the current 60-second window. Retry-After says when to try again. |
| rental_not_priced | 409 | no | — | No pricing rule covers this rental term, so no price could be quoted. Nothing was charged. |
| sms_already_received | 409 | no | — | This order has already received an SMS, so it cannot be cancelled or refunded. The code you were sent is yours. |
| unauthorized | 401 | no | — | No Authorization: Bearer sk_live_… header, or the key is unknown, revoked, expired, or belongs to a blocked account. |
| upstream_error | 502 | no | — | A provider rejected or failed the call. Nothing was charged, or the charge was refunded. |
| upstream_timeout | 504 | yes | — | A provider did not answer in time. Safe to retry. |
| user_not_found | 404 | no | — | The account behind the key could not be read. Server-side; report it. |