Skip to main content
Wallets are custodial stablecoin accounts. OMS manages the private keys, no user signing, no wallet SDKs, no blockchain interactions required from your application. All operations are server-to-server API calls. Each wallet holds a single asset on one chain (USDC on Polygon by default). A wallet is the source or destination for every transaction. To hold more than one asset, create a wallet per asset and chain under the same customer.
This page covers the custodial wallet resource of the Payments API. If your product needs users to control their own keys onchain (consumer apps, agentic flows), use OMS non-custodial wallets. The two models can be combined in a single product.

Object

{
  "id": "wlt_...",
  "object": "wallet",
  "customerId": "cst_...",
  "address": "0xabc123...",
  "asset": "usdc",
  "chain": "polygon",
  "status": "active",
  "createdAt": "2025-01-15T10:31:00Z"
}
The address field is the wallet’s onchain address on Polygon Chain. It is read-only and assigned at creation. Read the wallet’s current balance with GET /wallets/{walletId}/balance.

Funding a wallet

A wallet can receive funds in three ways:
MethodHow it works
Direct crypto transferSend crypto to the wallet’s address
Virtual accountFiat deposited to the customer’s bank account number auto-converts to USDC (currently early access, provisioned by Polygon)
Deposit addressCrypto sent to a monitored address auto-routes to the wallet (currently early access, provisioned by Polygon)
Direct transfers to the address field fire a wallet.depositDetected webhook but do not trigger an automatic conversion. Virtual accounts and deposit addresses are the flows where OMS acts on incoming funds; both are currently provisioned by Polygon.

Key operations

OperationEndpoint
Create a wallet for a customerPOST /customers/{customerId}/wallets (body: asset + chain)
List a customer’s walletsGET /customers/{customerId}/wallets
Get balanceGET /wallets/{walletId}/balance
  • Virtual accounts: assign a bank account number that auto-funds this wallet
  • Deposit addresses: set up a monitored crypto address that routes to this wallet
  • Transactions: move funds out of a wallet via crypto, bank transfer, or cash