POST /v4/payouts/approve — the checker step

Like every V4 call, this endpoint family expects the three auth factors: a Bearer token (Authorization: Bearer …), a whitelisted source IP, and the per-request RSA signature headers (X-PP-Signature, X-PP-Nonce, X-PP-Timestamp). See Request Signing.

This is a money-movement endpoint: the Idempotency-Key header is mandatory. A missing key is rejected with 400 missing_idempotency_key. See Idempotency.

Approves a pending payout. This is the call where money moves: the ledger entry posts, the rail transfer fires, and a signed webhook is delivered.

Request body
FieldTypeDescription
referencestringThe payout reference from the submit step.
checker_idintegerDashboard user id of the approver. Must differ from the maker.
Response — 200
{
  "status": "approved",
  "reference": "PAY-2026-0107",
  "entry_id": 88231,
  "rail_reference": "AG_2026…"
}
Maker-checker violation — 422
{
  "error": "maker_checker_violation",
  "detail": "checker must differ from maker"
}

Self-approval is blocked server-side; there is no way to bypass it via the API. Dashboard approvals additionally require a one-time code (OTP) sent to the approver.