USSD Charge
Trigger an SIM Toolkit Push prompt on a customer phone to collect mobile money payment
USSD Charge
This endpoint sends a push notification to the customer’s mobile phone, prompting them to enter their mobile money PIN to approve the payment. Supports M-PESA, Airtel Money, T-KASH, and SasaPay.
Channel Codes
Retrieve the list of supported mobile money channels dynamically:
Use the code field from the response as the bankAccount value in your request.
Request
transactionRef must be unique per transaction. Use only alphanumeric characters, hyphens (-), underscores (_), or spaces.
Request Parameters
Unique reference for this transaction. Pattern: ^[a-zA-Z0-9-_\s]*$
Email address of the customer initiating the payment.
Amount to charge in KES. Must be greater than 0.
Currency code. Must be "KES".
Mobile money channel code. Retrieve available codes from GET /api/v1/pay/mobile-money-banks.
Customer phone number in 254XXXXXXXXX format.
Full name of the customer (optional).
Sample Requests by Provider
Response
Response Fields
true if the STK Push was successfully dispatched to the customer’s phone.
Descriptive message from the provider (e.g., "MPESA STK sent. Enter your PIN").
Contains the transaction details returned by the provider.
Error Responses
| HTTP | Scenario | Message |
|---|---|---|
400 | Missing required field | "One or more validation errors occurred" |
400 | Invalid amount (0 or negative) | "Amount must be greater than 0" |
400 | Invalid transactionRef characters | "Reference contains invalid characters" |
408 | Provider timeout | "Request timed out" |
500 | Integration service unreachable | "An error occurred processing request" |
An STK Push response only confirms the prompt was sent — it does not confirm payment. Use your webhook or the verify-payment endpoint to confirm the final transaction status.