CentraPoint

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#

Pesapal summary
Typepesapal
CountriesKenya, Uganda, Tanzania, Rwanda, Malawi, Zambia
CurrenciesKES, UGX, TZS, RWF, MWK, ZMW, USD
CapabilitiesHosted checkoutOn-demand status verification
Gateway docsdeveloper.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.

Pesapal configuration fields
FieldTypeNotes
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#

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#

  1. Test with sandbox credentials and Sandbox / test mode on, and confirm the notification appears as processed in the Webhook log.
  2. Replace the credentials with live ones and switch off Sandbox / test mode.
  3. Update any URL or secret configured in the gateway's portal for the live environment.
  4. Make a small live payment and confirm it with the Transactions API.