How to send money to M-Pesa programmatically
Send to any M-Pesa wallet in Kenya with one POST to Eversend's /v1/payouts: rail mpesa, an amount in KES, and the recipient's phone number. Median delivery over our last 90 days of production transfers is 1.6 minutes. Sandbox keys are self-serve, in minutes.
The whole integration
One call. The recipient is a phone number, the rail is a string, and the wallet name comes back before you commit.
Listen for the webhooks
Every payout emits created, processing and delivered events. Point a webhook at your endpoint and treat delivered as the moment to update your user, not the API response, because the rail leg completes after the call returns.
Then go live
Swap sk_test for sk_live after compliance review. The call does not change, and adding MTN MoMo or Nigerian bank transfer later is the same call with a different rail string.
The full M-Pesa rail, specified.
Measured medians, fees from the source of truth, and the name-check behavior, on one page.
The M-Pesa payout API