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",  
    }  
  ]  
}