Gateways
Paystack
Cards, bank transfer, USSD, mobile money and Apple Pay across Nigeria, Ghana, South Africa, Kenya and Cote d'Ivoire.
On this page
Cards, bank transfer, USSD, mobile money and Apple Pay across Nigeria, Ghana, South Africa, Kenya and Cote d'Ivoire.
At a glance#
| Type | paystack |
| Countries | Nigeria, Ghana, South Africa, Kenya, Côte d'Ivoire |
| Currencies | NGN, GHS, ZAR, KES, USD, XOF |
| Capabilities | Hosted checkoutOn-demand status verification |
| Gateway docs | paystack.com/docs/api |
Checkout experience#
Redirect to Paystack's hosted checkout (authorization_url from /transaction/initialize). A customer email address is required.
Configuration fields#
Enter these in the dashboard under Settings → Payment providers → Paystack. Secret fields are encrypted at rest and masked after saving; leave a secret blank when editing to keep the stored value.
| Field | Type | Notes |
|---|---|---|
| Live secret key liveSecretKey | Secret | Settings > API Keys & Webhooks. Used when Sandbox is off. |
| Test secret key testSecretKey | Secret | Used when Sandbox is on. Set this provider's webhook URL in Paystack > Settings > API Keys & Webhooks; webhooks are signed with the secret key. |
Every provider also has Enabled, Sandbox / test mode and Default checkout method switches.
Notification URL#
https://app.centrapoint.co.za/api/webhooks/paystack?provider={providerId}Copy the exact URL, with your provider ID filled in, from Settings → Payment providers.
- In Paystack → Settings → API Keys & Webhooks, set the webhook URL to this provider's notification URL.
- Paystack allows one webhook URL per mode (test/live). Use the URL of the provider whose Sandbox flag matches.
How notifications are verified#
- x-paystack-signature must equal HMAC-SHA512 of the raw body keyed with your secret key (test key in Sandbox, live key otherwise).
- Only charge.* events are processed; others are acknowledged with 200 so Paystack stops retrying.
- Every charge event is re-verified with GET /transaction/verify/:reference. Amount and currency must match.
- 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.