Балансы мерчанта
Управление финансовыми балансами мерчанта, типы балансов и поддерживаемые фиатные и криптовалюты в Syncra V2
Управление балансами мерчанта
Платформа Syncra V2 предоставляет мультивалютный финансовый шлюз, позволяющий мерчантам принимать и выплачивать средства в различных фиатных валютах СНГ и Азии, а также аккумулировать и выводить средства в криптовалюте (USDT).
Для каждого мерчанта в системе ведется учет балансов в разрезе типов кошельков и используемых валют.
Получение балансов мерчанта
Чтобы запросить актуальную финансовую информацию по вашим балансам, выполните следующий GET-запрос:
GET /api/v1/p2p/merchant/balanceФормат ответа (200 OK)
В ответ возвращается объект с массивом кошельков wallets верхнего уровня
(без обёртки data), содержащим идентификатор кошелька, валюту, доступный
(available), замороженный (frozen), общий (total) и находящийся в пути
(pending_credits) баланс. Все суммы — int64
в минорных единицах, в JSON передаются строками (канон proto3 JSON).
Живой ответ стейджа:
{
"wallets": [
{
"wallet_id": "1af2d1ee-7fc3-4796-9dda-10d97af62094",
"currency": "USDT",
"available": "95982",
"frozen": "4018",
"total": "100000",
"pending_credits": "0"
},
{
"wallet_id": "9b2fcbd6-b6f4-4f17-a94d-b7309f84bde5",
"currency": "USDT",
"available": "0",
"frozen": "0",
"total": "0",
"pending_credits": "0"
}
]
}wallets — это реальные кошельки мерчанта из money-сервиса: каждая строка
соответствует фактическому кошельку со своей валютой и собственным wallet_id
(UUID кошелька; TRC-20 адрес пополнения — отдельная сущность, см. Wallet →
Deposit Address).
Никаких синтетических или агрегированных строк в ответе нет — состав массива
отражает фактически провижиненные кошельки. frozen отражает активные холды
(см. Замороженные средства).
Все суммы в ответах передаются в минимальных единицах соответствующей
валюты (например, в копейках для RUB, центах для USDT и т.д.) в виде
64-битного целого числа (int64). В JSON значения int64 сериализуются
строками ("available": "95982") — канон proto3 JSON, исключающий потерю
точности в JS-клиентах.
Средства в пути (pending_credits)
Поле pending_credits каждого кошелька — это сумма, которая уже заработана
завершёнными сделками, но ещё не добралась до available: после COMPLETED
сделки её нетто-зачисление проходит через внутреннюю очередь распределения
комиссий (fee-distribution), и до её проведения деньги видны как «в пути».
- Отдаётся всегда, включая
0— обе цифры, available и pending, видны постоянно (канон Stripe available/pending). - Та же минорная единица, что и остальные поля кошелька (для USDT — центы), сериализуется строкой.
- Инвариант эскроу-нуля: холды живут в
frozenи вpending_creditsне попадают — «в пути» строго меньше либо равна нетто-зачислениям завершённых сделок, ожидающим распределения. - В кабинете отображается как «В пути» — чтобы было видно, почему нетто завершённой сделки ещё не в доступном балансе.
Типовой жизненный цикл: сделка COMPLETED → нетто появляется в
pending_credits → фоновое распределение комиссий проводит зачисление →
сумма переезжает в available, pending_credits уменьшается на неё же.
Как устроен баланс мерчанта
Баланс мерчанта — это набор мультивалютных кошельков money-сервиса,
перечисленных в GET /balance. Каждый кошелёк ведёт свою валюту; операции
двигают конкретный кошелёк:
- Зачисление PayIn. Все успешные входящие платежи (за вычетом комиссии платформы) зачисляются на USDT-кошелёк операционного баланса мерчанта.
- Выплаты (PayOut). При создании выплаты на USDT-кошельке размещается
холд (по SELL-курсу на момент создания): сумма резервируется в
frozenдо финального исхода — списания (COMPLETED) или возврата (FAILED/EXPIRED). - Пополнение. Операционный баланс пополняется USDT-депозитами на TRC-20 адрес мерчанта (Wallet → Deposit Address).
«Типы балансов» MAIN/INSURANCE/DEPOSIT в API V2 не моделируются:
GET /balance возвращает только фактические кошельки без классификации.
Залоговые (insurance) счета существуют в домене команд трейдеров и в
API мерчанта не видны.
Поддерживаемые валюты
Syncra V2 — мультивалютная платформа. Список поддерживаемых валют определяется
конфигурацией тенанта (таблица p2p_currencies) и может быть расширен
администратором в реальном времени без перезапуска сервисов.
Примеры валют:
| ISO Код | Название валюты | Минимальная единица |
|---|---|---|
| RUB | Российский рубль | Копейка (0.01 RUB) |
| USDT | Tether (USDT) | Цент (0.01 USDT) |
Актуальный список валют вашего тенанта возвращает эндпоинт
GET /api/v1/p2p/merchant/currencies, методов оплаты —
GET /payment-methods.
Конкретный набор зависит от вашего тенанта и региона.
Замороженные средства (Frozen)
Показатель frozen в ответе API указывает на сумму средств, временно
заблокированную на кошельке:
- Удержание на выплату (Payout Hold): Когда вы создаете запрос на выплату
(
POST /deals/payout), сумма транзакции плюс расчетная комиссия переводятся в статусfrozenдо момента подтверждения выплаты трейдером или банком. При успешном завершении средства окончательно списываются, при ошибке — возвращаются в доступный баланс (available). - Спорные транзакции (Disputes Hold): В случае открытия диспута по входящей транзакции, оспариваемая сумма временно замораживается на балансе мерчанта до вынесения решения арбитражем платформы.