GET /v2/balances
gives one row for each asset. GET /v2/balances/{asset} gives one row.
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 itssource_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.