Create a wallet
Create a wallet — a ledger balance in a single currency for a customer.
This does not create a credential. Add funding rails later with POST /v1/wallets/:id/credentials when you need a persistent receive identity. You can still onramp into a wallet with zero credentials.
If customer_id is omitted, the wallet is created for the merchant.
The currency must support deposit (can_deposit = true).
FIAT currencies are resolved against the customer’s country; crypto
currencies resolve for any customer.
Balances start at zero, formatted to the currency’s precision. A customer may
hold multiple wallets in the same crypto currency, but only one wallet per fiat
currency; each create returns a new wallet with its own wal_… id. Use the
optional label to tell them apart.
Body
currency— required. 2-8 uppercase alphanumerics (e.g.USDC,NGN).customer_id— Owner customer ID. If omitted, defaults to your account’s default customer — created automatically when you signed up.label— optional. Max 255 chars.metadata— optional. Free-formRecord<string, string>.
Example
POST /v1/wallets
{
"currency": "USDC"
}
Authorizations
API key issued during merchant onboarding.
Headers
Optional client-supplied key. Identical key + identical body within 24h replays the original response. Identical key + different body returns 409 idempotency_conflict. The hash is over raw bytes — clients retrying must send the byte-identical body; a re-serialised JSON payload will produce a different hash and a 409. Strongly recommended for retry-safe clients.
^[A-Za-z0-9_\-]{8,255}$Body
CreateWalletDto