> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.coinflow.cash/guides/checkout/implementation-overview/mobile-app-payments/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coinflow.cash/_mcp/server. # Mobile SDK Overview ## Overview Coinflow publishes first-party SDKs for **Swift**, **Android (Kotlin)**, **Flutter**, and **React Native** that embed the card tokenization form directly into native mobile apps. Every SDK renders the same PCI-compliant card form used on the web, surfaces a single `tokenize()` call, and returns a payment token your backend can charge. Use a mobile SDK when you want the card entry experience to stay inside your app — no redirect out to a browser, no WebView wiring you have to maintain yourself. ## When to use a mobile SDK #### Mobile SDK (embedded) Renders the card form directly inside your app. You control the surrounding UI and the moment tokenization happens. **Best for:** * Apps that need full control over checkout UI/UX * Subscription sign-up, card-on-file capture, replacing a saved card * Tokenization flows where you charge later server-side [View the Swift, Android, and Flutter guides below](#available-sdks) #### Browser redirect Generates a hosted checkout URL and opens it in the user's browser. No frontend code required. **Best for:** * The simplest possible integration * Apps that already use universal links / deep links for return flows * One-time purchase flows where leaving the app is acceptable [View the Browser Redirect Guide](/guides/checkout/implementation-overview/mobile-app-payments/browser-redirect-checkout) ## What the SDK does 1. Renders the Coinflow card form inside a native view. 2. Captures the card data inside Coinflow's PCI scope — sensitive data never touches your app code. 3. Exposes a single `tokenize()` call you invoke when the user taps your Pay button. 4. Returns a `TokenizeResponse` containing the payment `token` (and optionally `expMonth` / `expYear`). 5. You forward that token to your backend, which calls Coinflow's checkout API to charge the card. > **Info** > > The SDK only handles **card capture and tokenization**. The actual charge happens server-side via the standard Coinflow checkout API using the returned token. ## Available SDKs #### Swift (iOS) SwiftUI SDK for iOS 15+. Distributed via Swift Package Manager. * **Package:** [`coinflow-swift`](https://github.com/coinflow-labs-us/coinflow-swift) * [Integration guide →](/guides/checkout/implementation-overview/mobile-app-payments/swift-sdk) #### Android (Kotlin) Jetpack Compose SDK for `minSdk` 24+. Distributed via Maven Central. * **Package:** [`cash.coinflow:coinflow-card-form`](https://central.sonatype.com/artifact/cash.coinflow/coinflow-card-form) * **Source:** [coinflow-android](https://github.com/coinflow-labs-us/coinflow-android) * [Integration guide →](/guides/checkout/implementation-overview/mobile-app-payments/android-sdk) #### Flutter Flutter SDK for iOS 15+ / Android 24+. Distributed via pub.dev. * **Package:** [`coinflow_card_form`](https://pub.dev/packages/coinflow_card_form) * **Source:** [coinflow-flutter](https://github.com/coinflow-labs-us/coinflow-flutter) * [Integration guide →](/guides/checkout/implementation-overview/mobile-app-payments/flutter-sdk) #### React Native React Native SDK for iOS 15+ / Android 24+. Distributed via npm. Uses `react-native-webview` under the hood. * **Package:** [`@coinflowlabs/react-native`](https://www.npmjs.com/package/@coinflowlabs/react-native) * **Source:** [coinflow-react-native](https://github.com/coinflow-labs-us/coinflow-react-native) * [Integration guide →](/guides/checkout/implementation-overview/mobile-app-payments/react-native-sdk) ## Common concepts ### Merchant ID Every SDK takes a `merchantId` string. This is issued by Coinflow when you sign up and is visible in the merchant dashboard. The same value works for both sandbox and production. > **Info** > > `your-merchant-id` is an **example placeholder**. Contact the Coinflow integrations team or check the merchant dashboard for your actual merchant ID before going live. ### Environment Every SDK takes an `env` enum that selects which Coinflow backend the form talks to: * **Sandbox** — test cards, no real money. Use during integration and QA. * **Prod** — live cards, real money. ### Variants Each SDK exposes three form variants: | Variant | Captures | Use case | | ---------------- | ------------------- | -------------------------------------------------------------------- | | `cardForm` | Number, expiry, CVV | Standard one-shot card entry | | `cardNumberForm` | Number + expiry | Step 1 of a two-step flow; returns a token used later with `cvvForm` | | `cvvForm` | CVV only | Re-collecting CVV for a saved card-on-file token | ### Theming Each SDK accepts an optional `MerchantTheme` that styles the form to match your app — colors, fonts, input shape, and placeholder text. All fields are optional. See each platform's integration guide for the full field list. ## Docs - [Swift SDK](https://docs.coinflow.cash/guides/checkout/implementation-overview/mobile-app-payments/swift-sdk.md): Embed the Coinflow card tokenization form natively in a SwiftUI app. - [Android SDK](https://docs.coinflow.cash/guides/checkout/implementation-overview/mobile-app-payments/android-sdk.md): Embed the Coinflow card tokenization form natively in a Jetpack Compose app. - [Flutter SDK](https://docs.coinflow.cash/guides/checkout/implementation-overview/mobile-app-payments/flutter-sdk.md): Embed the Coinflow card tokenization form natively in a Flutter app. - [React Native SDK](https://docs.coinflow.cash/guides/checkout/implementation-overview/mobile-app-payments/react-native-sdk.md): Embed the Coinflow card tokenization form natively in a React Native app. - [Browser Redirect Checkout](https://docs.coinflow.cash/guides/checkout/implementation-overview/mobile-app-payments/browser-redirect-checkout.md): Accept payments in your mobile app by redirecting users to a Coinflow-hosted checkout page in the browser.