Skip to main content
GET
See the wallets behind your account, with the settlement address your funds move to. There is at most one active wallet per currency, but this endpoint also returns deactivated wallets (isActive: false) — deactivating a wallet keeps its row — so a currency you deactivated and re-added appears more than once. Filter on isActive before keying a map by currency. The response returns safe fields only: never xpubs, seeds, or derivation data. This endpoint takes no parameters — it always lists the wallets of the merchant your credential belongs to.

Authorization

Secret API-key scope wallets:read, or dashboard JWT with team permission wallets:view. Subject to the global rate limit (60 requests/minute — see the Overview). See the Authentication guide.

Response fields

string
Wallet id.
string
Currency ticker of the wallet.
string
The address your settled funds are sent to. Settlement is the automatic movement of received funds to storage — payments show as “Processing” in the dashboard while it runs.
boolean
Whether the wallet is active. Deactivated wallets (isActive: false) are still returned by this endpoint, so a currency can appear on more than one row — key by currency only after filtering to isActive: true.
string
ISO 8601 creation timestamp.
Wallet mutations are dashboard-only. POST /api/v1/merchant-wallets (add), PATCH /api/v1/merchant-wallets/{walletId}/settlement (re-point the settlement address), and DELETE /api/v1/merchant-wallets/{walletId} (deactivate) require a dashboard JWT with wallets:manage plus a step-up factor on every call — a passkey, a 6-digit TOTP code, or a code from POST /api/v1/merchant-wallets/send-email-code (the emailed code is bound to the wallet_change action and cannot be reused from another flow). The gate is fail-closed: a call with no factor is refused even when the user has no 2FA enrolled, answering 400 {"ok":false,"error":{"code":"VERIFICATION_FAILED","message":"Verification required: provide email code, OTP, or passkey"}}. With an API key these calls answer 401 {"error":"Invalid or expired token"} — the JWT guard runs first and a key is not a session token.

See also

  • List currencies: the hasWallet flag on each currency your credential can charge in.
  • Get balances: the credited money sitting behind these wallets, per currency.
  • Route Map: where the dashboard-only wallet mutation routes live in the full endpoint inventory.
  • Authentication: API-key scopes vs dashboard JWT team permissions.