Overview
Accept mobile money payments and disburse funds across M-PESA, Airtel Money, T-KASH, and SasaPay in Kenya
The KES Payment API lets you collect payments from customers via STK Push (USSD Charge) and send funds out to mobile money wallets (Single Transfer). Both endpoints operate in Kenyan Shillings (KES) and route through the SasaPay aggregation layer.
Supported Channels
You can retrieve the list of supported mobile money channels and their codes dynamically from the API:
The response returns an array of channel objects. Use the code field as the channelCode when initiating a USSD Charge or Single Transfer.
How it works
USSD Charge
When you initiate a USSD Charge, Cepta sends an STK Push notification directly to your customer’s phone. The customer enters their mobile money PIN to approve the payment. You receive the outcome via webhook or by polling the verify-payment endpoint.
- Call
POST /api/v1/pay/ussd-chargewith the customer’s phone number, amount, and channel code. - The customer receives a push prompt on their phone and enters their PIN.
- Verify the final payment status using your webhook or the verify-payment endpoint.
Single Transfer (B2C Payout)
Single Transfer moves funds from your Cepta merchant account directly to a recipient’s mobile money wallet. Ensure your merchant account has sufficient balance before initiating a payout.
- Fund your Cepta merchant account via STK Push collection.
- Call
POST /api/v1/pay/single-transferwith the recipient details and amount.
Ensure your Cepta merchant account has sufficient balance before initiating a Single Transfer. Insufficient balance will return a 400 error with the message "Insufficient balance to send KES X.XX".