Skip to content

Error codes

Errors use standard HTTP status codes and always return the same JSON shape, with a stable machine-readable code.

{
  "error": {
    "code": "validation_error",
    "message": "The request parameters are invalid.",
    "details": { "fields": { "amount": ["The amount must be greater than zero."] } },
    "request_id": "9f2c1c1e-..."
  }
}

Write your logic against code, not message. Messages may change, codes will not. details is only present when there is extra information.

Retry or not?

  • 4xx: fix the request first. Retrying the same request will fail the same way. The exceptions are 409 request_in_progress and 429, which you can retry after a short wait.
  • 5xx: safe to retry with the same Idempotency-Key. Failed requests are not stored, so the retry runs again without creating a duplicate.

All error codes

StatusCodeMeaning
Authentication & access
401authentication_requiredNo API key was sent.
401invalid_api_keyThe key is invalid, expired or revoked.
403ip_not_allowedThe request IP is not on the key's allowlist.
403insufficient_scopeThe key lacks the scope in details.required_scope.
403account_suspendedThe merchant account is suspended.
403account_not_allowedThe account cannot perform this action, for example live payments before verification.
Request
422validation_errorOne or more fields are invalid. details.fields lists them.
400idempotency_key_requiredThe POST needs an Idempotency-Key header.
400invalid_idempotency_keyThe key must be 1–191 printable ASCII characters.
422idempotency_key_reusedThis key was already used with a different request body.
409request_in_progressA request with this key is still running.
409duplicate_referenceThe reference was already used; see details.existing_id.
404resource_not_foundNo such object for your account and mode.
429rate_limitedToo many requests. See Rate limits.
Payments & payouts
422currency_not_supportedThe provider does not support this currency in this direction.
422network_not_supportedThe network is not supported for this currency.
422network_requiredA network must be given for this payout.
422amount_out_of_rangeBelow the minimum or above the maximum; see details.
422limit_exceededOver a per-transaction or daily limit on your account.
422insufficient_balanceAvailable balance does not cover the payout's total debit.
422destination_not_supportedThe provider cannot pay out to this destination type.
422provider_not_availableNo enabled provider can handle the request, or the chosen one is not available.
422unsupported_operationThe provider does not support this operation.
409invalid_stateThe object's current status does not allow this, for example cancelling an approved payout.
Platform & provider
502 / 503provider_error and other provider codesThe provider rejected or failed the request. details.retryable says whether a retry may succeed (503) or not (502).
503service_unavailableNew payments or payouts are temporarily paused for maintenance.
500internal_errorUnexpected error on our side. Retry, and contact support with the request_id if it continues.