Syncra Merchant API V2
Syncra Merchant API V2 — полная документация для интеграции
Merchant API V2
Добро пожаловать в документацию Syncra Merchant API V2. Этот программный интерфейс разработан для мерчантов (онлайн-сервисы, платформы, ритейлеры), которым требуется надёжный и масштабируемый процессинг P2P-платежей в реальном времени.
С помощью нашего API вы можете полностью автоматизировать приём платежей (PayIn), отправку выплат (PayOut), управление балансами, отслеживание диспутов, управление whitelist-pass'ами и криптографическими выводами USDT.
Базовая информация
Базовый URL
Все запросы к Merchant API V2 отправляются на следующий базовый адрес:
https://api.syncra.money/api/v1/p2p/merchantУстаревшая legacy-версия API (V1) доступна по адресу
https://api.syncra.money/v1/ только для совместимости ранее
интегрированных мерчантов. Дата полного отключения (sunset) V1 —
12 января 2027 года: после этой даты все V1-запросы возвращают
410 Gone (до отключения каждый ответ V1 несёт заголовки Deprecation,
Sunset и Link; rel="successor-version"). Новым клиентам настоятельно
рекомендуется сразу использовать эндпоинты V2 по основному пути.
Формат данных
Интерфейс спроектирован по принципу REST с использованием JSON:
- Запросы должны содержать заголовок
Content-Type: application/json. - Все тела ответов возвращаются в формате JSON (кроме
CSV-экспорта с
Accept: text/csv). - Имена полей —
snake_case. - Временные метки — ISO 8601 (например,
2026-07-12T15:00:00Z). - Денежные суммы —
int64в минорных единицах (копейки/центы/satoshi); в JSON-ответах API значенияint64передаются строками ("amount": "100000"— формат proto3 JSON, исключает потерю точности в JS-клиентах). В телах вебхуков суммы передаются так же — строками (см. Callbacks). - Успешные ответы — единый конверт по типу ответа: единичный объект —
напрямую (
{"deal": {...}}); все списки/листинги (GET /deals,GET /callbacks,GET /payment-methods,GET /appeals,/passes,/banks,/currencies,/wallet/deposits,/wallet/withdrawals,/deals/turnover) — единый конверт{"data": [...], "next_page_token": ""}(AIP-158: пустая строка = последняя страница; других полей конверт не несёт —total_countна HTTP не отдаётся). Исключение —GET /balance({"wallets": [...]}): он не листинг, а проекция баланса. - Все ошибки (non-2xx) — RFC 9457
application/problem+json(см. Коды ошибок):type/title/status/detail(с вложенными gRPC-деталями)/instance; трассировка — заголовкомX-Trace-Id. Неверное состояние запроса (нехватка баланса, дневной лимит, повторная апелляция) →400(не409).
Лимиты и Rate Limiting
Для защиты платформы применяется ограничение частоты запросов (Rate Limiting), настраиваемое per-merchant:
-
По умолчанию: 10 000 запросов в минуту на один токен мерчанта (per-merchant
rate_limit_per_minute; окно — календарная минута UTC). -
Каждый ответ несёт заголовки
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset(Unix-секунды сброса окна). -
При превышении — HTTP
429 Too Many Requestsс телом RFC 9457 problem+json (см. Коды ошибок):{ "type": "about:blank", "title": "Too Many Requests", "status": 429, "detail": "{\"code\":8,\"message\":\"merchant rate limit exceeded (limit: 10000/min)\",\"details\":[]}", "instance": "/api/v1/p2p-engine" }
Обзор разделов
Документация организована по функциональным разделам — начните с того, что соответствует вашей задаче:
Платежи
Приём платежей (PayIn), выплаты (PayOut), hosted-страница и антифрод
Операции
Сделки, диспуты и whitelist-пропуска
Финансы
Балансы, кошелёк USDT, обороты и CSV-экспорт
Вебхуки
Приём уведомлений, проверка подписи и ретраи
Аккаунт
API-ключи, профиль и лимиты мерчанта
Справочники
Статусы, коды ошибок, банки и миграция с V1
API Reference
Все эндпоинты со схемами и интерактивным Try-it
Инструменты
SDK-примеры, импорт в Postman/Insomnia и OpenAPI-спека
Поля ответов сделок (MerchantDealInfo) используют canonical имена V2:
deal_id (НЕ id), payment_url (НЕ payment_page_url), deal_type,
target_requisite. Полный список полей — в разделе
Deals.
Быстрый старт (Quick Start)
Первый тестовый запрос — получение баланса мерчанта:
curl -X GET https://api.syncra.money/api/v1/p2p/merchant/balance \
-H "X-Merchant-Token: your_merchant_token_here" \
-H "X-Signature: t=1783856120,v1=9e87d0c3c8801d0a5198d023b6b19a16f2c8d2037920ab3e09819cd8e412cfab" \
-H "Content-Type: application/json"Ответ (RetrieveMerchantBalanceResponse) — массив wallets[] верхнего
уровня (без обёртки data), каждый элемент — реальный кошелёк мерчанта из
money-сервиса со своей валютой и wallet_id: wallet_id, currency,
available, frozen, total (все суммы — int64 в минорных единицах,
в JSON передаются строками). Живой ответ стейджа:
{
"wallets": [
{
"wallet_id": "1af2d1ee-7fc3-4796-9dda-10d97af62094",
"currency": "USDT",
"available": "95982",
"frozen": "4018",
"total": "100000"
},
{
"wallet_id": "9b2fcbd6-b6f4-4f17-a94d-b7309f84bde5",
"currency": "USDT",
"available": "0",
"frozen": "0",
"total": "0"
}
]
}Подробную информацию о расчёте заголовка подписи X-Signature и защите от
атак повторного воспроизведения — в разделе
Аутентификация. О приёме webhook'ов —
в Callbacks.