API: payouts
MeerPartners payout endpoints: creating a withdrawal request POST /api/v1/payouts and history GET /api/v1/payouts, request statuses and error codes.
The /api/v1/payouts/* group is the influencer's withdrawal of funds. All endpoints require an influencer JWT; the affiliate_id is taken from the token (anti-IDOR). The request is created instantly in the requested status, while processing by the provider runs asynchronously — the endpoint does not block on the payment gateway. The payout method is added beforehand via the Affiliate API.
POST /api/v1/payouts
/api/v1/payouts🔒 Bearer JWTCreate a withdrawal request. The amount is reserved: the corresponding commissions move from payable to locked. Success — 202 Accepted.
payout_method_idintegerrequiredGET /affiliate/payout-methods).currencystringrequiredamountstringoptionalpayable in this currency is withdrawn.{ "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 JWTThe influencer's payout history. Returns an array of requests (newest to oldest).
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
}
]Request statuses
The lifecycle (FSM): requested → processing → paid (success) or → failed. A request suspected of fraud may go to on_hold until a manual review. On failed, the reserved commissions are returned back to payable.
| Status | What it means |
|---|---|
| requested | The request is created, awaiting processing by the worker. |
| on_hold | Held by the anti-fraud gate until a manual review. |
| processing | Handed off to the provider / awaiting confirmation. |
| paid | Paid out. |
| failed | Failed; the amount returned to the available balance. |
Default minimum amounts
RUB — 500, USD — 10, EUR — 10. The exact thresholds are set by the platform operator; a withdrawal below the threshold returns BELOW_MIN_PAYOUT.
Error codes
| Code | HTTP | When |
|---|---|---|
INSUFFICIENT_BALANCE | 422 | Not enough available balance (payable). |
BELOW_MIN_PAYOUT | 422 | The amount is below the minimum for the currency. |
KYC_REQUIRED | 403 | Passed KYC is required (if the gate is enabled by the operator). |
PAYOUT_PENDING_EXISTS | 409 | There is already an unfinished request (requested/on_hold/processing). |
NO_PAYOUT_METHOD | 404 | The payout method is not found or does not belong to you. |
PAYOUT_AMOUNT_INVALID | 422 | An invalid amount was specified (for example ≤ 0). |
PAYOUT_AMOUNT_EXCEEDS_BALANCE | 422 | The requested amount exceeds the available payable. |
PROFILE_NOT_FOUND | 404 | The influencer profile is not found. |
One active request at a time
Until the previous request is finished (not paid/failed), a new one returns PAYOUT_PENDING_EXISTS. Wait for the final status in GET /api/v1/payouts.