Skip to main content
Privy’s embedded wallets integrate with Stripe’s Embedded Components for the Crypto Onramp SDK. Stripe handles payment processing, KYC, and crypto delivery. This recipe shows how to build a fully customized onramp experience where your app controls the UI. Using this integration, your app can:
  • Create a seamless branded onramp experience with app-controlled UI
  • Leverage Stripe’s payment infrastructure for card, bank, and Apple Pay
  • Delivers crypto to users’ Privy embedded wallets through Stripe
  • Handle KYC verification through Stripe’s identity services
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