Skip to main content
Choose how much of the payment page your application owns. 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. Ionic Blocks uses a PaymentIntent with secure inputs on a page you build.

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

Ionic Blocks — your payment form

Your backend creates a PaymentIntent. Your page mounts a Payment Block and calls confirmPayment when the customer selects your Pay button. Ionic collects the card and confirms the payment. Your backend receives signed payment events. Use Blocks when you own the layout, billing fields, consent, and submission. Follow Build a payment page, or Accept payments for connected accounts when the payment belongs to a merchant on your platform. Blocks collects a new card; wallet buttons are available on the checkout surfaces above. A link is a reusable, catalog-backed offer that mints a fresh checkout session every time a buyer opens it.
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.
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. The terminal handles the card interaction and selects the eligible payment option.

Which to use

For an online cart, create a checkout session: hosted if a redirect is acceptable, or embedded if the buyer should stay on your site. If the payment page itself is the product, create a payment link. For an attended, card-present sale, use an assigned terminal. Apple Pay is available on hosted Checkout, embedded Checkout, and payment links; see Apple Pay for what each one requires. Google Pay is available on hosted Checkout, payment links, and hosted invoices; see Google Pay.

What’s next

Accept a payment with Hosted Checkout

Create a session, redirect the buyer, and fulfill from the webhook.

Build a payment page

Create a PaymentIntent, mount a Payment Block, and confirm from your Pay button.

Create a payment link

Share a reusable, catalog-backed URL.

Accept in-person payments

Run a payment on an assigned terminal.