Quick flow
Authenticate -> Sign -> Send payout -> Receive acceptance -> Receive webhook -> Reconcile (optional status check).Prerequisites
- Product-scoped Bearer token from Authentication API.
- RSA 2048 key pair registered with Waftpay. See Signature generation.
- Correct base URL for your environment. See Environments.
Endpoint
POST/payments-api-service/v1/payouts
Required headers
transaction.reference for retries of the same logical payout.
Request body (example)
amountis in major units (e.g., 1000 = 1000 KES).timestampmust be ISO 8601 UTC (ends withZ).transaction.service_codeis assigned by Waftpay; confirm entitlement before go-live.
Acceptance response (immediate)
Webhook (final outcome)
We POST to yourcallback_url when the payout completes. See Webhook payload.
Status checks (optional)
If a webhook is delayed or missing, query status using Check payout status or Status checks.Common issues
- Signature mismatch: ensure the string-to-sign matches the payload exactly. See Signature generation.
- Wrong token: use a payout-scoped Bearer token.
- Duplicate references: reuse
transaction.referenceonly for safe retries.
