Skip to main content
Your app can build bank transfer onramps directly against the Bridge API, without Privy’s modal UI. This gives full control over the KYC, virtual account, and fiat-to-crypto conversion experience. This is the headless counterpart to the useFundWalletWithBankDeposit hook. Use the hook when Privy’s prebuilt modal fits your flow. Use the headless API when your app needs a fully custom experience.
Headless bank deposits use the same Bridge integration as fiat offramps. A user who completes terms of service and KYC once can both onramp and offramp.

Prerequisites

Headless bank deposits require Bridge API keys. If your app does not already have a Bridge account, create a Bridge account and obtain API keys. Then, enable the bank transfer method on the Account Funding page in the Privy dashboard. Enter your Bridge API keys when prompted, and save. Bridge Configuration

Register the user

The first time a user onramps, they must agree to Bridge’s terms of service and complete KYC verification.

Request a terms of service agreement

Request a terms of service URL for the user:
Add a redirect_uri query parameter to the returned URL so the user returns to your app after signing. On redirect, the URL includes a signed_agreement_id parameter to use in the KYC step.

Submit KYC information

Check the user’s KYC status:
If the user is not yet verified, submit their KYC information:
KYC review takes about 1-2 minutes. Some submissions require manual review, which can take a few hours.

Initiate the onramp

Once the user is verified, trigger the onramp. Specify the fiat source and the crypto destination wallet:
The response returns bank deposit instructions. The user sends fiat to the provider to receive stablecoins in the destination wallet:

Complete the bank transfer

The user must follow the deposit instructions exactly, including the deposit_message. Bridge supports ACH, wire, and SEPA rails. If the instructions are not followed correctly, the onramp fails.

Track status

To check the status of an onramp, open the Wallets page in the Privy dashboard, select the wallet, and open the Fiat transactions tab.