# Choose Your Integration Method

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


There are three ways to integrate Banxa Hosted Checkout. The right choice depends on your platform, backend capability, and which features you need.

## Referral

You construct a Banxa URL with query parameters and redirect the customer to it. No API calls required.

**Best for:**

- Teams that want to integrate quickly with minimal backend work.
- Use cases where you don't need real-time order status in your own system.
- Integrations where KYC sharing is not required.


**What you get:**

- A Banxa-hosted checkout pre-populated with your parameters (wallet address, crypto, fiat, amount, etc.).
- Co-branding and customisation via dashboard settings.


**Limitations:**

- No webhooks for order status notifications.
- No quote comparison within your own UI before checkout.
- No KYC sharing.


→ See [Referral Integration](/products/hosted-checkout/docs/referral-integration/overview).

## API

You make server-to-server calls to Banxa to fetch quotes, create orders, and receive webhook notifications. The checkout URL is returned in the order creation response, and you redirect or embed it.

**Best for:**

- Teams that need real-time order status updates via webhooks.
- Integrations that want to display a quote comparison within their own UI before checkout.
- Use cases where KYC sharing would improve conversion.
- Integrations needing programmatic control over payment methods, fiat/crypto options, and customer data.


**What you get:**

- Full access to all Banxa APIs: Quote, Order, Payment Methods, Countries, Currencies, and Identity.
- Webhooks for real-time order status updates.
- KYC sharing to reduce friction for returning customers.
- Ability to build a pre-checkout quote flow within your own UI.


**Considerations:**

- Your API key must be kept secret — avoid exposing it in client-side code or public repositories.
- More implementation effort than Referral.


→ See [API Integration](/products/hosted-checkout/docs/api-integration/api-integration-overview).

## Mobile SDKs

Four mobile SDKs wrap Banxa Hosted Checkout: React Native, iOS, Android, and Flutter. Each is configured with your API key and presents the checkout in-app, with no backend required for core flows.

| SDK | Language | Distribution |
|  --- | --- | --- |
| React Native | TypeScript | npm, `@banxa-official/react-native-sdk` |
| iOS | Swift | Swift Package Manager |
| Android | Kotlin | AAR |
| Flutter | Dart | pub.dev, `banxa_payments_flutter` |


**Best for:**

- Mobile apps on React Native, native iOS, native Android, or Flutter.
- Teams that want faster integration than wiring up API calls manually.
- Apps where you want the SDK to handle checkout presentation and return URL detection.


**What you get:**

- Typed methods for quotes, payment methods, currencies, and countries.
- Checkout presentation handled for you. React Native gives you a `CheckoutWebView` component to render; iOS and Android are headless and present checkout internally; Flutter presents the native sheet when it can and otherwise hands you a `BanxaHostedCheckoutView` widget.
- Same `x-api-key` auth as the API, so no backend is required.


**Limitations:**

- Mobile only. For web, use Referral or API.
- No KYC sharing. That requires HMAC authentication, which the SDKs do not use.
- Order lookup is limited. React Native supports lookup by id or customer; iOS, Android, and Flutter do not expose order lookup at all. Use the API or webhooks.
- All SDKs support `buy` orders.
- Note that only the Flutter SDK exposes `sell` order creation. On other SDKs, `sell` orders go through the API.


→ See [SDK Integration](/products/hosted-checkout/docs/sdk-integration/overview).

## Comparison

|  | Referral | API | Mobile SDKs |
|  --- | --- | --- | --- |
| Implementation effort | Lowest | Highest | Low |
| Platform | Web | Any | React Native, iOS, Android, Flutter |
| Backend required | No | No (only for KYC sharing) | No |
| Webhooks | No | Yes | Yes (configured separately) |
| Quote UI in your app | No | Yes | Yes |
| KYC sharing | No | Yes | No |
| Order lookup | No | Yes (all orders) | React Native: by id or customer. iOS, Android, Flutter: no |
| Sell orders | Yes | Yes | Flutter: Yes. Others: No |
| Checkout presentation | Redirect or iFrame | You choose | In-app |


## Decision guide

**Choose Referral** if you want the fastest possible integration and don't need webhooks or in-app quotes.

**Choose API** if you need webhooks, want to show customers a quote before checkout, or have an existing KYC process you want to share with Banxa.

**Choose a mobile SDK** if you're building a React Native, iOS, Android, or Flutter app and want a typed interface without wiring up API calls manually.

All three methods can be used with either Redirect or iFrame checkout visualisation, except the SDKs, which handle checkout presentation themselves.