Errors

Error response shape, error codes, and what to retry.

The API uses standard HTTP status codes, and error responses share a single JSON shape.

Error response body

{
  "errorCode": "account_balance_insufficient",
  "message": "Account balance is insufficient"
}
  • errorCode — a stable, machine-readable snake_case code. Branch your error handling on this, not on message.
  • message — a human-readable description; wording may change without notice.
📘

One exception: 401 Unauthorized returns an empty body (no JSON). Treat any 401 as an invalid or missing API key.

Error codes

Request & auth

HTTPerrorCodeMeaning / what to do
400invalid_requestA field is missing, malformed, or fails validation. The message names the field.
400invalid_phone_number_formatrecipient.phone_number doesn't match the product country's format.
401(empty body)Missing or invalid API key, or key/environment mismatch.
403permission_deniedYour key isn't allowed to perform this operation.
404not_foundUnknown route or resource.
405method_not_allowedWrong HTTP method.
429rate_limit_exceededToo many requests — see Rate limiting.
500unhandled_errorUnexpected server error. Contact support if it persists.

Orders

HTTPerrorCodeMeaning / what to do
400account_balance_insufficientNot enough balance to place the order. Top up in the dashboard (Funding).
400price_range_exceedcustom_amount is outside the product's min_amountmax_amount.
400invalid_order_accessThe order exists but doesn't belong to your account.
400resend_not_allowedResend is only supported for EMAIL and TEXT order items.
400acceptance_expiredThe recipient's acceptance link has expired.
400order_item_cancelledThe order item was cancelled and can't be acted on.
404order_not_found / order_item_not_foundNo such order / order item in your account.
404order_item_not_issuedThe voucher hasn't been issued yet — retry after the item completes.
500order_retry_neededTemporary concurrency conflict. Safe to retry — use external_reference_id so the retry is idempotent.

Products

HTTPerrorCodeMeaning / what to do
404item_not_foundNo such product ID.

Retry guidance

  • Retry: 429 (after 1 second), 500 with order_retry_needed (immediately, a few times with backoff).
  • Don't retry: any 400 — fix the request first.
  • Always pass external_reference_id when creating orders, so retries can never create duplicates. See Idempotency & retries.

Did this page help you?