invalid_request | 400 | The request was rejected during validation. The errors array lists each failing field with a reason, so you can map the failure back to a specific parameter. |
unauthorized | 401 | Authentication failed: the API key is missing, malformed, or revoked. Send a valid key as a bearer token in the Authorization header. Each key is bound to a single environment (test or live). |
invoice_not_found | 404 | No invoice matches the supplied identifier in the environment the API key belongs to. An invoice created with a live key is not visible to a test key, and vice versa. |
customer_not_found | 404 | No customer matches the supplied external_customer_id in the environment the API key belongs to. A customer recorded with a live key is not visible to a test key, and vice versa. |
customer_ambiguous | 409 | The environment has more than one integration, so external_customer_id on its own does not identify a single customer (the same id can exist in two integrations for different customers). Supply integration_id alongside external_customer_id to scope the session to one integration. You do not need it when the environment has a single integration. |
download_link_expired | 410 | The download_url returned by the download endpoint has expired or was altered. These links are time-limited bearer URLs; request a new one from the download endpoint rather than storing them indefinitely. |
internal_error | 500 | An unexpected error occurred on our side. No partial work is persisted, so the request can be retried safely. |