How it works
- Your server creates a checkout session with the amount and your
success_url/cancel_url. - Your website redirects the shopper to the returned
checkout_url. - The shopper pays on the RadiumOne-hosted page.
- RadiumOne redirects the shopper back to your
success_url(orcancel_url). - Your server confirms the final status with an authenticated request before fulfilling the order.
Before you begin
You need a sandbox secret key (
r1sk_test_…). See Sandbox and API keys if you don’t have one yet.Amounts are always integers in the currency’s minor unit. For example,
5000 for SGD means SGD 50.00.See a working example
Clone an example cart that creates a session and redirects to hosted checkout, if you’d rather start from running code.
Steps
1
Create a checkout session
From your server, create a checkout session (API reference) for the order. Use one
order_reference per order attempt — replaying the same reference within the session’s TTL safely returns the existing session instead of creating a duplicate.2
Redirect the shopper
Redirect the shopper’s browser to
data.checkout_url from the response. The shopper enters their card on the RadiumOne-hosted page — your site never sees it.3
Handle the return page
RadiumOne redirects the shopper back to your
success_url (or cancel_url if they cancel or the session expires). This return page may carry query parameters describing the outcome, but treat them as a hint only — don’t fulfill the order from them directly. If the shopper never returns to this page at all, see Confirm payment when the redirect never arrives.4
Confirm the result server-side
From your server, retrieve the checkout session by ID (API reference) and check its
status, order_reference, and amount before you fulfill the order.Handle the result
A checkout session’sstatus is one of pending, processing, completed, failed, expired, or cancelled. Only fulfill the order once status is completed and the order_reference and amount match what you created — see Verify the payment result for the full signature and confirmation guide.
Test your integration
Use the sandbox test cards and scenarios in Test your integration to try approvals, declines, and timeouts before you move on.Go-live notes
- Swap your sandbox keys and hosts for production ones — see Moving to production.
- Always confirm payment status from your server, never from the return-page query string alone.
- Register your production webhook endpoint so you have a second, asynchronous confirmation path.
- Work through the full go-live checklist before accepting real payments.
Next steps
Choose your integration
Compare hosted checkout with Elements + the Payments API.
Hosted checkout
Customize the checkout page, add 3DS, and go beyond the quickstart.
Webhooks
Get notified about payment events instead of polling.
Manage payments
Capture, void, refund, and track transactions.