CentraPoint

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#

Paystack summary
Typepaystack
CountriesNigeria, Ghana, South Africa, Kenya, Côte d'Ivoire
CurrenciesNGN, GHS, ZAR, KES, USD, XOF
CapabilitiesHosted checkoutOn-demand status verification
Gateway docspaystack.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.

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

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#

  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.