> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Balances

> One balance for each asset. Available, held, and shortfall, with no total.

Your org has one balance for each asset that Jenzy enabled. `GET /v2/balances`
gives one row for each asset. `GET /v2/balances/{asset}` gives one row.

```json theme={null}
{
  "balances": [
    { "asset": "KES", "available": "1250000.00", "held": "50000.00", "shortfall": "0.00" },
    { "asset": "USDT", "available": "820.5", "held": "0", "shortfall": "0" }
  ]
}
```

The list has the same assets as `GET /v2/assets`. An asset that you never
used reads `"0.00"`. It does not disappear from the list.

## The three fields

* **`available`** — the money that you can spend now, in that asset. A
  payout or a conversion draws this down.
* **`held`** — the money that payouts in progress reserve. Each hold is the
  full debit of the payout, with its fee. Hermes releases the hold when the
  payout gets to a terminal state.
* **`shortfall`** — usually `"0.00"`. A different value shows that the
  balance is below zero. This can happen after a reversal. Your next
  collection in that asset pays the shortfall first.

`available` and `shortfall` are two readings of one figure. When one is above
zero, the other is zero.

## No totals

There is no total across assets, and there is no value in a reference asset.
Each row stands on its own. A KES row and a USDT row have nothing in common.
If you want a total, convert each row yourself with your own rate.

## A balance is per asset, and so is a refusal

A payout draws down the balance of its `source_asset`. A conversion draws
down the balance of its `from_asset`. When that one balance is too low, you
get `insufficient_funds` (402). Your balance in a different asset does not
help. Convert first, or fund the balance.

## Read the correct source

`GET /v2/balances` is the correct source for your balance. Do not calculate a
balance from webhooks, because events can arrive in a different sequence.

A `/v2` webhook delivery does not carry a `balance` block. There is no
`balance.low` event on `/v2`. If your system needs a floor, read
`GET /v2/balances` at a moderate rate and compare the row yourself.
