Payments / Onramp·Multi-chain · EVM · Solana
Stripe (Bridge)
Stripe's crypto onramp combined with Bridge (acquired by Stripe) for stablecoin orchestration: fiat-to-stablecoin issuance, virtual bank accounts, cross-border payouts, and Open Issuance for custom stablecoins.
- 01US fiat-to-crypto onramp
- 02stablecoin treasury and orchestration
- 03USD/EUR virtual accounts that mint USDC/USDB
- 04cross-border B2B settlement in stablecoins
- 05issuing your own branded stablecoin (Open Issuance)
- pnpm add @stripe/crypto @stripe/stripe-js
- pnpm add stripe
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY | Client | Stripe publishable key (`pk_test_...` or `pk_live_...`). Used by the client-side onramp widget. |
| STRIPE_SECRET_KEY | Server | Stripe secret key (`sk_test_...` or `sk_live_...`). Used server-side to create CryptoOnrampSessions. |
| STRIPE_WEBHOOK_SECRET | Server | Stripe webhook signing secret for verifying onramp events. |
| BRIDGE_API_KEY | Server | Bridge.xyz API key for stablecoin orchestration, virtual accounts, and Open Issuance. |
Use Stripe Crypto Onramp for the fiat→crypto checkout: server-side, call `stripe.crypto.onrampSessions.create({ transaction_details: { destination_currency, destination_network, wallet_address } })` and return `client_secret` to the browser. On the client, mount `loadStripeOnramp(NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY)` and `onramp.createSession({ clientSecret }).mount('#onramp')`. For programmatic stablecoin flows (virtual accounts, payouts, FX, Open Issuance), call the Bridge API directly at `https://api.bridge.xyz/v0/...` with `Api-Key: BRIDGE_API_KEY`. Verify all webhook events with the appropriate signing secret before updating order state.
- ⚑Stripe Crypto Onramp is currently US-only for end users — geo-block non-US sessions or fall back to MoonPay/Transak in your UI.
- ⚑Sandbox (`sk_test_...`) onramp sessions deliver test crypto on testnets only; switching to live mode requires the connected account to pass Stripe's separate crypto compliance review.
- ⚑Bridge and Stripe were merged but still have two API surfaces — the Stripe SDK does NOT cover Bridge's virtual accounts, drains, or Open Issuance; call Bridge directly for those.
- ⚑Webhook signatures differ between Stripe and Bridge — use `stripe.webhooks.constructEvent` for Stripe and Bridge's HMAC scheme for Bridge events; mixing them silently drops events.
- ⚑Open Issuance requires per-issuer KYB and reserve attestation cadence — do not promise a launch date in your UI until Bridge approves the issuer.
- ⚑Onramp redirect_url must be allowlisted in the Stripe Dashboard, otherwise the widget fails with an opaque error in production only.