Payouts
Payouts allow you to disburse funds from your Payonify account to recipients via mobile money. The Payouts API supports multiple destination types, with EcoCash mobile money currently available.
Approval Required
The Payouts API requires prior approval from the payment processor. Your merchant account must be approved for B2C (Business-to-Customer) services before you can use payouts. Contact sales for more information.
Payout Methods
| Destination | Provider | Status |
|---|---|---|
| EcoCash B2C | Mobile Money (Econet) | Available |
| OneMoney B2C | Mobile Money (NetOne) | Coming Soon |
How Payouts Work
Payout Flow
- Validate the recipient's mobile money account (recommended)
- Create the payout with amount, currency, and destination
- Receive a webhook notification when the payout completes or fails
Step-by-Step Guide
-
Validate the Recipient
Before sending a payout, validate the recipient's account to ensure it exists and can receive funds:
CodeResponse:
ResponseThe
account_statuswill beactiveorinactive. -
Create the Payout
Once validated, create the payout:
CodeResponse (201 Created):
ResponseThe payout is created with
status: "pending"and will be processed asynchronously. -
Handle the Webhook
When the payout completes, Payonify sends a webhook to your configured endpoint:
payout.succeeded webhookSee the Webhooks guide for details on verifying webhook signatures.
Validate First
Always validate recipients before creating payouts in production. This helps catch invalid numbers early and provides a better experience for your users.
Checking Payout Status
You can check the status of a payout at any time by retrieving it:
Code
Listing Payouts
List payouts with optional filters:
Code
See the Filtering guide for all available filter options.
Reversing a payout
If a payout was sent in error, you can reverse a settled one by its ID with the Reversals API:
Code
The reversal is processed in the background - you get a processing response straight away, then a reversal.succeeded (or reversal.failed) webhook once it's done. A payout can be reversed once, and always for the full amount.
Webhook Events
| Event | Description |
|---|---|
payout.succeeded | Payout completed successfully, funds delivered to recipient |
payout.failed | Payout failed to process |
For details on setting up and verifying webhooks, see the Webhooks guide.
Test Numbers
Use these test numbers when testing payouts in test mode. Numbers use the 772 prefix.
| Mobile Number | Behavior |
|---|---|
772111111 | Success - payout completed (recipient: John Doe) |
772111112 | Success - payout completed (recipient: Jane Smith) |
772111113 | Failed - insufficient balance |
772111114 | Failed - system timeout |
772111115 | Failed - recipient number does not exist |
772111116 | Failed - unregistered recipient |