Environments and hosts
Sandbox and production use separate credentials, hosts and webhook endpoints — see Sandbox and API keys.
The Elements SDK CDN adds one more host per environment: sandbox at
https://js-sandbox.radiumone.io, production at https://js.radiumone.io.
Sandbox behaviour and limits
Sandbox behaves like production — the same API shapes, statuses, and error codes — but no real money moves and no real card issuer is involved. Use test cards from Test your integration rather than real card numbers; sandbox tokenizes and processes them the same way production does, so there’s no separate “mock” token format to learn.Sandbox is also the place to test your retry logic. Before you write integration code, read Prevent duplicate payments so your
request_id/order_reference handling is safe from the start.Key types
The environment a key belongs to is determined entirely by its prefix — a
_test_ key never works against production, and vice versa.
Getting keys
The exact self-service flow for provisioning keys, webhook endpoints, redirect secrets, and allowed redirect domains is still being finalized. Until then, contact support to request sandbox and production keys for your account, including how many keys you can hold at once.Least-privilege keys
Secret keys can carry any of RadiumOne’s API scopes (payment creation, capture, void, referenced and standalone refunds, session management, and more). By default a new secret key is issued with every scope enabled — but having the refund scope isn’t the same as being able to refund: the acquirer channel itself must also have theREFUND operation enabled, which isn’t on by default. See Refunds require enablement.
Publishable keys are always scoped to session creation only — they can never create, capture, void, or refund a payment directly, which is why it’s safe to expose them in browser code.
Outlet-scoped keys
A key can be bound to a specific outlet (store/location). If you omitoutlet_id on a request, RadiumOne uses the key’s bound outlet by default. Sending an outlet_id that doesn’t match the key’s binding fails with a 403 error; every response echoes back the outlet the request was actually resolved against.
Key safety
Never use a secret key (
r1sk_…) in browser code, mobile apps, or anywhere a shopper can inspect it. Secret keys belong on your server only.Exchange a secret key for an access token
Payments API requests are authenticated with a short-lived access token, not the secret key itself — exchange your secret key once, cache the token for up to itsexpires_in (300 seconds), and refresh it before it lapses.
Authentication
The full token exchange, refresh, and revoke flow, including sample requests.
Moving to production
- Request production keys (see Getting keys above).
- Swap every
_test_key for its_prod_equivalent. - Point your integration at the production hosts instead of the sandbox hosts.
- Update your webhook endpoint and redirect secret for the production environment.
- Work through the go-live checklist before you accept real payments.
Next steps
Quickstart
Accept your first sandbox payment with the keys you just requested.
Authentication
Full reference for the token, refresh, and revoke endpoints.
Security and PCI scope
Key storage, rotation, and monitoring guidance.
Support
Request keys, enablement, or emergency key revocation.