Custodial wallets are in early access and require an OMS API key. Request access if you do not have one yet.
1
Get a bearer token
You do not send the API key directly on requests. Exchange the key and secret for a short-lived bearer token at The token is valid for 60 minutes. When a request returns
POST /auth/token, then send that token as Authorization: Bearer {accessToken} on every other call.401, exchange your key for a fresh token and retry. If POST /auth/token returns 429, the endpoint is rate-limited: back off before retrying.2
Create a customer
Every custodial wallet belongs to a customer. Create an individual with the identifying details OMS needs to clear them for custody:You get back the customer with Store the
201:cst_ ID. birthDate, residentialAddress, and identifyingInformation are write-only, so they never appear in responses. A custodial wallet needs an active cryptoCustody endorsement; if the customer’s status is still pending, wait for it to become active (poll GET /customers/{customerId} or listen for customer.* webhooks). A 202 response means onboarding is still running: resend the identical request with the same Idempotency-Key until you get 201.3
Create a custodial wallet
Create the wallet with The
POST /wallets. Set type to custodial and name the asset and network in details. OMS derives the onchain address and manages the keys.wlt_ ID is what you reference as a source or destination in quotes and transactions. In sandbox the address is on Polygon Amoy, the Polygon testnet. If the response is 202 instead of 201, the wallet is still being provisioned: poll the URL in the Location header (GET /wallets/operations/{operationId}) until its status is complete, then read the wallet by the operation’s walletId.4
Read the wallet balance
GET /wallets/{id} returns the wallet with its current balances.balances carries the asset, network, balance as a decimal string at the asset’s precision, and a USD estimate in estimatedValueUsd. A new wallet starts at zero. Fund it with a fiat-to-crypto flow, then read the wallet again or subscribe to customerWallet.* and transaction.* webhooks to track the balance. To list a customer’s wallets, call GET /wallets?customerId=cst_01H9Xa....What’s next
Custodial wallets reference
The wallet object, statuses, errors, claimed wallets, and webhook events.
Fund a wallet
Bring fiat into the wallet with the cash-in or virtual account flows.
Get started with OMS
The end-to-end payments walkthrough, from customer to first transaction.