Privy provides a The crypto-only call opens the crypto deposit modal. The user picks a source token and network. Privy then creates a deposit account and shows the address with an indicative quote. This example prefers reusing the destination wallet address where eligible; omit Pass both At least one of
Install the Supported payment methods include credit, debit, Apple Pay, Google Pay, and ACH (US only). Supported destination currencies include OUSD on Tempo, Base, Ethereum, and Solana, USDC.e on Tempo, USDC on Base, Solana, Ethereum, Arbitrum, and Polygon, and USDT on Ethereum. Available in the US (excluding New York) and the EU.
useDepositFunds hook in @privy-io/react-auth that opens a funding modal.Your app can use this hook to let authenticated users fund a destination wallet with fiat, crypto, or both. A crypto-only call opens the crypto deposit flow directly. A call that includes fiat shows a method picker first.Prerequisites
For fiat, enable card and bank funding methods on the Account Funding page. See the deposit configuration guide.For crypto, enable swaps and app-pays gas sponsorship as described in crypto deposit setup. Crypto deposits require a Privy wallet. The hook builds the create-deposit-account request and signs it with the user’s signer.Access the hook
Import and initializeuseDepositFunds:Start a deposit flow
CalldepositFunds with a destination and at least one funding method.depositAddressStrategy to use a dedicated deposit address.destination.chain and destination.asset accept aliases or raw identifiers. Omit
destination.wallet to use the user’s first embedded wallet on that chain.fiat and crypto to show a method picker:Parameters
depositFunds accepts an object with the following fields:object
required
Wallet and asset that receive the funds.
object
Enables the crypto deposit flow. Required unless
fiat is provided. Pass {source: {mode: 'all'}} to accept every supported source.object
Enables fiat funding with the card and bank onramp flow. Required unless
crypto is provided.fiat or crypto must be provided.Supported fiat currencies
Once enabled in the Privy Dashboard, fiat onramps support USD, EUR, AUD, and BRL through Stripe and MoonPay. To unlock the full list of 50+ currencies below, open the Funding page, click Configure on Meld, and complete its KYB. Meld adds card, bank transfer, and local payment coverage across 100+ countries.SupportedFiatCurrency accepts any of the following lowercase ISO 4217 codes.Full list of supported currencies
Full list of supported currencies
Reach out to sales@privy.io with any questions about pricing or
additional geographic coverage.
Return value
depositFunds returns a Promise with one of the following results:Error handling
depositFunds rejects on invalid configuration or incomplete flows. Common error cases include:- the call omits
destination.chainordestination.asset - the call omits both
fiatandcrypto - the call sends an empty
fiat.source.assetslist - the user has no authenticated session
destination.walletis not a Privy wallet on a crypto call- another funding flow is already in progress
- the user cancels the flow
- swaps or app-pays gas sponsorship are not enabled
- no source tokens match
crypto.source crypto.depositAddressStrategyisrequire_destinationand the destination wallet was exported- provider session, quote, or deposit account requests fail
try/catch and show clear UI feedback.Complete example
Stripe Embedded Components onramp
Privy supports Stripe’s Embedded Components for Crypto Onramp as a payment option within the deposit modal’s fiat flow. Stripe provides an embedded UX that handles payment processing, KYC via Link, and crypto delivery directly to the user’s wallet.Requires
@privy-io/react-auth version 3.33.1 or later.@stripe/crypto package as a required dependency:Stripe docs
Official Stripe Embedded Components onramp documentation
Test in sandbox mode
Passfiat.environment: 'sandbox' to depositFunds to run the flow against Stripe’s test environment. No real funds move, and you can complete an end-to-end purchase with the test values below.Set
destination.chain to a mainnet chain. Stripe’s onramp does not support testnets, so testnet chains fail even in sandbox mode.Related
Crypto deposits
Persistent deposit addresses, setup, and headless React or React Native.

