Skip to main content
Every error response from either API — Payments or Checkout — uses this same shape and these same retry rules. Read this page first, then go to Payment operation errors or Payment method errors for the URN catalog itself. For the response envelope and money shapes, see Request conventions.

Problem format

Both the Payments API and the Checkout API return errors as RFC 9457 application/problem+json bodies:
type is the URN to match against in code — never parse detail, which is a human-readable string that can change. Some errors add extension members to the body: retry_after is not a body field — when RadiumOne wants you to wait before retrying, it’s the Retry-After HTTP response header (seconds), most commonly on 429.

Validation error details

Most 400 urn:radiumone:gateway:validation-error responses add an errors array alongside detail — one entry per invalid field:
Rely on pointer/parameter and code to drive logic — not the wording of either detail (the top-level one or a field’s own), which can change. errors is present only when the request failed schema validation — absent on other 400s. It’s present when the request itself doesn’t match the endpoint’s schema: a missing or wrongly typed body field, a value that breaks a format or length rule, or an invalid query or path parameter. It’s absent when the 400 comes from a business check that runs after schema validation passed — same URN, same status, no errors array. Always handle errors being absent rather than assuming every 400 gateway:validation-error carries one.

HTTP status guide

Retry rules

Any 2xx response is a result you must branch on status — never on response_code (that’s the verbatim host/acquirer code; useful for support tickets, not for your app logic). In short: timeouts, 5xx, and PENDING are retried with the same key; a decline or a validation/business error is not retried with the same key — fix the input, or start a genuinely new attempt with a new key. A 409 urn:radiumone:transaction:idempotency-body-mismatch means the key was reused with a different body — it is never safe to retry as-is. See Handle timeouts and unknown outcomes and Retry when the service is unavailable for the full walkthroughs.

Errors from other products

3D Secure errors

3D Secure statuses, SDK errors, and gateway errors have their own full tables — see Authentication results, the single reference for that family. This page doesn’t duplicate them. If you’re bringing your own 3DS provider’s evidence, see Handle 3DS failures with your own provider.

Checkout API errors

The Checkout API (Hosted checkout) has its own error pages — see Checkout API errors for the full checkout:*/session:*/security:* URN catalog, or the Hosted checkout Errors section for outcomes and redirect/embedded signals.

Rate limits

RadiumOne doesn’t publish specific rate-limit numbers. If you’re consistently hitting 429 urn:radiumone:rate-limit-exceeded, retry after the response’s Retry-After header, then contact support to discuss your integration’s traffic pattern.

Next steps

Payment operation errors

Auth, validation, idempotency, transaction-state, and reversal errors.

Payment method errors

Loyalty, discovery, routing, and token errors.

Decline codes

How a declined payment appears, and how to handle it — that’s not an error.

Handle failures

Find the right recovery page by symptom.
Last modified on September 15, 2026