API referencePayouts

Send a payout

Raise a payout and commit the money to it. The money is reserved before this returns, whether or not the payout needs approval. A `requires_approval` response therefore means "the funds are held and somebody must sign", not "nothing has happened yet". In **test mode** the payout is settled as it is raised: no rail is involved, so the response already carries the outcome. `amount_minor` and the destination decide what that outcome is — see the sandbox guide for the values that produce a decline, a timeout, a return or a review hold.

POST
/api/b/v1/payouts

Raise a payout and commit the money to it.

The money is reserved before this returns, whether or not the payout needs approval. A requires_approval response therefore means "the funds are held and somebody must sign", not "nothing has happened yet".

In test mode the payout is settled as it is raised: no rail is involved, so the response already carries the outcome. amount_minor and the destination decide what that outcome is — see the sandbox guide for the values that produce a decline, a timeout, a return or a review hold.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

What a payout is made of.

Every field carries a description and an example, and both are load-bearing rather than decoration — E11-16. The description is what a reader sees on the operation page; the example is what the reference's playground fills the field with, so "Send" on a freshly-opened page sends a request that is valid rather than one made of "string" and 1. A playground whose default body is refused teaches an integrator that the endpoint is fussy, when what it actually taught them is that nobody filled in an example.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/b/v1/payouts" \  -H "Content-Type: application/json" \  -d '{    "idempotency_key": "payroll-2026-08-0042",    "amount_minor": 15000000,    "currency": "RWF",    "method": "mobile_money",    "transaction_type": "b2p"  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "reference": "string",  "amount_minor": 0,  "fee_minor": 0,  "total_minor": 0,  "currency": "string",  "status": "created",  "method": "string",  "transaction_type": "string",  "category": "string",  "recipient_name": "string",  "country_code": "string",  "rail": "string",  "provider_reference": "string",  "failure_reason": "string",  "approval_id": "15af2260-72db-4fc4-b587-6b841d6a3d55",  "created_at": "2019-08-24T14:15:22Z",  "completed_at": "2019-08-24T14:15:22Z"}