# Embedded Checkout (iFrame) — Overview

> For the complete documentation index, see [llms.txt](https://docs.banxa.com/llms.txt). Append `.md` to any page URL for its markdown version.


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

On iOS 15 and later, Sumsub KYC liveness verification works inside a standard `WKWebView`. On iOS versions before 15, liveness checks cannot complete in `WKWebView` — use `SFSafariViewController` if you need to support pre-iOS 15 devices.

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


## Implementation

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