---
updatedAt: 2026-09-30T15:54:20.000Z
---

Fetch the complete documentation index at: https://docs.avvio.xyz/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Balance & funding

One USD balance pays every payout, topped up by wire or with USDC.

You hold a US dollar balance with Avvio, and every standard payout debits it at
the moment it is sent. You fund it ahead of time, so a payout never waits on a
transfer from your bank.

## How it works

1. **Wire** USD to the dedicated account `GET .../payin-accounts` returns, or
   hold USDC in your organization's wallet. In the sandbox,
   `POST .../sandbox/fund` credits the balance.
2. **Check** what you can send with `GET .../balance`.
3. **Pay.** Each payout debits the balance when it is accepted. A payout larger
   than the balance is refused with `400 INSUFFICIENT_BALANCE`, and nothing is
   sent.
4. **Reconcile** every movement with `GET .../balance_transactions`.

Some crypto and dedicated settlement routings work differently: the payout is
priced, answers `requiresFunding: true`, and waits for you to fund that one
payout from your own wallet.

## Coverage

The balance is USD. What it can pay out to is on
[Countries and currencies](/coverage/countries/).

## Reading the balance

`amount` (and `balances[]`) is everything a payout can draw on, per currency:
what the payment network holds for you plus the USD stablecoins in your wallet,
cached for up to 60 seconds. Wallet figures are face value per chain, before
the cost of moving them onto the payout's rail, so a payout for exactly
`amount` can fail to fund when money must be gathered from several chains.

`provider[]` is the network-held part and `wallet[]` your USDC and USDT per
chain. `unavailable[]` names any source (`network` or `wallet`) that could not
be read; the figures are then a floor, uncached, so retry before concluding you
cannot fund a payout. In sandbox, `amount`, `provider[]` and
`ledger[].available` are one USD figure and `wallet[]` is empty.

Stablecoins a network holds for you count as USD. `POST /payouts` takes no
`sourceCurrency`, and sending one is a `400 VALIDATION_ERROR`; only the
two-step `POST …/quotes/offramp` lets you name the balance currency to debit
(and that path is closed to organizations with caps or approvals, see
[Send a payout](/payouts/#quote-then-accept)). USD in a virtual account is reported on arrival, but
on a wallet-funded routing a payout is priced from the wallet, so convert the
USD to USDC in the dashboard first.

`ledger[]`, always present, is our append-only record of the network-held part:
`available`, `held` and `total`, never summed into anything else. The network
figure says what can be spent now; the ledger figure reconciles row by row with
`GET /balance_transactions`, which also explains any difference between them.

## Key features

### Funding you can verify

A wallet-funded payout is confirmed against the chain before it is recorded:
the transaction must exist, have confirmed, and have paid at least the required
amount to the exact deposit address.

### Automatic funding, on request

Organizations can opt in to have wallet-funded payouts paid from their own
wallet automatically. The API calls stay the same.

## Integration guides

- [Fund your balance](/funding/): wire, sandbox funding, and payouts that wait for your funds.
- [Reconcile your ledger](/reconciliation/): the four balance numbers and holds.
- [Go live](/going-live/): funding ahead of your first live run.
