See Error concepts for how to handle errors idiomatically. This page is the complete code table.

Error envelope

{
  "error": {
    "type": "validation_error",
    "code": "email_invalid",
    "message": "...",
    "param": "email",
    "requestId": "req_01HX3ZE..."
  }
}

By status code

400 validation_error

codeMeaning
field_requiredRequired field missing. See param.
field_too_longparam exceeded max length.
field_too_shortparam below min length.
enum_invalidparam isn’t an allowed value.
email_invalidNot a valid email.
phone_invalidNot a valid E.164 phone.
url_invalidNot a valid URL.
currency_invalidUnsupported currency code.
amount_too_smallBelow minimum charge amount.
amount_too_largeAbove maximum allowed for this tier.
idempotency_key_reuseKey used with a different body.
idempotency_key_conflictKey in use by a concurrent request.
cursor_expiredPagination cursor older than 24 hours.

401 authentication_error

codeMeaning
key_missingMissing x-api-key or x-api-secret.
key_invalidKey pair not recognized.
key_revokedKey pair was revoked.
signature_invalidWebhook signature check failed.

403 permission_error

codeMeaning
key_forbiddenKey lacks the required scope.
tenant_suspendedTenant has been suspended.
feature_not_enabledFeature (e.g., payments) isn’t enabled on this tenant.

404 not_found

codeMeaning
resource_not_foundNo object with that ID visible to this tenant.

409 conflict

codeMeaning
duplicate_emailUser with this email already exists.
kyc_already_completedKYC is finalized.
transaction_not_pendingTransaction is past the point of this action.
invite_already_acceptedInvite token has been consumed.

429 rate_limit_error

codeMeaning
rate_limit_exceededHonor Retry-After.

5xx api_error

codeMeaning
internal_errorUnexpected Geldstuck-side error. Retry with backoff.
upstream_errorA dependent service is degraded. Retry with backoff.
service_unavailableBrief outage. Retry with backoff.
When filing a support ticket, include the x-request-id header value from the failing response - it uniquely identifies the request across all our logs.