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>",
"transferType": "ach"
}
'{
"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
}
}Generate a virtual bank account to onramp from sourceCurrency to destinationCurrency on chain destinationChain. (note: virtual accounts are billable)
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>",
"transferType": "ach"
}
'{
"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
}
}Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
ID of the user
usd usdc, usdt, usdg, pyusd Either externalWalletId or destinationChain must be provided. If provided, the token will be delivered to user's HIFI wallet on the destination chain.
POLYGON, ETHEREUM, SOLANA, BASE Either externalWalletId or destinationChain must be provided.
ach, wire