Skip to main content
This guide is for mobile apps only. For web applications, Google Pay works automatically when enabled via the payment.fiat.allowedMethods.googlePay prop—no additional setup required. See Payment Methods for web configuration.
This guide covers how to enable Google Pay for token checkout and onramp flows in React Native and Android native (Kotlin) applications. Mobile apps require additional native configuration that web apps don’t need.

Overview

Crossmint’s mobile SDKs provide pre-built checkout components that support Google Pay out of the box. When properly configured, users see the native Android Google Pay sheet, providing seamless access to payment credentials stored in Google Wallet without leaving your app.

Mobile vs Web

PlatformSetup RequiredGuide
Web (React, Next.js, etc.)Enable via props onlyPayment Methods
React Native (Expo)Expo plugin + rebuildThis guide
React Native (Bare)Manual Android configThis guide
Android Native (Kotlin)AndroidManifest configThis guide

Supported Use Cases

  • Token purchases (buy tokens with fiat)
  • Stablecoin onramp (USDC, etc.)
  • NFT checkout

Mobile SDK Integration

Prerequisites

Before starting, ensure you have:
  • React Native project with Expo or bare workflow
  • Crossmint account with API keys (staging and/or production)
  • 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

Implement the Checkout Component

Use CrossmintEmbeddedCheckout for token purchases:
import {
  CrossmintEmbeddedCheckout,
  CrossmintProvider,
} from "@crossmint/client-sdk-react-native-ui";

export default function CheckoutScreen() {
  return (
    <CrossmintProvider apiKey="your_client_side_api_key">
      <CrossmintEmbeddedCheckout
        recipient={{
          walletAddress: "YOUR_WALLET_ADDRESS",
        }}
        payment={{
          crypto: { enabled: false },
          fiat: {
            enabled: true,
            allowedMethods: {
              card: true,
              applePay: false,
              googlePay: true,
            },
          },
        }}
        lineItems={{
          tokenLocator: "solana:TOKEN_ADDRESS",
          executionParameters: {
            mode: "exact-in",
            amount: "1",
            maxSlippageBps: "500",
          },
        }}
      />
    </CrossmintProvider>
  );
}
For staging/testing, use the XMEME test token:
tokenLocator: "solana:7EivYFyNfgGj8xbUymR7J4LuxUHLKRzpLaERHLvi7Dgu"
5

Customize Appearance (Optional)

Hide destination and email inputs for a cleaner UI:
<CrossmintEmbeddedCheckout
  // ... other props
  appearance={{
    rules: {
      DestinationInput: { display: "hidden" },
      ReceiptEmailInput: { display: "hidden" },
    },
    variables: {
      colors: {
        backgroundPrimary: "#000000",
        textPrimary: "#ffffff",
      },
    },
  }}
/>

Google Pay Production Approval

Google Pay works immediately in staging environments. For production, Google requires explicit approval of your 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 don’t 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

SDK Version Requirements

ComponentMinimum Version
@crossmint/client-sdk-react-native-uiLatest
react-native-webview (if installed separately)13.15.0
com.crossmint:crossmint-sdk-androidLatest
Google Play Services (user device)25.18.30

Troubleshooting

  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+
  1. Check that your API key is valid for the environment (staging vs production)
  2. Verify the tokenLocator is correct and available
  3. Ensure the quote hasn’t expired (quotes have time limits)
“Token purchase is only available in production”: Some tokens only work in production. Use the XMEME test token for staging: 7EivYFyNfgGj8xbUymR7J4LuxUHLKRzpLaERHLvi7Dgu

Testing Guidance

  • Use staging API keys from your Crossmint console
  • Google Pay functions immediately after proper configuration
  • Use XMEME test token for token testing
  • Test with real Google accounts and saved payment methods

Useful Resources