MMeerPartners docs

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

POST/api/v1/payouts🔒 Bearer JWT

Create a withdrawal request. The amount is reserved: the corresponding commissions move from payable to locked. Success — 202 Accepted.

payout_method_idintegerrequired
Payout method ID (from GET /affiliate/payout-methods).
currencystringrequired
Withdrawal currency, a 3-letter ISO code. Normalized to uppercase.
amountstringoptional
Amount (NUMERIC). If not specified — the entire available payable in this currency is withdrawn.
Request
{ "payout_method_id": 301, "currency": "RUB", "amount": "12400.00" }
202 response
{
  "payout_id": 4501,
  "amount": "12400.00",
  "currency": "RUB",
  "status": "requested"
}

GET /api/v1/payouts

GET/api/v1/payouts🔒 Bearer JWT

The influencer's payout history. Returns an array of requests (newest to oldest).

idintegerrequired
Request ID.
amountstringrequired
Amount (NUMERIC).
currencystringrequired
Currency.
statusstringrequired
Request status (see below).
providerstringoptional
Payment provider (if assigned).
requested_atstringrequired
When it was created (ISO 8601).
paid_atstringoptional
When it was paid (if paid).
200 response
[
  {
    "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.

StatusWhat it means
requestedThe request is created, awaiting processing by the worker.
on_holdHeld by the anti-fraud gate until a manual review.
processingHanded off to the provider / awaiting confirmation.
paidPaid out.
failedFailed; 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

CodeHTTPWhen
INSUFFICIENT_BALANCE422Not enough available balance (payable).
BELOW_MIN_PAYOUT422The amount is below the minimum for the currency.
KYC_REQUIRED403Passed KYC is required (if the gate is enabled by the operator).
PAYOUT_PENDING_EXISTS409There is already an unfinished request (requested/on_hold/processing).
NO_PAYOUT_METHOD404The payout method is not found or does not belong to you.
PAYOUT_AMOUNT_INVALID422An invalid amount was specified (for example ≤ 0).
PAYOUT_AMOUNT_EXCEEDS_BALANCE422The requested amount exceeds the available payable.
PROFILE_NOT_FOUND404The 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.

What's next