# Embedded Checkout (iFrame) — Overview

The embedded checkout loads the Banxa checkout flow inside your application using an iFrame (web) or WebView (mobile). The customer completes their transaction without leaving your product.

## How it works

1. Your app creates a checkout URL — either via a [Referral link](/products/hosted-checkout/docs/referral-integration/constructing-referral-urls) or the `checkoutUrl` returned by `POST /v2/buy` or `POST /v2/sell`.
2. The URL is loaded as the `src` of an iFrame element (web) or inside a WebView component (mobile).
3. The customer completes the Banxa checkout flow within the embedded view.
4. On completion, Banxa redirects to your `redirectUrl` — you can detect this navigation event in the WebView to dismiss the component.


## Advantages

- The customer stays within your application throughout the transaction.
- You control the surrounding UI and context.
- Consistent with a native-feeling product experience.


## Considerations

### Camera access

Banxa requires camera access for KYC document capture. On web, the iFrame must have the `allow="camera; microphone"` attribute. On mobile, the WebView must have camera permissions enabled.

### iOS liveness check

Sumsub KYC liveness verification requires `SFSafariViewController` on iOS. It will not complete inside a standard `WKWebView`. If your customers will encounter liveness checks, use `SFSafariViewController` as your WebView implementation.

### Payment method compatibility

Some payment methods have restrictions inside iFrames and WebViews:

- **Apple Pay on web** — requires merchant certificate and domain configuration to work inside an iFrame. Contact your Banxa account manager to ensure Apple Pay is correctly set up for your integration.
- **Apple Pay on iOS** — works inside a correctly configured `WKWebView` or `SFSafariViewController`.
- **Google Pay on Android** — requires Custom Chrome Tabs, not a standard WebView. If Google Pay is enabled for your integration, use Custom Chrome Tabs.
- **iDEAL, Klarna, PayPal** — redirect out of the iFrame to complete the payment. The customer is returned to the Banxa order status page afterwards.


## Implementation

→ [Web Implementation](/products/hosted-checkout/docs/checkout-experience/iframe/iframe-web)
→ [Mobile Implementation](/products/hosted-checkout/docs/checkout-experience/iframe/webview-mobile)