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
| Field | Type | Description |
|---|
reference | string | The payout reference from the submit step. |
checker_id | integer | Dashboard 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.