API: выплаты
Эндпоинты выплат MeerPartners: создание заявки на вывод POST /api/v1/payouts и история GET /api/v1/payouts, статусы заявок и коды ошибок.
Группа /api/v1/payouts/* — вывод средств инфлюенсером. Все эндпоинты требуют JWT инфлюенсера; affiliate_id берётся из токена (анти-IDOR). Заявка создаётся мгновенно в статусе requested, а обработка провайдером идёт асинхронно — эндпоинт не блокируется на платёжном шлюзе. Метод вывода предварительно добавляется через Affiliate API.
POST /api/v1/payouts
/api/v1/payouts🔒 Bearer JWTСоздать заявку на вывод. Сумма резервируется: соответствующие комиссии переходят из payable в locked. Успех — 202 Accepted.
payout_method_idintegerrequiredGET /affiliate/payout-methods).currencystringrequiredamountstringoptionalpayable в этой валюте.{ "payout_method_id": 301, "currency": "RUB", "amount": "12400.00" }{
"payout_id": 4501,
"amount": "12400.00",
"currency": "RUB",
"status": "requested"
}GET /api/v1/payouts
/api/v1/payouts🔒 Bearer JWTИстория выплат инфлюенсера. Возвращает массив заявок (от новых к старым).
idintegerrequiredamountstringrequiredcurrencystringrequiredstatusstringrequiredproviderstringoptionalrequested_atstringrequiredpaid_atstringoptional[
{
"id": 4501,
"amount": "12400.00",
"currency": "RUB",
"status": "paid",
"provider": "manual",
"requested_at": "2026-06-10T09:00:00Z",
"paid_at": "2026-06-11T14:20:00Z"
},
{
"id": 4498,
"amount": "85.00",
"currency": "USD",
"status": "processing",
"provider": "manual",
"requested_at": "2026-06-12T08:00:00Z",
"paid_at": null
}
]Статусы заявки
Жизненный цикл (FSM): requested → processing → paid (успех) или → failed. Заявка с подозрением на фрод может уйти в on_hold до ручной проверки. При failed зарезервированные комиссии возвращаются обратно в payable.
| Статус | Что значит |
|---|---|
| requested | Заявка создана, ждёт обработки воркером. |
| on_hold | Задержана антифрод-гейтом до ручной проверки. |
| processing | Передана провайдеру / ждёт подтверждения. |
| paid | Выплачено. |
| failed | Не удалось; сумма вернулась в доступный баланс. |
Минимальные суммы по умолчанию
RUB — 500, USD — 10, EUR — 10. Точные пороги задаёт оператор платформы; вывод ниже порога вернёт BELOW_MIN_PAYOUT.
Коды ошибок
| Код | HTTP | Когда |
|---|---|---|
INSUFFICIENT_BALANCE | 422 | Недостаточно доступного баланса (payable). |
BELOW_MIN_PAYOUT | 422 | Сумма ниже минимальной для валюты. |
KYC_REQUIRED | 403 | Требуется пройденный KYC (если гейт включён оператором). |
PAYOUT_PENDING_EXISTS | 409 | Уже есть незавершённая заявка (requested/on_hold/processing). |
NO_PAYOUT_METHOD | 404 | Метод вывода не найден или не принадлежит вам. |
PAYOUT_AMOUNT_INVALID | 422 | Указана некорректная сумма (например ≤ 0). |
PAYOUT_AMOUNT_EXCEEDS_BALANCE | 422 | Запрошенная сумма больше доступного payable. |
PROFILE_NOT_FOUND | 404 | Профиль инфлюенсера не найден. |
Одна активная заявка за раз
Пока предыдущая заявка не завершилась (не paid/failed), новая вернёт PAYOUT_PENDING_EXISTS. Дождитесь финального статуса в GET /api/v1/payouts.