> ## 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.

# Choose your integration - Get started

> Compare RadiumOne hosted checkout and Elements across the No 3DS, RadiumOne 3DS, and own-3DS-provider options, and pick the right combination.

export const RequiresEnablement = ({feature}) => <Note>
    {feature ? <><strong>{feature}</strong> requires</> : "This feature requires"} enablement on your account before you can use it in production. See <a href="/resources/support#request-enablement">Request enablement</a>.
  </Note>;

RadiumOne has two ways to accept a card — **hosted checkout** and **Elements + the Payments API** — and three ways to run 3D Secure on top of either one. Pick a row for how you want to build the payment page, then a column for who runs 3D Secure.

## The grid

| | No 3D Secure | RadiumOne 3DS | Own 3DS provider |
| - | - | - | - |
| Hosted checkout | [Redirect to a hosted payment page](/hosted-checkout/redirect-integration) | <Badge color="blue">Beta</Badge> [3DS challenge on the hosted page](/hosted-checkout/three-d-secure) | Not offered |
| Elements + Payments API | [Card fields plus a server-side charge](/elements/accept-a-card-payment) | [Elements SDK runs 3DS end to end](/elements/three-d-secure/add-three-d-secure) | <Badge color="blue">Beta, requires enablement</Badge> [Send results from your own 3DS provider](/payments-api/three-d-secure/use-your-own-provider) |

The **Elements + Payments API** row is fully live today, with or without RadiumOne 3D Secure. Hosted checkout, No 3DS is also live if you'd rather not build any payment UI at all.

<RequiresEnablement feature="Your own 3DS provider" />

## How to choose

<Steps>
  <Step title="Is a RadiumOne-hosted payment page okay for your shoppers?">
    **Yes** → hosted checkout — see [Redirect to hosted checkout](/hosted-checkout/redirect-integration).
    **No**, you want the card fields on your own page → Elements — see [Accept a card payment](/elements/accept-a-card-payment).
  </Step>

  <Step title="Do you need 3D Secure today?">
    Both No-3DS paths above are already live. RadiumOne 3DS runs end to end with Elements — see [3DS with Elements](/elements/three-d-secure/add-three-d-secure) — and is <Badge color="blue">Beta</Badge> with hosted checkout — see [3DS with hosted checkout](/hosted-checkout/three-d-secure). For how the options compare, see [3D Secure overview](/get-started/three-d-secure).
  </Step>

  <Step title="Do you already have your own 3DS provider?">
    Only the Elements + Payments API row supports bringing your own 3DS provider — <Badge color="blue">Beta</Badge>, requires enablement — see [Use your own 3DS provider](/payments-api/three-d-secure/use-your-own-provider).
  </Step>
</Steps>

## Hosted checkout

The shopper is redirected to (or embedded via an iframe with) a RadiumOne-hosted page where they enter their card.

With hosted checkout, the shopper enters their card details on a RadiumOne-hosted page. Your server and website never see or handle raw card data, which keeps your PCI DSS scope minimal.

Effort: low. You create a checkout session, redirect the shopper, and handle the return — no payment UI to build.

## Elements + Payments API

RadiumOne Elements renders secure card fields on your own page and tokenizes the card in the browser; your server calls the Payments API to charge it.

With Elements, card fields render inside RadiumOne-hosted iframes and tokenize the card before it reaches your server. Your website never touches raw card data, which keeps your PCI DSS scope reduced compared to handling card numbers directly.

Effort: medium. You build the checkout page around the Elements fields and call the Payments API from your server.

### Bringing your own 3DS provider

If you already run 3D Secure through another provider, you can authenticate with them and pass the result to RadiumOne when you charge.

When you use your own 3DS provider, your 3DS provider handles card data outside Elements. Confirm your provider's PCI DSS scope and how card data flows between your provider and RadiumOne before you go live.

## Can I switch later?

Yes. Hosted checkout and Elements both call the same RadiumOne Payments API and emit the same webhook events, so your backend logic for capturing, refunding, and reconciling payments doesn't change. Many merchants start with hosted checkout for the fastest launch, then move to Elements later for more control over the payment page.

## Next steps

<Columns cols={2}>
  <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 with hosted checkout.
  </Card>

  <Card title="3D Secure overview" icon="shield-check" href="/get-started/three-d-secure">
    Understand the 3DS column in more depth.
  </Card>

  <Card title="Elements overview" icon="credit-card" href="/elements/overview">
    Learn what Elements provides before you integrate it.
  </Card>
</Columns>
