S
docs.syncra.money
API ReferenceMerchant API

Обороты сделок (Turnover)

Дневные обороты сделок мерчанта PayIn/PayOut для графиков кабинета — окно дат, группировка, исключённые статусы

Обороты сделок (Turnover)

Эндпоинт оборотов отдаёт агрегированные суммы сделок мерчанта за окно дат — источник данных для графика оборота в кабинете. Читается с той же UNION -поверхности, что и листинг сделок (orders amount → PAYIN, payouts amount_fiat → PAYOUT). Read-only, dual-homed: кабинетный JWT или HMAC-пара мерчанта.


Запрос

GET /api/v1/p2p/merchant/deals/turnover?date_from=...&date_to=...

Параметры (Query Parameters)

ПолеТипОбяз.Описание
date_fromstring(RFC3339)ДаНачало окна (включительно).
date_tostring(RFC3339)ДаКонец окна (включительно). Должно быть не раньше date_from.
deal_typestringНет"PAYIN" (суммы orders) / "PAYOUT" (суммы payouts) / пусто = оба направления.

Ограничения окна

  • Окно не шире 92 дней (date_to − date_from ≤ 92 дней), иначе 400.
  • Дни без сделок в ответе просто отсутствуют — ось плотифицирует клиент.

Ответ (200 OK)

Живой ответ стейджа (окно 2026-08-01 … 2026-08-23):

{
  "data": [
    { "date": "2026-08-23", "deal_type": "PAYIN", "amount_minor": "100000", "currency": "RUB" },
    { "date": "2026-08-23", "deal_type": "PAYIN", "amount_minor": "100000", "currency": "RUB" },
    { "date": "2026-08-23", "deal_type": "PAYOUT", "amount_minor": "96971", "currency": "RUB" },
    { "date": "2026-08-23", "deal_type": "PAYOUT", "amount_minor": "98980", "currency": "RUB" }
  ],
  "next_page_token": ""
}

Поля TurnoverMerchantDealsRow

ПолеТипОписание
datestringUTC-календарный день создания сделки (YYYY-MM-DD). Бакет дня считается строго по UTC — сессионная таймзона БД не сдвигает границы.
deal_typestring"PAYIN" или "PAYOUT".
amount_minorint64Сумма сделок группы в минорных единицах (копейки).
currencystringISO 4217 (для PayOut код резолвится через p2p_currencies).

Гранулярность агрегата. Группировка выполняется по комбинации (тип × валюта × точное время создания сделки), а date в строке — это календарный день этого времени. На практике это значит: сделкам, созданным в разные секунды одного дня, соответствуют отдельные строки с одним и тем же date (см. живой пример выше — 2 строки PAYIN за один день). Суммируйте amount_minor по ключу (date, deal_type, currency) на клиенте, чтобы получить дневной итог. Порядок строк: date ASC, deal_type ASC, currency ASC.

Какие сделки входят в оборот

Оборот измеряет трафик, а не только завершённые сделки: учитывается каждый статус, кроме «несостоявшихся»:

ИсточникИсключённые статусы
PayIn (p2p_orders)EXPIRED, SPAM_REJECTED
PayOut (p2p_payouts)FAILED, EXPIRED

Ошибки (живые ответы стейджа)

400 — отсутствуют даты

{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "detail": "{\"code\":3,\"message\":\"date_from and date_to are required (RFC3339)\",\"details\":[]}",
  "instance": "/api/v1/p2p-engine"
}

400 — окно шире 92 дней

{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "detail": "{\"code\":3,\"message\":\"date window too large: at most 92 days between date_from and date_to\",\"details\":[]}",
  "instance": "/api/v1/p2p-engine"
}

Также 400 INVALID_ARGUMENT возвращают: не-RFC3339 date_from/date_to (invalid date_from (RFC3339): ...), date_to раньше date_from (date_to must not be earlier than date_from) и неизвестный deal_type (invalid deal_type "X": must be PAYIN, PAYOUT or empty (both)).


Связанные материалы

On this page