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

# Ways to accept payments

> Choose between online checkout, payment links, and an in-person terminal.

Ionic gives you four ways to collect a payment. Hosted checkout, embedded
checkout, and payment links are browser-based and create the same underlying
checkout session. Terminal payments use the same PaymentIntent as online
payments to collect a card on an assigned physical device.

|                                                 | Buyer pays on                               | Created by                     | Best for                                                  |
| ----------------------------------------------- | ------------------------------------------- | ------------------------------ | --------------------------------------------------------- |
| [Hosted Checkout](/guides/checkout)             | An Ionic-hosted page you redirect to        | Your server, per purchase      | Carts, orders, and recurring signups; fastest integration |
| [Embedded checkout](/guides/embedded-checkout)  | Your own page, in a frame                   | Your server, per purchase      | Keeping buyers on your domain                             |
| [Payment links](/guides/payment-links)          | An Ionic-hosted page behind a shareable URL | Dashboard or API, once         | Reusable offers, sales teams, QR codes                    |
| [Terminal payments](/guides/in-person-payments) | An assigned physical terminal               | Your POS backend, per purchase | In-person credit and PIN-debit payments                   |

## Hosted Checkout — redirect

Create a session when your application has a live cart, order, quote, or
buyer-specific state, or recurring signup, and redirect the buyer to the hosted
page.

```text theme={null}
your app -> your server -> POST /v1/checkout/sessions -> redirect buyer
```

Use it when the amount comes from an in-app cart, the buyer is already
known, you need an order-specific `client_reference_id`, or your backend
decides the exact line items at purchase time. It's also the smallest
integration — start here unless you have a reason not to.

## Embedded checkout — your page

The same session, rendered inside an iframe on your own site. Buyers never
leave your domain; card details never touch your page.

```text theme={null}
your app -> your server -> POST /v1/checkout/sessions (ui_mode: embedded)
        -> your page mounts the session with the browser SDK
```

Choose it when staying on your domain matters more than the extra
integration steps (a one-time domain registration and a client-side mount).
Everything else — session fields, webhooks, fulfillment — is identical to
hosted checkout.

## Payment links — reusable URL

A link is a reusable, catalog-backed offer that mints a fresh checkout
session every time a buyer opens it.

```text theme={null}
dashboard or API -> payment link -> buyer opens link -> session created
```

Use it when a sales or support team shares a fixed offer, a QR code or
campaign should point at checkout, or your team needs to activate, edit, or
retire an offer without a deploy.

## Terminal payments — physical device

Create a PaymentIntent with no payment method attached, then select a
Terminal assigned to your account when the buyer is ready to pay.

```text theme={null}
your POS -> POST /v1/payment_intents -> POST /v1/terminals/{id}/process_payment_intent
         -> buyer presents card -> inspect the terminal payment status
```

Use it for an attended checkout where the cardholder presents a card to an
assigned terminal. Your backend selects the Ionic `tmr_…` identifier in the
route and sends the PaymentIntent ID with a `payment_type` of `credit` or
`debit`. You do not send device credentials or create a PaymentMethod first.

## Which to use

For an online cart, create a checkout session: [hosted](/guides/checkout) if
a redirect is acceptable, or [embedded](/guides/embedded-checkout) if the
buyer should stay on your site. If the payment page itself is the product, create a
[payment link](/guides/payment-links). For an attended, card-present sale, use
an [assigned terminal](/guides/in-person-payments).

Apple Pay is available on all three browser-based surfaces; see
[Apple Pay](/guides/apple-pay) for what each one requires.
