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.Related
Accept a card payment
Where
submit() fits in the full charge flow.Tokenization errors
The full tokenization error code table.