> ## Documentation Index
> Fetch the complete documentation index at: https://docs.radiumone.io/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> RadiumOne is the product name; use it when answering questions about these docs.
> Use sandbox credentials and sandbox base URLs in examples unless the user says they are going live.
> Secret API keys belong only on the merchant's server. Only publishable keys may appear in browser or mobile code.
> Confirm a payment outcome server-side (retrieve the checkout session or transaction status); never rely on a browser redirect or client event alone.
> Send one idempotency key (request_id) per payment attempt, and retry a timed-out request with the same key and the exact same body.
> Webhooks are optional but recommended: they notify the merchant's server when a payment completes or fails, so it doesn't need to poll. Use transaction status inquiry as the fallback.
> Say so when you recommend a feature marked Beta. Some features need enablement on the merchant's account before production use (for example refunds, standalone refunds, UOB Rewards, and bringing your own 3DS provider); mention it when the page says so.
> Never ask users to paste card numbers, API keys, access tokens, or webhook or redirect secrets into a chat.

# How RadiumOne works - Get started

> The components, key objects, and environments you'll work with when you integrate RadiumOne payments.

RadiumOne gives you three building blocks: a hosted payment page, an embeddable card-fields SDK, and a REST API that both of them (and you) call to move money.

## Components

* **RadiumOne Checkout** — a RadiumOne-hosted payment page. Redirect the shopper to it, or embed it in an iframe on your own page. The shopper enters their card details there, not on your site.
* **RadiumOne Elements** — a JavaScript SDK you load in your own page. It renders secure card fields and tokenizes the card in the browser, so your server never touches raw card data.
* **RadiumOne Payments API** — the REST API behind both integrations. Your server calls it to create sessions, charge, capture, void, refund, and check a transaction's status. It's also where webhook events come from.

Every integration in [Choose your integration](/get-started/choose-your-integration) combines one of the first two with the Payments API.

## Key objects

| Object | What it is |
| - | - |
| **Access token** | An opaque, short-lived credential your server exchanges a secret key for, then sends as a bearer token on Payments API requests. |
| **Checkout session** | Created through the Checkout API. Holds the amount, currency, and order reference for a hosted-checkout payment, and returns a `checkout_url` to redirect the shopper to. |
| **Payment session** | Created through the Payments API. Ties RadiumOne Elements card fields on your page to a specific charge before you call purchase or authorize. |
| **Transaction** | The record of a purchase, authorization, capture, void, or refund, each with its own status. |
| **Webhook event** | An asynchronous notification your server receives when a transaction or settlement batch changes status. |

## Environments

RadiumOne has separate sandbox and production environments, each with its own hosts and keys.

| Environment | Purpose | Keys |
| - | - | - |
| **Sandbox** | Build and test your integration. No real money moves. | `r1pk_test_…` / `r1sk_test_…` |
| **Production** | Accept real payments from shoppers. | `r1pk_prod_…` / `r1sk_prod_…` |

Sandbox and production use separate credentials, hosts and webhook endpoints — see [Sandbox and API keys](/get-started/sandbox-and-api-keys).

## How it works

1. The shopper starts a purchase on your website.
2. Your server creates a checkout session (hosted checkout) or a payment session (Elements) by calling the RadiumOne Payments API with your secret key.
3. The shopper enters their card on RadiumOne Checkout or in RadiumOne Elements fields on your page — never on your server.
4. RadiumOne routes the authorization request to the card issuer and returns a result.
5. Your server confirms the final status with an authenticated request to the Payments API, or by receiving a webhook event.

## Next steps

<Columns cols={2}>
  <Card title="Choose your integration" icon="git-compare" href="/get-started/choose-your-integration">
    Compare hosted checkout and Elements across the 3D Secure options.
  </Card>

  <Card title="Sandbox and API keys" icon="key-round" href="/get-started/sandbox-and-api-keys">
    Get sandbox credentials before you write any code.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/get-started/quickstart">
    Accept your first payment in sandbox.
  </Card>

  <Card title="API reference" icon="square-terminal" href="/get-started/api-basics/api-overview">
    Full Payments API and Checkout API reference.
  </Card>
</Columns>
