Skip to main content
POST
/
v2
/
users
/
{userId}
/
virtual-accounts
Create a virtual account
curl --request POST \
  --url https://production.hifibridge.com/v2/users/{userId}/virtual-accounts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "sourceCurrency": "usd",
  "destinationCurrency": "usdc",
  "destinationChain": "POLYGON",
  "externalWalletId": "<string>"
}'
{
  "message": "Virtual account created successfully",
  "accountInfo": {
    "id": "cfbc005d-8640-57a4-89e1-539c974fa780",
    "createdAt": "2025-09-27T03:08:11.548Z",
    "updatedAt": "2025-09-27T03:08:11.548Z",
    "userId": "840c28f2-ea7d-5c3a-9271-b10fd8b6ae6d",
    "source": {
      "paymentRail": [
        "ach",
        "wire",
        "rtp"
      ],
      "currency": "usd"
    },
    "destination": {
      "chain": "POLYGON",
      "currency": "usdc",
      "walletAddress": "0xd102C4130985B7fcB95697616eaf5542c4f98d49",
      "externalWalletId": null
    },
    "status": "activated",
    "depositInstructions": {
      "bankName": "Bank of NoWhere",
      "bankAddress": "123 Main St, New York, NY 10001, USA",
      "beneficiary": {
        "name": "Henry Wu",
        "address": "Example St 1., Apt 123, New York, NY, 10010, US"
      },
      "ach": {
        "routingNumber": "028000024",
        "accountNumber": "123456789"
      },
      "wire": {
        "routingNumber": "021000021",
        "accountNumber": "123456789"
      },
      "rtp": {
        "routingNumber": "021000021",
        "accountNumber": "123456789"
      },
      "instruction": "Please deposit usd to the bank account provided. Please ensure that the beneficiary name matches the account holder name provided, or the payment may be rejected."
    },
    "settlementRuleId": null
  }
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

userId
string
required

ID of the user

Body

application/json
sourceCurrency
enum<string>
required
Available options:
usd
destinationCurrency
enum<string>
required

usdt is only supported on ethereum

Available options:
usdc,
usdt
destinationChain
enum<string>

Either externalWalletId or destinationChain must be provided.

Available options:
POLYGON,
ETHEREUM,
SOLANA,
BASE
externalWalletId
string

Either externalWalletId or destinationChain must be provided.

Response

Success

message
string
accountInfo
object
I