Why wallets exist
A tenant typically holds money for multiple distinct purposes — operational treasury, customer settlement accounts, escrow reserves. Mixing those in one balance makes reconciliation painful and rules ambiguous. Wallets give you explicit, named ledger boundaries so each purpose has its own bookkeeping.
Pick the granularity that matches how you reconcile, not how you organize.
Anatomy of a wallet
See Resources & naming for the shared envelope shape.
Identifiers — id vs name
Both identify the wallet, but they serve different purposes:
Both are accepted in path parameters:
GET /wallets/wal_2NhVqRtYbHmRdZ4vG6qAeL and GET /wallets/production-main resolve to the same wallet.
Name rules. RFC 1035 DNS label: 1–63 chars, lowercase
a-z, digits, hyphen. Must start with a letter, end with alphanumeric. Immutable once created — LABEL_IMMUTABLE on attempts to change.The three balances
A wallet’s balance is split into three views — not one. QueryingGET /wallets/{wallet}/balance returns:
Before creating an outbound payment, check
available, not amount. An outbound order against insufficient available returns INSUFFICIENT_FUNDS (in the order’s errorCode) and the order finalizes as FAILED.
Balance values are integers in minor units (cents for BRL). See Amounts & currency.
Lifecycle states
A wallet is in one of two states:DISABLED is reversible — set back to ACTIVE via the same endpoint. See Wallet lifecycle for the full state machine.
Operational patterns
Operational dashboard
Operational dashboard
Display
amount, available, locked side by side. Refresh on webhook events or at fixed intervals — the snapshot is read live from the underlying provider, not cached.Accounting reconciliation
Accounting reconciliation
At end of day, compare your local ledger of completed payment orders with the wallet’s
amount. Any drift indicates a missed event — replay webhooks via the Dashboard.Pre-flight balance check
Pre-flight balance check
Before submitting an outbound
PIX_CASH_OUT_* order, fetch GET /wallets/{wallet}/balance and compare available to the order amount. Fail fast if insufficient.Multi-currency support
Multi-currency support
Each wallet is single-currency (
asset.ccy). For multi-currency operation, create one wallet per currency and route incoming payments by currency.Endpoints
List wallets
Page through accessible wallets.
Create wallet
Provision a new wallet with a DNS label name.
Get wallet
Fetch a wallet by id or name.
Get balance
Real-time balance snapshot (
amount / locked / available).Next
Wallet lifecycle
The state machine — ACTIVE, DISABLED, transitions.
Payments overview
How payment orders flow through wallets.