Skip to main content
This guide covers how to enable each supported payment method — cards, Apple Pay, and Google Pay — in your onramp integration, including the platform-specific configuration each one requires. All payment methods are controlled through the payment configuration of the checkout component. The checkout only displays methods that the user’s device supports, so enabling a method is safe even on platforms where it cannot appear. For an explanation of how each method works, see Payment Methods.

Prerequisites

  • A working onramp integration — complete a quickstart first.

Configure Allowed Methods

Set the methods you want to offer in the fiat payment configuration:
<CrossmintEmbeddedCheckout
    orderId={order.orderId}
    clientSecret={order.clientSecret}
    payment={{
        crypto: { enabled: false },
        fiat: {
            enabled: true,
            allowedMethods: {
                card: true,
                applePay: true,
                googlePay: true,
            },
        },
    }}
/>
Cards work on every platform with no additional setup. Apple Pay and Google Pay require the platform-specific configuration below.

Apple Pay

To display Apple Pay on your website (Safari on macOS and iOS), you must verify your domain with Apple through the Crossmint Console. This is a one-time setup per domain.

Prerequisites

  1. HTTPS hosting — your site must be served over HTTPS.
  2. Crossmint account — you need an active Crossmint developer account.
1

Download the Verification File

Go to the Apple Pay Domains page in the Crossmint Console and click Download file to get the Apple Developer Merchant ID Domain Association file.
2

Host the Verification File

Host the downloaded file on your server at the following path:
https://YOUR_DOMAIN/.well-known/apple-developer-merchantid-domain-association
Option 1: Using the Public Folder
  1. Create the .well-known folder inside your public directory.
  2. Place the downloaded file in public/.well-known/ with the filename apple-developer-merchantid-domain-association (no extension).
Option 2: Using a Route
  1. Create a folder at app/.well-known/apple-developer-merchantid-domain-association/
  2. Add a route.ts file with the following content:
route.ts
import { NextResponse } from "next/server";

export async function GET() {
    return new NextResponse("PASTE_FILE_CONTENT_HERE", {
        headers: {
            "Content-Type": "text/plain",
        },
    });
}
Replace PASTE_FILE_CONTENT_HERE with the content of the downloaded verification file.
  1. Create the .well-known folder inside your public directory.
  2. Place the downloaded file in public/.well-known/ with the filename apple-developer-merchantid-domain-association (no extension).
  1. Create the .well-known folder inside your public directory.
  2. Place the downloaded file in public/.well-known/ with the filename apple-developer-merchantid-domain-association (no extension).
3

Verify Your Domain

  1. Return to the Apple Pay Domains page in the Crossmint Console.
  2. Enter your domain (e.g., example.com or checkout.example.com) in the input field.
  3. Click Verify domain.
If verification succeeds, your domain will appear in the list of registered domains and Apple Pay will be available as a payment method in the onramp checkout.
If verification fails, ensure the file is publicly accessible at the correct path. You can test by visiting https://YOUR_DOMAIN/.well-known/apple-developer-merchantid-domain-association in your browser.

Local Testing

Using ngrok is recommended for local testing:
  1. Start ngrok with a fixed domain if possible for consistent testing.
  2. Host the verification file on your local server.
  3. Register the ngrok domain in the Crossmint Console.
  4. Test Apple Pay on Safari (macOS) or any iOS device.

Google Pay

On the web, Google Pay works out of the box — enabling it via allowedMethods is all that is needed. Mobile apps require additional native configuration because the payment sheet is rendered by the operating system.

Prerequisites

  • React Native project with Expo or bare workflow
  • Android device or emulator with Google Play Services
1

Install Dependencies

pnpm add @crossmint/client-sdk-react-native-ui
The SDK includes react-native-webview as a dependency. If you need to install it separately, ensure version 13.15.0 or higher:
pnpm add react-native-webview@^13.15.0
2

Configure the Expo Plugin

Update your app.json to enable Google Pay:
{
  "expo": {
    "plugins": [
      [
        "@crossmint/client-sdk-react-native-ui",
        {
          "enableGooglePay": true
        }
      ]
    ]
  }
}
This plugin modifies native Android permissions required for Google Pay. The app must be rebuilt after adding this configuration.
3

Rebuild Your App

Hot reload cannot apply the permission changes. You must rebuild:
npx expo run:android
Or for bare React Native:
npx react-native run-android
4

Enable Google Pay in the Checkout Component

Set googlePay: true in allowedMethods as shown in Configure Allowed Methods.

Google Pay Production Approval

Google Pay works immediately in staging environments. For production, Google requires explicit approval of your Android app.
  1. Navigate to the Google Pay & Wallet Console
  2. Select “Merchant” as your business type
  3. Complete all business profile information
  4. Navigate to Google Pay API and click “Get Started”
  5. Accept the Google Pay API Terms of Service
  6. Note your Merchant ID (top-right corner after completion)
In the Google Pay & Wallet Console:
  1. Navigate to Google Pay API then Integrations then Integrate with your Android app
  2. Locate your Android application and click “Manage”
  3. Select your integration type (typically “Gateway”)
  4. Upload screenshots of your TEST Google Pay integration
  5. Click “Save” then “Submit for approval”
Required Screenshots:
  • Product/item selection showing Google Pay option
  • Cart or checkout view with payment options
  • Google Pay payment sheet with card selection
  • Confirmation or receipt screen
After Google approval (typically ~1 business day):
  1. Sign your APK with a release key (debug keys do not work in production)
  2. Update environment settings:
    • Kotlin: environment = CheckoutEnvironment.PRODUCTION
    • React Native: Use production API key
  3. Publish your app to Google Play Store

Troubleshooting

  1. Domain not verified (web): Verify your domain on the Apple Pay Domains page
  2. Unsupported browser: Apple Pay on web only appears in Safari on macOS and iOS
  3. Payment method disabled: Check applePay: true in allowedMethods
  1. Plugin not configured: Verify enableGooglePay: true in app.json plugins
  2. App not rebuilt: Run npx expo run:android after adding the plugin
  3. Environment mismatch: Staging works without approval; production requires it
  4. Payment method disabled: Check googlePay: true in allowedMethods
  1. AndroidManifest missing queries: Add all three Chromium intent queries
  2. Native rebuild required: Hot reload cannot apply permission changes
  3. Device requirements: User needs Google Play Services 25.18.30+ and WebView 137+

Next Steps

Payment Methods

Understand how each payment method works and why onramp is a regulated transfer

UI Customization

Customize the onramp checkout UI to match your brand identity

User Onboarding

Register users and handle KYC before their first onramp transaction

React Quickstart

Build a complete onramp integration from scratch