Skip to main content
Privy’s embedded wallets integrate with Stripe’s Embedded Components for the Crypto Onramp SDK, so your app can offer a fully embedded, one-tap checkout—no redirect and no hosted Stripe page. Users buy crypto with Apple Pay, Google Pay, or card in a single tap, and it lands directly in their Privy embedded wallet. Stripe handles payment processing, KYC, and crypto delivery while your app owns the entire UI. Using this integration, your app can:
  • Offer one-tap Apple Pay and Google Pay checkout inside your own UI, with no redirect to a hosted flow
  • Accept cards and bank payments through Stripe’s payment infrastructure
  • Deliver crypto directly to users’ Privy embedded wallets
  • Handle KYC and identity verification through Stripe, fully embedded
Stripe’s Embedded Components for Crypto Onramp is currently in private beta. Your app must be approved for crypto onramp and enrolled in Stripe’s verified apps program before using this integration.

Prerequisites

Before integrating, ensure your app meets the following requirements:
  1. Stripe Account with Crypto Onramp Access: Submit an application for crypto onramp
  2. Verified Apps Program Enrollment: Contact your Stripe representative to enroll in the verified apps program
  3. Privy App: A configured Privy app with embedded wallets enabled

Architecture overview

The Embedded Components onramp flow involves three components:
  1. Your Frontend (Expo/React Native): Collects user input, displays UI, and calls Stripe Embedded Components SDK methods
  2. Your Backend: Calls Stripe APIs to manage crypto customers, sessions, and transactions
  3. Stripe Embedded Components SDK: Handles Link authentication, KYC collection, payment method selection, and identity verification

Setup

1. Install the Stripe React Native SDK with Embedded Components

Add the Stripe React Native SDK with Embedded Components onramp support to your Expo project:

2. Configure Expo

Update your app.json to include the onramp plugin:

3. Configure StripeProvider

Wrap your app with both PrivyProvider and StripeProvider:

Integration flow

The Embedded Components onramp follows this sequence:
  1. User signs up or logs in to Link (returns a CryptoCustomer ID)
  2. Your backend fetches the customer’s status (KYC, wallets, payment methods)
  3. If setup is needed, the Embedded Components SDK helps the user complete it
  4. Your backend creates and completes an onramp session

Step 1: Initialize the Onramp Coordinator

Configure the Stripe Embedded Components SDK when your component mounts:
Check if the user has a Link account and authenticate or register them:

Step 3: Check customer status (Backend)

After authentication, fetch the customer’s status from your backend:

Step 4: Collect KYC data if needed

If the customer needs KYC verification, collect and submit the data:

Step 5: Handle identity verification if required

For transactions requiring document verification, use the identity verification API:

Step 6: Register wallet address

Register the user’s Privy wallet as their crypto destination:

Step 7: Collect payment method

Allow users to select or add a payment method:

Step 8: Create and complete the onramp session (Backend)

Create an onramp session and execute the transaction:

Step 9: Handle 3DS and additional authentication

Some transactions require additional authentication (like 3DS for cards). The performCheckout SDK method handles this automatically:

Complete example

Here’s a complete component that ties together the entire flow (you can find the repo example here):
Stripe Crypto onramp currently only supports stablecoin as onramp currencies.

Error handling

Handle common errors that can occur during the onramp flow:

Resources

Example implementation

POC integration in the Privy Expo starter repo

Privy Expo SDK

Set up Privy embedded wallets in your Expo app

Stripe Crypto Docs

Official Stripe Crypto Onramp documentation

Bridge Onramp

Bank transfer funding via Bridge