Skip to main content
elements.submit() calls RadiumOne directly from inside the card iframe. When the tokenization (“bind”) call fails, submit() rejects with an ElementsError that carries the gateway’s error verbatim — your job is to branch on retryAllowed, not on the HTTP status.
TL;DR: submit() rejects with a gateway ElementsError → branch on retryAllowed, not the HTTP status; most codes mean start a new session.

When this happens

  • The session or its encryption key expired or was never valid.
  • The card data itself fails validation inside the iframe.
  • The publishable key is missing, malformed, or belongs to a different merchant than the session.
  • The session is already bound to a different card, or has hit its per-session bind attempt lockout.
  • The gateway’s tokenization service is temporarily unavailable (a genuine outage, distinct from a lockout).

What you see

submit() rejects with an ElementsError whose code is the gateway’s problem+json type URN, verbatim — including a URN this SDK build doesn’t recognize yet, so match on the string directly. Most tokenization errors are not retryable — they mean the session, key, or card data itself is unusable and need a fresh session. The one exception today is a genuine service outage, which the SDK already retries twice internally before it gives up.

What to do

1

Always branch on retryAllowed

2

Start a new session for non-retryable codes

Create a payment session (API reference) and re-render the card fields — don’t call submit() again with the same session context.
3

Offer a retry button for the outage code

For urn:radiumone:checkout:tokenization-unavailable (retryAllowed: true), the SDK has already retried twice internally — a further retry is a merchant-UI decision, not an automatic one.

Prevent it

  • Charge immediately after a successful submit() — see Handle expired sessions and card tokens for why a stale token still fails even after a successful bind.
  • Never reuse a session across shoppers or across an abandoned-then-resumed checkout — each checkout attempt gets its own session.

Test it

See Test your integration for sandbox test cards and scenarios.

Accept a card payment

Where submit() fits in the full charge flow.

Tokenization errors

The full tokenization error code table.
Last modified on September 15, 2026