Onramp stablecoins using Bridge Wallet & Virtual Account
This guide walks you through creating a crypto wallet for a customer, then linking it to a virtual account so fiat deposits (e.g. ACH, SEPA) are automatically converted and delivered to the wallet as stablecoins.
Step 1: Create a wallet
Create a new Bridge-managed crypto wallet for your customer. This wallet will hold funds (e.g. USDB) and can earn yield.
Request
curl --request POST \
--url https://api.bridge.xyz/v0/customers/<customer_id>/wallets \
--header 'Api-Key: <API Key>' \
--header 'Idempotency-Key: <Unique-Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"chain": "solana"
}'
Response
{
"id": "wallet_abc123",
"chain": "solana",
"address": "4oG1sWkP8vcrnhbkzZc1m9RTT2VUjZHKx92qiVFK7FuZ",
"created_at": "2025-07-15T18:00:00Z"
}
💡Use the bridge_wallet_id (wallet_abc123 above) when referencing the wallet in other Bridge APIs.
Step 2: Create a virtual account that onramps to the wallet
Now, link the wallet to a virtual account. Any fiat deposits into the account will be automatically converted to USDB and delivered to the wallet.
Request
curl --request POST \
--url https://api.bridge.xyz/v0/customers/<customer_id>/virtual_accounts \
--header 'Api-Key: <API Key>' \
--header 'Idempotency-Key: <Unique-Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"source": {
"currency": "usd"
},
"destination": {
"payment_rail": "solana",
"currency": "usdb",
"bridge_wallet_id": "wallet_abc123"
}
}'
Response
{
"id": "va_123",
"status": "activated",
"customer_id": "cust_alice",
"source_deposit_instructions": {
"currency": "usd",
"bank_beneficiary_name": "Alice Customer",
"bank_name": "Lead Bank",
"bank_address": "1801 Main St., Kansas City, MO 64108",
"bank_routing_number": "101019644",
"bank_account_number": "123456789",
"payment_rails": ["ach_push", "wire"],
},
"destination": {
"bridge_wallet_id": "wallet_abc123",
"currency": "usdb"
}
}
Step 3: Share the virtual account address
Share the virtual account details (account and routing number) with your customer. When they send a fiat deposit, Bridge will:
- Match the payment
- Convert it to stablecoin (e.g. USDB)
- Deliver it to the linked wallet
Step 4: Check wallet balance
Use this API to check wallet balances and confirm the funds have landed.
Request
curl --request GET
--url <https://api.bridge.xyz/v0/customers/customerId/wallets/walletId>
--header 'Api-Key: <API Key>'
--header 'accept: application/json'
Response
{
"id": "uuid",
"chain": "solana",
"address": "the-blockchain-address",
"created_at": "2024-09-01T02:03:04.567Z",
"updated_at": "2024-09-01T02:03:04.567Z",
"balances": [
{
"balance": "123.456789",
"currency": "usdb",
"chain": "solana",
"contract_address": "ENL66PGy8d8j5KNqLtCcg4uidDUac5ibt45wbjH9REzB",
}
]
}
Updated about 4 hours ago