Баланс
GET /v1/balance отдаёт деньги проекта: баланс каждого актива, в котором у него что-то есть, и те же деньги в долларах США. Читайте его для своей панели, перед запросом вывода и для сверки своего учёта с сервисом.
У проекта, которому оператор включил прямые сборы, этот баланс остаётся нулевым: деньги каждого платежа пересылаются на собственный кошелёк проекта, а не хранятся, — см. куда уходят деньги. Ноль здесь значит, что деньги уже пришли, а не что проекту не платили.
Запрос
У запроса нет параметров и тела.
В ответе есть ETag, поэтому продукт, который держит баланс на экране, платит за один 304, пока ничего не менялось, — см. условные чтения.
Ответ
200 с balances — по строке на актив — и total: те же строки, сложенные в долларах. Актива, в котором у проекта нет денег, в ответе нет: проект, которому ещё не платили, получает пустой массив и нулевые итоги.
| Поле | Тип | Описание |
|---|---|---|
balances[].asset |
string | Идентификатор актива, например USDT_TRON, — см. активы |
balances[].network |
string | Идентификатор сети актива, например tron |
balances[].balance |
string | Баланс в единицах актива, со всеми его знаками после точки. Со знаком минус, если выплаты увели его ниже нуля |
balances[].unconfirmed |
string | Платежи, увиденные в сети и ещё не подтверждённые, в единицах актива. В balance не входят |
balances[].balance_usd |
string или null | balance по курсу, в долларах и центах; null, если у сервиса нет свежего курса монеты |
balances[].unconfirmed_usd |
string или null | unconfirmed по тому же курсу; null при том же условии |
total.balance_usd |
string | Балансы активов, у которых есть свежий курс, сложенные |
total.unconfirmed_usd |
string | Неподтверждённые платежи этих активов, сложенные |
total.unpriced_assets |
array of string | Активы, в которых деньги есть, а свежего курса нет: они есть в balances и не входят в суммы |
total.rates_observed_at |
string или null | Когда принят самый старый курс из сумм; null, если в суммах нет ни одного курса |
Строки идут от большей долларовой стоимости к меньшей, активы без курса — последними.
Откуда берутся числа
balance— это баланс по реестру, сумма журнала проекта, а не хранимое число, которое что-то могло забыть обновить. Платёж добавляет к нему, когда у перевода достаточно подтверждений; выплата и вывод — забирают. Исправление делается сторнирующей проводкой, поэтому баланс всегда равен истории, которая его дала.unconfirmedстоит рядом с балансом, а не внутри. Перевод, у которого мало подтверждений, может исчезнуть при реорганизации цепи, то есть это ещё не деньги. Он войдёт вbalance, когда подтвердится, — см. статусы.- В суммах все знаки после точки их актива, как и везде в этом API: считайте их в строке, а не вшивайте число 6 в свой код, — см. суммы.
- Доллары — справочные. Это суммы по последнему принятому сервисом курсу, центы округлены к нулю, поэтому итог может отличаться от суммы округлённых строк на цент на строку. Актив, у монеты которого нет свежего курса, никогда не считается по устаревшему: вместо этого он назван в
unpriced_assets.
Ошибки
| HTTP | error.code |
Когда |
|---|---|---|
| 401 | unauthorized |
Ключ API отсутствует или неверен |
| 403 | merchant_disabled |
Мерчант отключён |
| 429 | rate_limited |
Превышен лимит запросов |
| 500 | internal_error |
Необработанная ошибка сервиса |
Мерчант, не прошедший проверку на ревью, свой баланс читать может.
Пример
curl -s https://api.stons.io/v1/balance -H "X-Api-Key: $API_KEY"
200, проект, которому зачислено 100 USDT в TRON, и ещё 5 USDT набирают подтверждения:
{
"balances": [
{
"asset": "USDT_TRON",
"network": "tron",
"balance": "100.000000",
"unconfirmed": "5.000000",
"balance_usd": "99.96",
"unconfirmed_usd": "4.99"
}
],
"total": {
"balance_usd": "99.96",
"unconfirmed_usd": "4.99",
"unpriced_assets": [],
"rates_observed_at": "2026-10-04T17:31:05.531Z"
}
}