Gateways
Pesapal
East African cards, M-Pesa, Airtel Money, MTN MoMo and bank payments via Pesapal hosted checkout.
On this page
East African cards, M-Pesa, Airtel Money, MTN MoMo and bank payments via Pesapal hosted checkout.
At a glance#
| Type | pesapal |
| Countries | Kenya, Uganda, Tanzania, Rwanda, Malawi, Zambia |
| Currencies | KES, UGX, TZS, RWF, MWK, ZMW, USD |
| Capabilities | Hosted checkoutOn-demand status verification |
| Gateway docs | developer.pesapal.com/how-to-integrate/e-commerce/api-30-json/api-reference |
Checkout experience#
Redirect to Pesapal hosted checkout (redirect_url from SubmitOrderRequest).
Configuration fields#
Enter these in the dashboard under Settings → Payment providers → Pesapal. Secret fields are encrypted at rest and masked after saving; leave a secret blank when editing to keep the stored value.
| Field | Type | Notes |
|---|---|---|
| Consumer keyrequired consumerKey | Text | From your Pesapal merchant dashboard. Use demo/sandbox keys while Sandbox is on. |
| Consumer secretrequired consumerSecret | Secret | – |
| IPN ID (optional) ipnId | Text | Leave blank to auto-register this provider's webhook URL as a GET IPN. Must belong to the same environment as the keys. |
Every provider also has Enabled, Sandbox / test mode and Default checkout method switches.
Notification URL#
https://app.centrapoint.co.za/api/webhooks/pesapal?provider={providerId}Copy the exact URL, with your provider ID filled in, from Settings → Payment providers.
- Nothing to paste: when the IPN ID field is blank, CentraPoint registers this provider's notification URL with Pesapal as a GET IPN automatically.
- If you set an IPN ID yourself, it must be registered for this provider's notification URL in the same environment (sandbox/live) as the keys.
How notifications are verified#
- IPNs only carry OrderTrackingId / OrderMerchantReference, never a status. CentraPoint always calls GetTransactionStatus and uses that result.
- The acknowledgement body Pesapal expects (JSON with status 200) is returned automatically.
- The amount and currency must match the transaction before it can be marked complete.
Going live#
- Test with sandbox credentials and Sandbox / test mode on, and confirm the notification appears as processed in the Webhook log.
- Replace the credentials with live ones and switch off Sandbox / test mode.
- Update any URL or secret configured in the gateway's portal for the live environment.
- Make a small live payment and confirm it with the Transactions API.