Create a wallet
Creates a new blockchain wallet for the customer on the specified chain. By default the customer must first claim non-custodial control via POST /v2/customers//wallets/claim-non-custodial; for organizations enabled for custodial wallets, the account is provisioned on the first call to this endpoint with no claim required. An idempotency-key header is required. For post-activation non-custodial accounts, returns 202 with a ceremonyId and a verificationUrl when admin approval is needed. While the provisioning activity is still being set up there is no approval link to return, so the call is refused with a retryable 409 CEREMONY_IN_FLIGHT — retry shortly and the 202 arrives once the link exists. The admin approval link is also delivered on the wallet_ceremony.awaiting_admin_approval webhook. Once your sandbox has real testnet custody, a customer whose wallet account was provisioned under the old mock custody is refused with 422 LEGACY_MOCK_WALLET_UNSUPPORTED — create the wallet under a new sandbox customer.
Authorizations
Headers
Caller-generated unique key that lets the server safely replay this request. The original response is returned for 30 days on any retry with the same key from the same organization, with the response header Idempotency-Replayed: true. Required on every state-changing money-moving or resource-creating POST.
1 - 128^[A-Za-z0-9_.:-]{1,128}$"01J7B3K2X9M8N5P6Q7R8S9T0V1"
Path Parameters
"cus_1A2b3C4d5E6f7G8h9I0jKl"
Body
Blockchain network for the new wallet
ethereum, base, solana, polygon, tron, stellar, tempo, arbitrum, optimism, arc Client-supplied reference, unique per resource within your organization. 1-255 characters from A-Za-z, 0-9, underscore, hyphen, colon, and period — no spaces.
^[A-Za-z0-9_\-:.]{1,255}$Response
Unique wallet identifier
^wlt_[0-9A-Za-z]{22}$"wlt_2xKjF9mQb7vN4hL1pR3w8t"
Blockchain network of the wallet
ethereum, base, solana, polygon, tron, stellar, tempo, arbitrum, optimism, arc On-chain wallet address, null while provisioning
"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"
Current wallet lifecycle status
pending, active, disabled Wallet balances by asset
Timestamp when the wallet was created
"2026-01-15T09:30:00.000Z"
Timestamp when the wallet was last updated
"2026-01-15T09:30:00.000Z"
non_custodial — the customer co-signs each payout via the verify URL (see requiresUserSignature on payouts). custodial is a return-only value for legacy/operational wallets. Omitted until the custody model is determined.
non_custodial, custodial Timestamp of the last key rotation, omitted until rotated
"2026-01-15T09:30:00.000Z"
ID of the wallet that replaced this one after rotation, omitted until rotated
^wlt_[0-9A-Za-z]{22}$Client-supplied reference, unique per resource within your organization. 1-255 characters from A-Za-z, 0-9, underscore, hyphen, colon, and period — no spaces.
^[A-Za-z0-9_\-:.]{1,255}$