curl --request GET \
--url https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "va_5Kf9dQ2mNpXwZ7bV1aLcs",
"userId": "usr_3Kf9dQ2mNpXwZ7bV1aLcs",
"source": {
"transferTypes": [
"ACH",
"WIRE",
"RTP"
],
"currency": "USD"
},
"destination": {
"chain": "POLYGON",
"currency": "USDC",
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678",
"walletId": "wlt_1aLcs3Kf9dQ2mNpXwZ7bV",
"externalWalletId": null
},
"status": "ACTIVE",
"microDeposits": {
"count": 1,
"data": [
{
"createdAt": "2026-07-01T10:35:00.000Z",
"currency": "USD",
"amount": 100,
"sourceBankInfo": {
"bankName": "Example Bank",
"senderName": "Jane Doe",
"routingNumber": "021000021",
"accountNumber": "123456789",
"accountType": "CHECKING",
"fedBatchId": null,
"imad": null,
"omad": null,
"traceNumber": null,
"bankAddress": null,
"description": null,
"references": null,
"paymentRail": "ach"
}
}
]
},
"depositInstructions": {
"bankName": "Example Bank",
"bankAddress": "123 Main Street, New York, NY 10001",
"beneficiary": {
"name": "ACME Corp",
"address": "123 Main Street, New York, NY 10001, USA"
},
"ach": {
"routingNumber": "021000021",
"accountNumber": "123456789012"
},
"wire": {
"routingNumber": "021000021",
"accountNumber": "123456789012"
},
"rtp": {
"routingNumber": "021000021",
"accountNumber": "123456789012"
},
"reference": null,
"depositBy": null,
"instruction": "Please deposit USD to the bank account provided."
},
"settlementRuleId": null,
"createdAt": "2026-07-01T10:30:00.000Z",
"updatedAt": "2026-07-01T10:30:00.000Z"
}{
"type": "VALIDATION_ERROR",
"message": "One or more fields are invalid or missing.",
"fields": [
{
"code": "invalid_value",
"message": "Must be a valid email address",
"field": "email"
}
]
}{
"type": "UNAUTHORIZED",
"message": "Authentication required"
}{
"type": "RESOURCE_NOT_FOUND",
"message": "<string>",
"fields": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
]
}{
"type": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred"
}Retrieve a virtual account
Retrieve details of a specific virtual account, including deposit instructions and received deposits.
curl --request GET \
--url https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.hifi.com/v3/users/{userId}/virtual-accounts/{virtualAccountId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "va_5Kf9dQ2mNpXwZ7bV1aLcs",
"userId": "usr_3Kf9dQ2mNpXwZ7bV1aLcs",
"source": {
"transferTypes": [
"ACH",
"WIRE",
"RTP"
],
"currency": "USD"
},
"destination": {
"chain": "POLYGON",
"currency": "USDC",
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678",
"walletId": "wlt_1aLcs3Kf9dQ2mNpXwZ7bV",
"externalWalletId": null
},
"status": "ACTIVE",
"microDeposits": {
"count": 1,
"data": [
{
"createdAt": "2026-07-01T10:35:00.000Z",
"currency": "USD",
"amount": 100,
"sourceBankInfo": {
"bankName": "Example Bank",
"senderName": "Jane Doe",
"routingNumber": "021000021",
"accountNumber": "123456789",
"accountType": "CHECKING",
"fedBatchId": null,
"imad": null,
"omad": null,
"traceNumber": null,
"bankAddress": null,
"description": null,
"references": null,
"paymentRail": "ach"
}
}
]
},
"depositInstructions": {
"bankName": "Example Bank",
"bankAddress": "123 Main Street, New York, NY 10001",
"beneficiary": {
"name": "ACME Corp",
"address": "123 Main Street, New York, NY 10001, USA"
},
"ach": {
"routingNumber": "021000021",
"accountNumber": "123456789012"
},
"wire": {
"routingNumber": "021000021",
"accountNumber": "123456789012"
},
"rtp": {
"routingNumber": "021000021",
"accountNumber": "123456789012"
},
"reference": null,
"depositBy": null,
"instruction": "Please deposit USD to the bank account provided."
},
"settlementRuleId": null,
"createdAt": "2026-07-01T10:30:00.000Z",
"updatedAt": "2026-07-01T10:30:00.000Z"
}{
"type": "VALIDATION_ERROR",
"message": "One or more fields are invalid or missing.",
"fields": [
{
"code": "invalid_value",
"message": "Must be a valid email address",
"field": "email"
}
]
}{
"type": "UNAUTHORIZED",
"message": "Authentication required"
}{
"type": "RESOURCE_NOT_FOUND",
"message": "<string>",
"fields": [
{
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
]
}{
"type": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
ID of the user.
^user_[A-Za-z0-9]+$Public ID of the virtual account (prefixed with va_)
Response
Virtual account retrieved successfully.
A virtual account.
Public ID of the virtual account (prefixed with va_).
"va_5Kf9dQ2mNpXwZ7bV1aLcs"
Public ID of the user this virtual account belongs to (prefixed with usr_).
"usr_3Kf9dQ2mNpXwZ7bV1aLcs"
Fiat source configuration of the virtual account.
Show child attributes
Show child attributes
Stablecoin destination of the virtual account.
Show child attributes
Show child attributes
ACTIVE, INACTIVE "ACTIVE"
Deposits received into the virtual account.
Show child attributes
Show child attributes
Bank details for funding the virtual account. Null until the account is active.
Show child attributes
Show child attributes
Public ID of the applied settlement rule (prefixed with sr_), if any.
null
"2026-07-01T10:30:00.000Z"
"2026-07-01T10:30:00.000Z"