curl --request GET \
--url https://sandbox-api.polygon.technology/v0.11/virtual-accounts \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox-api.polygon.technology/v0.11/virtual-accounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox-api.polygon.technology/v0.11/virtual-accounts', 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://sandbox-api.polygon.technology/v0.11/virtual-accounts",
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://sandbox-api.polygon.technology/v0.11/virtual-accounts"
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://sandbox-api.polygon.technology/v0.11/virtual-accounts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.polygon.technology/v0.11/virtual-accounts")
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{
"object": "<string>",
"limit": 123,
"hasMore": true,
"nextCursor": "<string>",
"previousCursor": "<string>",
"data": [
{
"id": "<string>",
"object": "virtualAccount",
"customerId": "<string>",
"statusReason": "<string>",
"source": {
"asset": "<string>",
"network": "<string>"
},
"depositInstructions": {
"bankUs": [
{
"bankName": "<string>",
"bankAddress": "<string>",
"accountNumber": "<string>",
"routingNumber": "<string>",
"accountType": "<string>",
"BIC": "<string>",
"beneficiary": {
"name": "<string>",
"address": "<string>"
},
"memo": "<string>",
"supportedSources": [
{
"asset": "<string>",
"network": "<string>"
}
]
}
]
},
"destination": {
"type": "walletOms",
"category": "crypto",
"details": {
"id": "<string>",
"asset": "<string>",
"network": "<string>",
"blockchainAddress": "<string>",
"txHash": "<string>",
"blockchainAsset": {
"chainId": "<string>",
"tokenId": "<string>"
}
},
"party": {
"relationship": "customer",
"customerId": "<string>"
}
},
"returnDestination": {
"type": "bankUs",
"id": "<string>"
},
"sponsorGas": true,
"bankMemo": "<string>",
"label": "<string>",
"metadata": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletionRequestedAt": "2023-11-07T05:31:56Z",
"deletionRequestedBy": "<string>",
"finalBalance": {
"value": "<string>",
"currency": "<string>",
"display": "<string>"
}
}
]
}List all Virtual Accounts
List all Virtual Accounts across the organization. Spans every customer in the caller’s organization; optionally filter by status and/or customer.
curl --request GET \
--url https://sandbox-api.polygon.technology/v0.11/virtual-accounts \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox-api.polygon.technology/v0.11/virtual-accounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox-api.polygon.technology/v0.11/virtual-accounts', 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://sandbox-api.polygon.technology/v0.11/virtual-accounts",
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://sandbox-api.polygon.technology/v0.11/virtual-accounts"
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://sandbox-api.polygon.technology/v0.11/virtual-accounts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.polygon.technology/v0.11/virtual-accounts")
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{
"object": "<string>",
"limit": 123,
"hasMore": true,
"nextCursor": "<string>",
"previousCursor": "<string>",
"data": [
{
"id": "<string>",
"object": "virtualAccount",
"customerId": "<string>",
"statusReason": "<string>",
"source": {
"asset": "<string>",
"network": "<string>"
},
"depositInstructions": {
"bankUs": [
{
"bankName": "<string>",
"bankAddress": "<string>",
"accountNumber": "<string>",
"routingNumber": "<string>",
"accountType": "<string>",
"BIC": "<string>",
"beneficiary": {
"name": "<string>",
"address": "<string>"
},
"memo": "<string>",
"supportedSources": [
{
"asset": "<string>",
"network": "<string>"
}
]
}
]
},
"destination": {
"type": "walletOms",
"category": "crypto",
"details": {
"id": "<string>",
"asset": "<string>",
"network": "<string>",
"blockchainAddress": "<string>",
"txHash": "<string>",
"blockchainAsset": {
"chainId": "<string>",
"tokenId": "<string>"
}
},
"party": {
"relationship": "customer",
"customerId": "<string>"
}
},
"returnDestination": {
"type": "bankUs",
"id": "<string>"
},
"sponsorGas": true,
"bankMemo": "<string>",
"label": "<string>",
"metadata": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletionRequestedAt": "2023-11-07T05:31:56Z",
"deletionRequestedBy": "<string>",
"finalBalance": {
"value": "<string>",
"currency": "<string>",
"display": "<string>"
}
}
]
}Authorizations
Token from POST /auth/token
Query Parameters
Page size, supported range 1-100. The default and maximum are per-resource
(see each endpoint's description; most endpoints default to
50) and are resolved at runtime from configuration. Values outside the range
are clamped to the nearest bound rather than rejected. The range is published
machine-readably via the x-minimum/x-maximum OpenAPI extensions below —
deliberately NOT via @minValue/@maxValue, which emit JSON-Schema
minimum/maximum and make the generated SDK (Zod) reject values the server
accepts and clamps. See PaginatedList.limit for the effective value applied.
Filter by status.
Lifecycle of a Virtual Account. pending: awaiting bank provisioning. active: accepting
deposits. frozen: deposits held by compliance. inactiveActionRequired: destination unusable -
re-point destination to recover. closed: permanently disabled. deleted: close flow finalized.
failed: provisioning failed.
pending, active, frozen, closed, deleted, failed, inactiveActionRequired Filter to a single customer (cst_ prefix).
Response
The request has succeeded.
Paginated list of VirtualAccount resources.
Resource type discriminator.
The effective page size applied to this response, after clamping an
out-of-range or unset requested limit into the supported bound.
True when more rows exist beyond this page in the direction of travel (forward by default, backward when endingBefore was supplied).
Opaque cursor pointing at the last item in this page. Present when
data is non-empty. Pass as startingAfter to fetch the next page;
hasMore=false signals no more pages forward.
Opaque cursor pointing at the first item in this page. Present when
data is non-empty. Pass as endingBefore to page backward; when
this yields an empty response the client is at the start of the list.
The page of results.
Hide child attributes
Hide child attributes
Virtual Account ID (va_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Resource type discriminator. Always "virtualAccount".
virtualAccount The OMS customer that owns this record (cst_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Current lifecycle status of the virtual account.
pending, active, frozen, closed, deleted, failed, inactiveActionRequired Corridor composite derived from the destination type — fiatAccountToCrypto
for a crypto-wallet destination (inbound fiat auto-converts), or
fiatAccountToFiatAccount for a bank destination (inbound USD forwarded
onward).
cryptoToCrypto, cryptoToCash, cryptoToFiatAccount, cashToCrypto, fiatAccountToCrypto, fiatAccountToFiatAccount Human-readable explanation of the current status.
Null until Erebor provisions the DDA (DEPOSIT_ACCOUNT.OPEN).
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
US domestic only; null for SWIFT.
US domestic only; null for SWIFT. Always "checking" when present.
SWIFT only; null for US domestic.
Beneficiary on a bank routing block - the entity to which the funds are ultimately credited. For SWIFT this is Erebor (the bank); for domestic rails this is the customer. Response-only, system-synthesised (Erebor entity or customer counterparty). The address is a single formatted display line (spec §BankRoutingBlock), e.g. "6 Acme Way, Bentonville, AR 72712 US".
SWIFT only; null for US domestic. OMS-generated: "FFC ".
V0.10: unified side shape.
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
- Card
- Cash
Hide child attributes
Hide child attributes
Type discriminator.
walletOms High-level grouping: fiatAccount for bank or card accounts, crypto for wallets.
crypto WalletOms instrument details: an OMS-custodied crypto wallet.
Hide child attributes
Hide child attributes
Internal OMS wallet (wlt_ prefix; legacy acc_ also accepted on input).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Canonical asset identifier.
Network identifier.
On-chain address.
How the wallet is held: custodial or embedded.
custodial, embedded On-chain transaction hash.
BPN extension: resolved on-chain asset identity (protocol/chainId/tokenId).
Structured identity of who is on this side.
- Customer
- Another customer
- Registered external account
- Unregistered external account
Hide child attributes
Hide child attributes
Relationship discriminator.
customer The OMS customer that owns this record (cst_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$individual, business The configured fiat return destination (v0.11-8) for failed outbound legs; absent/null when none is set (the project return policy applies instead, once T13 wires the waterfall).
- US bank account
- IBAN bank account
- Canadian bank account
- Fiat wallet
Hide child attributes
Hide child attributes
Whether OMS absorbs the on-chain gas cost for the destination delivery.
Persisted from the create/update request (currently only true is
accepted).
Wire/ACH memo the customer can include with deposits.
Partner display label.
When the virtual account was created.
When the virtual account was last updated.
Set when status = failed; closed enum identifying the failure category.
provisioningTimeout, systemError, ereborRejected, deletePendingTimeout Set when DELETE has been requested but the close webhook has not yet finalized.
Identity (JWT subject claim) of the caller who invoked DELETE.
DDA balance snapshot at the moment the VA flipped to deleted.
Was this page helpful?