Send money to a customer using Waftpay Payouts API.
transaction.reference to safely retry the same logical payout.
| Header | Required | Notes |
|---|---|---|
Authorization | Yes | Bearer <payout_token> (payout product token only) |
X-Custom-Signature | Yes | Base64 RSA signature. See Signature generation. |
Content-Type | Yes | application/json |
| Field | Type | Required | Notes |
|---|---|---|---|
transaction | object | Yes | Payout details and idempotency reference. |
originator | object | Yes | Sender details. |
recipient | object | Yes | Recipient details. |
callback_url | string | Yes | HTTPS URL for final status callbacks. |
meta | object | No | Arbitrary key/value metadata echoed in callbacks. |
| Field | Type | Required | Notes |
|---|---|---|---|
reference | string | Yes | Client-generated unique reference (idempotency key). |
amount | integer | Yes | Amount in major units (e.g., 1000 = 1000 KES). |
currency | string | Yes | ISO 4217 currency code (e.g., KES, USD). |
description | string | Yes | Short narrative for the payout. |
service_code | string | Yes | Service to use (e.g., MPESAB2C). |
timestamp | string | Yes | ISO 8601 UTC timestamp (must end with Z). |
| Field | Type | Required | Notes |
|---|---|---|---|
msisdn | string | Yes | MSISDN format (e.g., 2547XXXXXXXX). |
channel | string | Yes | Initiation channel (e.g., USSD, API). |
country | string | Yes | ISO 3166-1 country code (e.g., KE). |
name | string | Yes | Originator name. |
purpose | string | Yes | Reason for the payout. |
| Field | Type | Required | Notes |
|---|---|---|---|
reference | string | Yes | Client-generated reference for recipient-side tracking. |
account | string | Yes | Recipient account identifier (phone, wallet, bank account). |
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Base64 RSA signature over: transaction.reference + transaction.amount + originator.country + transaction.service_code