Skip to main content
A wallet is the BlooBank platform’s unit of balance and the isolation boundary for every financial operation. Every payment order, every webhook event, every balance query happens in the context of a specific wallet.

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. Querying GET /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

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.
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.
Before submitting an outbound PIX_CASH_OUT_* order, fetch GET /wallets/{wallet}/balance and compare available to the order amount. Fail fast if insufficient.
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.