Обороты сделок (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_from | string(RFC3339) | Да | Начало окна (включительно). |
date_to | string(RFC3339) | Да | Конец окна (включительно). Должно быть не раньше date_from. |
deal_type | string | Нет | "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
| Поле | Тип | Описание |
|---|---|---|
date | string | UTC-календарный день создания сделки (YYYY-MM-DD). Бакет дня считается строго по UTC — сессионная таймзона БД не сдвигает границы. |
deal_type | string | "PAYIN" или "PAYOUT". |
amount_minor | int64 | Сумма сделок группы в минорных единицах (копейки). |
currency | string | ISO 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)).
Связанные материалы
- Список сделок — постраничный UNION-листинг.
- CSV-экспорт — полная выгрузка сделок.
- Лимиты мерча —
daily_deal_amount_limitсчитается от того же дневного объёма.