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": [
{
"id": "<string>",
"object": "depositAddress",
"customerId": "<string>",
"customer": {
"id": "<string>",
"name": "<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>",
"party": {
"relationship": "customer",
"id": "<string>",
"name": "<string>"
},
"memo": "<string>",
"payoutOrigin": {
"type": "bank",
"id": "<string>",
"accountHolder": "customer",
"accountHolderName": "<string>"
},
"companyDiscretionaryData": "<string>"
},
"returnDestination": {
"type": "walletCrypto",
"network": "ethereum",
"id": "<string>"
},
"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": [
{
"id": "<string>",
"object": "depositAddress",
"customerId": "<string>",
"customer": {
"id": "<string>",
"name": "<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>",
"party": {
"relationship": "customer",
"id": "<string>",
"name": "<string>"
},
"memo": "<string>",
"payoutOrigin": {
"type": "bank",
"id": "<string>",
"accountHolder": "customer",
"accountHolderName": "<string>"
},
"companyDiscretionaryData": "<string>"
},
"returnDestination": {
"type": "walletCrypto",
"network": "ethereum",
"id": "<string>"
},
"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})$Resource type discriminator. Always "depositAddress".
depositAddress Public customer id (cst_...). Named customerId to match VA's naming convention.
^[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-safe summary of the owning customer (customer.id equals customerId). Returned on list and detail responses.
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.
V0.10: unified destination shape (payoutOrigin now lives inside TransactionDestination).
- 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.
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.
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. Null only when genuinely unknown (an unattributed external sender).
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).
Where last-mile delivery is sent from, as a uniform {type, id} reference — response-only. id is the Virtual Account (va_) or OMS wallet (wlt_) funding the leg; null before execution (Quote / Deposit Address echo the choice only) or when the origin has no partner-visible resource. Rail identifiers for the last-mile transfer live in the top-level tracking array with leg: destination — not here.
Hide child attributes
Hide child attributes
bank, blockchain Public TypeID, e.g. txn_01h455vb4pex5vsknk084sn02q; legacy UUID suffixes are accepted until non-v7 rows are retired.
^[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. Determined by OMS from the route's configuration — not a request field. Null for destinations that have no sending legal identity (crypto and cash payouts).
customer, paymentProvider The legal name the payment is sent under, resolved from accountHolder — the customer's own legal name for customer, or "Coinme Inc FBO its Customers" for paymentProvider. This is what the recipient's bank shows on the credit. Like accountHolder and unlike id, it is populated as soon as it is determinable, so it appears on Quote and Deposit Address responses as well as Transactions. Null whenever accountHolder is null.
Echo of the ACH companyDiscretionaryData supplied on the originating request. Null/absent on non-ACH destinations or when not supplied.
Registered crypto return destination (v0.11-8), echoed when set.
Hide child attributes
Hide child attributes
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_…).
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?