curl --request GET \
--url https://sandbox-api.polygon.technology/v0.13/deposit-addresses \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox-api.polygon.technology/v0.13/deposit-addresses"
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.13/deposit-addresses', 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.13/deposit-addresses",
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.13/deposit-addresses"
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.13/deposit-addresses")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.polygon.technology/v0.13/deposit-addresses")
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": [
{
"customer": {
"id": "<string>"
},
"id": "<string>",
"status": "pending",
"statusReason": "<string>",
"expectedSourceAsset": "<string>",
"expectedSourceNetwork": "ethereum",
"depositInstructions": {
"asset": "<string>",
"network": "ethereum",
"address": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
},
"destination": {
"type": "walletCrypto",
"category": "crypto",
"id": "<string>",
"asset": "<string>",
"network": "<string>",
"displayName": "<string>",
"payoutOrigin": {
"type": "bank",
"id": "<string>",
"accountHolder": "customer",
"accountHolderName": "<string>"
},
"party": {
"relationship": "customer",
"id": "<string>",
"name": "<string>"
},
"memo": "<string>"
},
"returnDestination": {
"type": "walletCrypto",
"network": "ethereum",
"id": "<string>"
},
"returnDestinationTypes": [
"walletCrypto"
],
"failureReason": "provisioningTimeout",
"sourceToDestination": "cryptoToCrypto",
"sponsorGas": true,
"provider": "<string>",
"requiresCounterpartyWalletRegistration": true,
"label": "<string>",
"metadata": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
]
}List all Deposit Addresses
List all Deposit Addresses across the organization. Spans every customer in the caller’s organization; optionally filter by status and/or customer. closed Deposit Addresses are omitted unless you ask for them explicitly with status=closed.
curl --request GET \
--url https://sandbox-api.polygon.technology/v0.13/deposit-addresses \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox-api.polygon.technology/v0.13/deposit-addresses"
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.13/deposit-addresses', 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.13/deposit-addresses",
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.13/deposit-addresses"
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.13/deposit-addresses")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.polygon.technology/v0.13/deposit-addresses")
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": [
{
"customer": {
"id": "<string>"
},
"id": "<string>",
"status": "pending",
"statusReason": "<string>",
"expectedSourceAsset": "<string>",
"expectedSourceNetwork": "ethereum",
"depositInstructions": {
"asset": "<string>",
"network": "ethereum",
"address": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
},
"destination": {
"type": "walletCrypto",
"category": "crypto",
"id": "<string>",
"asset": "<string>",
"network": "<string>",
"displayName": "<string>",
"payoutOrigin": {
"type": "bank",
"id": "<string>",
"accountHolder": "customer",
"accountHolderName": "<string>"
},
"party": {
"relationship": "customer",
"id": "<string>",
"name": "<string>"
},
"memo": "<string>"
},
"returnDestination": {
"type": "walletCrypto",
"network": "ethereum",
"id": "<string>"
},
"returnDestinationTypes": [
"walletCrypto"
],
"failureReason": "provisioningTimeout",
"sourceToDestination": "cryptoToCrypto",
"sponsorGas": true,
"provider": "<string>",
"requiresCounterpartyWalletRegistration": true,
"label": "<string>",
"metadata": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
]
}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. Omitting this parameter returns every status except closed, which is terminal and permanent; pass status=closed to list closed Deposit Addresses. A closed Deposit Address is not deleted — it stays retrievable by id.
Lifecycle of a Deposit Address. pending: awaiting on-chain address assignment. active: accepting deposits. frozen: deposits held by compliance. inactiveActionRequired: destination unusable, re-point destination to recover. closed: permanently disabled. failed: provisioning failed.
pending, active, frozen, closed, failed, inactiveActionRequired Filter to a single customer (cst_ prefix).
Response
The request has succeeded.
Paginated list of DepositAddress 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
Deposit Address ID (da_ 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 deposit address.
pending, active, frozen, closed, failed, inactiveActionRequired Human-readable explanation of the current status.
Asset of the inbound crypto the DA expects.
Network of the inbound crypto the DA expects.
ethereum, polygon, base, solana, tron Populated in the create response when the provider assigns the address up front. Otherwise it is null until the provider has assigned the on-chain address: poll GET /deposit-addresses/{depositAddressId} until it is populated before giving a sender deposit instructions.
Hide child attributes
Hide child attributes
Same value as expectedSourceAsset.
Same value as expectedSourceNetwork.
ethereum, polygon, base, solana, tron The on-chain address to send the inbound deposit to. Its provenance differs by provider: a provider that PROVISIONS assigns a fresh inlet address it owns and dedicates to this deposit address, while a provider that BINDS returns the address of a custodial wallet the customer already holds. Either way this is the address senders deposit to.
Placeholder for a future provider-imposed inlet expiry. Null for every provider today; surfaced now so adding it later is not a breaking change.
The resolved destination instrument plus, on the bank and crypto-wallet destinations, its payoutOrigin.
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
Hide child attributes
Hide child attributes
Type discriminator.
walletCrypto High-level grouping: fiatAccount for bank or card accounts, crypto for wallets.
crypto OMS wallet ID (wlt_ prefix). Dereference via GET /wallets/{id}. Null while a deposit is still in flight and the wallet it lands in has not resolved yet.
^[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.
Opaque, render-only summary for list/detail display. Never a full account number/IBAN/PAN.
Where a Deposit Address's payouts are sent from, and under whose name. The same shape as PayoutOrigin, except that accountHolder is never null: a Deposit Address always knows whose name its payouts go out under. accountHolder is fixed per destination type. For a bank destination it is derived once, when the Deposit Address is created: a later change to the project configuration, or a Virtual Account the customer opens afterwards, does not change it. For a crypto-wallet destination it depends on the provider only. A PATCH that moves the destination between a bank account and a crypto wallet therefore switches to that type's holder; moving back restores the bank holder fixed at creation. Transactions report the value for the destination type they pay as their fallback value, which the recorded holder can differ from (for example after a change to the project configuration). See PayoutOrigin.accountHolder: A bank payout that goes out under the payment provider or the partner records that holder just before it is sent to the provider, and reports it only while a payout was or may have been created there; a send interrupted after the holder was recorded and before it went out has an unknown outcome and may report it. A failed send known to have created no payout at the provider, and a payout sent before holders were recorded (there is no backfill), report the fallback value instead, which may differ from the holder actually used. Response-only.
Hide child attributes
Hide child attributes
bank, blockchain The Virtual Account (va_) the customer held, active and from the same provider, when the Deposit Address was created; accountHolder is then customer. If the customer held several, the oldest one (earliest createdAt) is reported. Null otherwise. The value is fixed when the Deposit Address is created. It identifies that account only: payouts are not yet sent from it, and the Virtual Account's own payoutOrigin (GET /virtual-accounts/{virtualAccountId}) reports the holder its own payouts go out under, which can be paymentProvider.
^[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})$Whose legal identity the payment is sent under.
customer, paymentProvider, partner The legal name the payment is sent under, resolved from accountHolder (see PayoutOrigin.accountHolderName). Absent when accountHolder is customer: the customer's name is on the customer resource. Null whenever the name cannot be resolved.
Structured identity of who is on this side.
Hide child attributes
Hide child attributes
Which kind of party this is.
customer, otherCustomer, externalRegistered, externalUnregistered cst_ for customer/otherCustomer; ctp_ for externalRegistered; null for externalUnregistered.
^[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})$Display name of a counterparty or external sender. Absent for a customer party on a Transaction, Deposit Address or Virtual Account; a Quote includes the customer's name when it can be resolved. Null or absent when an external sender is unattributed.
Free-text message that travelled with the transfer on this side's rail. Never populated on this instrument — no rail behind it carries a message — so the key is always absent. A memo appears only on the bank arms (bankUs, bankIban, bankCanada).
Registered crypto return destination (v0.11-8), echoed when set.
Hide child attributes
Hide child attributes
The type of a crypto return destination: an OMS wallet (walletCrypto) or a registered external wallet (walletExternal).
walletCrypto, walletExternal Return network. Must equal the DA's expectedSourceNetwork for the return to be usable.
ethereum, polygon, base, solana, tron walletCrypto: OMS wallet id (acc_…). walletExternal: registered ExternalAccount id (ext_…).
The return destination types this Deposit Address accepts, derived by OMS from its issuing provider and its expectedSourceNetwork with the same rules a returnDestination is validated against on create and PATCH. walletExternal is listed when the provider serves this network for the network's External Account family; walletCrypto is listed when the provider can return to an OMS wallet. An empty array means no return destination can be configured on this Deposit Address. Read-only. Present on deposit address API responses only; it is not included in the depositAddress.statusChanged event payload. On an API response, omission means OMS could not determine it; the create and PATCH validation stays authoritative.
The type of a crypto return destination: an OMS wallet (walletCrypto) or a registered external wallet (walletExternal).
walletCrypto, walletExternal Set when status = failed; closed enum identifying the failure category.
provisioningTimeout, systemError, ereborRejected, intlBankAccountCreateRejected, noMatchingNetwork, blockchainAddressInUse, bankAccountInUse Derived from the destination type: cryptoToFiatAccount for a bank destination, or cryptoToCrypto for a crypto-wallet destination.
cryptoToCrypto, cryptoToCash, cryptoToFiatAccount, cashToCrypto, fiatAccountToCrypto, fiatAccountToFiatAccount Whether OMS absorbs the on-chain gas cost for the destination delivery. Persisted from the create/update request (currently only true is accepted).
The institution that issues and custodies this Deposit Address — currently "Erebor Bank, N.A." or "Coinme Inc.". Assigned by OMS from your project's configuration. It determines which expectedSourceAsset / expectedSourceNetwork pairs you can use: an unsupported pair is rejected at create time with 422 depositAddressAssetNetworkNotSupported, which names the same provider in details.provider. Read it when you need to tell an end user or a support ticket which institution is holding the funds. It is not the entity an outbound payment is sent under — that is payoutOrigin.accountHolderName, which is set by whoever executes the payout and can name a different company. New providers may be added, so treat the string as free-form rather than a fixed set. Read-only; omitted when the issuing institution is not recognised.
Whether a sender's wallet must be registered as a walletExternal External Account under this Deposit Address's customer before it deposits. Derived from the issuing provider, never supplied by you: Deposit Addresses issued by Erebor Bank, N.A. accept a deposit only from a registered counterparty wallet (true), while those issued by Coinme Inc. accept a deposit from any crypto address (false). When true, a deposit from an unregistered address still arrives, but its transaction parks on a senderAttribution hold until you register a matching External Account (the hold's matchableExternalAccountCriteria says what will match) and fails at the hold's deadline if you never do — so capture the sender's address up front. When false, there is nothing to register against, so skip that step entirely. Read it per Deposit Address rather than caching it per project. Read-only, and omitted when OMS cannot identify the issuing provider — treat the requirement as undetermined rather than assuming either regime.
Partner display label.
When the deposit address was created.
When the deposit address was last updated.
Was this page helpful?