Skip to main content
TL;DR: A gateway outage never charges anything. Retry the create call if no session exists yet, or retry on the same session if the shopper was already paying — either way, nothing was charged.
RadiumOne Checkout can fail to reach the payment gateway at two different points — creating a session, and completing a charge on the hosted page — and each one leaves things in a different, but always safe, state: nothing is ever charged when the gateway can’t be reached.

When this happens

  • At session create: a protective breaker is open for gateway reads, or the gateway itself returns a server error while creating the session.
  • At the hosted page, while the shopper is paying: the gateway is unreachable partway through the charge attempt.

What you see

These are deliberately different outcomes. Charge attempts are never gated behind the availability breaker — refusing a charge because of an unrelated read-path hiccup would cost you a sale for negligible protection, since the gateway itself already dedupes by request_id. A charge-time outage instead comes from the gateway call genuinely failing to connect, and the session is released, not failed, so the shopper doesn’t lose their place.

What to do

1

Branch on where the failure happened

If your create call returned an error, no session exists — see the next step. If the shopper is on the hosted page and sees a retry message (or you receive CHECKOUT_ERROR), skip to the step after.
2

Retry the create call

Nothing was created, so it’s safe to call create again with the same body (API reference). If the error included retry_after_ms, wait at least that long first:
3

Confirm the session is back to pending, then let the shopper retry

For a charge-time outage, confirm the session’s state before assuming it’s safe to retry (API reference):
A status of pending confirms no charge happened and the shopper can try paying again on the same session. Retrying on the same session reuses that session’s payment key, so even an accidental double-retry can’t create two charges.
4

Never fulfil on the outage signal itself

Neither the retry message nor CHECKOUT_ERROR is proof of anything beyond “the attempt didn’t go through” — they’re not decline or success signals. Confirm the eventual outcome the same way as any other attempt: webhook or authenticated GET.

API errors

gateway:unavailable and gateway:request_failed, with retry rules.

Embedded checkout events

The full CHECKOUT_ERROR payload shape.

Confirm payment when the redirect never arrives

A shopper-side connectivity gap, not a gateway outage.

Handle failures

All ten failure scenarios, symptom → page.
Last modified on September 15, 2026