Перейти к содержанию

Баланс и курсы

GET /balance

Текущий баланс мерчанта.

curl https://api.x-hub.online/api/v1/balance \
  -H "X-Api-Key: ..." -H "X-Api-Secret: ..."

Ответ

{
  "available_usdt": "1245.32100000",
  "reserved_usdt": "0.00000000",
  "pending_rub": "50000.00",
  "total_settled_usdt": "15678.90000000",
  "total_withdrawn_usdt": "14433.58000000",
  "updated_at": "2026-04-14T12:00:00Z"
}
Поле Что значит
available_usdt Доступно к выплате прямо сейчас
reserved_usdt Зарезервировано под выплату в обработке
pending_rub Уже принятые рубли, ждут settlement (T+1)
total_settled_usdt Всего получено USDT за всё время
total_withdrawn_usdt Всего выведено за всё время

Settlement T+1

Что такое T+1: settlement запускается каждый день в 12:00 по московскому времени (09:00 UTC). В него попадают все платежи, оплаченные до 00:00 UTC текущих суток (03:00 МСК), — то есть за предыдущие сутки. Рубли конвертируются в USDT по курсу, который фиксируется один раз на весь расчёт в момент его запуска.

Зачем:

  • Фиксируем курс на весь батч — нет спекуляций на колебаниях
  • Успеваем проверить все callback'и от банка
  • Есть буфер на возвраты/диспуты

Пример:

9 апр 10:00 МСК — платёж 1000₽ принят (pending_rub += 1000)
10 апр 12:00 МСК — settlement: 1000₽ / 83.3595 = 11.996 USDT → available_usdt
10 апр 12:01 МСК — средства на балансе, попадут в ближайшую автоматическую выплату

GET /rates

Informational курс RUB/USDT. Не settlement — только для справки/калькулятора.

curl https://api.x-hub.online/api/v1/rates \
  -H "X-Api-Key: ..." -H "X-Api-Secret: ..."

Ответ

{
  "pair": "RUB/USDT",
  "rate_market": "79.37",
  "rate_merchant": "83.55",
  "updated_at": "2026-04-14T12:00:00Z",
  "note": "Informational rate. Final rate is fixed at T+1 settlement."
}
Поле Описание
pair Всегда "RUB/USDT"
rate_market Справочный рыночный курс (RUB за 1 USDT), округлён до 2 знаков. Без наценки X-Hub — по нему видно, от чего считается rate_merchant. Для начисления не используется
rate_merchant Итоговый курс для мерчанта (RUB за 1 USDT), округлён до 2 знаков. Включает все комиссии/наценку X-Hub — используй его в калькуляторе. Рыночный курс отдаётся полем rate_market, размер наценки отдельным полем по-прежнему не отдаётся
updated_at ISO-8601 UTC. Время последнего обновления курса
note Информационное сообщение

Используй rate_merchant в калькуляторе

Клиент платит 1000₽ → тебе начислится 1000 / rate_merchant USDT (минус флуктуации до settlement).

Пример

Клиент платит 1000₽, R = 79.37 (рыночный курс на T+1, он же rate_market), markup = 5%:

merchant_rate = 79.37 / (1 - 0.05) = 83.5474  → в API придёт "83.55"
merchant_usdt = 1000 / 83.5474 = 11.96925338 USDT  <-- тебе
xhub_fee = (1000 / 79.37) - 11.96925338 ≈ 0.63 USDT  (все комиссии X-Hub)

Не считай начисление по rate_merchant до копейки

В ответе курс округлён до 2 знаков, а фактическое начисление считается по полной точности и фиксируется на T+1 settlement. GET /rates — для калькулятора и витрины, не для сверки.

Курс временно недоступен

Если источник курса не отвечает — 503 RATE_UNAVAILABLE. Ретрай через 30-60 сек, см. Коды ошибок.