Paystack is a leading payment solution provider that enables businesses to seamlessly accept credit and debit card payments online. With robust security features and a user-friendly interface, Paystack helps merchants boost their sales while providing customers with a smooth checkout experience. Paystack currently serves businesses in South Africa, Nigeria, Ghana, and Ivory Coast.
Webhooks are essential for real-time communication between Paystack and CheckoutJoy. They ensure your customers get immediate access to your products after payment and allow CheckoutJoy to properly manage subscriptions and refunds.
To set up webhooks:
Log into your Paystack dashboard
Navigate to Settings > API keys & Webhooks
Locate the Webhook URL section
Paste the URL below into the Live Webhook URL field
Boost your revenue with recurring payments! CheckoutJoy seamlessly integrates with Paystack to support both subscription and payment plan options for your offers.
Paystack supports the local currency of each country it operates in (ZAR in South Africa, NGN in Nigeria, GHS in Ghana, XOF in Ivory Coast). The buyer is always charged in the merchant's local currency — Paystack will not settle in USD/EUR even if the product is priced that way.
If you price a product in USD on a Paystack-only checkout, CheckoutJoy will display the USD figure for context but Paystack will convert and charge the buyer's card in the local currency (for example, a $50 product checked out via a South African Paystack account is charged as the ZAR equivalent on the buyer's card). The buyer's bank may apply its own conversion fee on the card statement.
For multi-currency support across regions, combine Paystack with another processor (such as PayPal for international USD/EUR buyers) and let CheckoutJoy route the buyer to the right processor based on geo.
South African card-issuing banks periodically tighten 3DS and risk rules for processors that route through international rails. Decline rates can spike for SA buyers as a result. The most reliable workaround is to also offer PayFast on the same checkout — PayFast is a local SA acquirer and tends to clear SA cards more reliably than Paystack or Stripe in those periods. CheckoutJoy can show both on the same checkout.
Paystack settles in the local currency of its supported countries. If you're a South African Paystack merchant and you want to sell to a buyer in the US, the buyer's card will be charged in ZAR and converted by their bank. For a smoother international experience, run PayPal or Stripe alongside Paystack and route international buyers there.
Paystack rejects a transaction when the buyer's email at checkout matches the email on your own Paystack merchant account. If you're testing your own checkout, use a different email address than the one tied to your Paystack account.
The Paystack → CheckoutJoy webhook isn't configured (or isn't firing). Without the webhook, CheckoutJoy never learns the payment completed, so the post-purchase automation never runs. Walk through the self-service webhook diagnostic in Troubleshooting to fix the webhook, then any already-paid abandoned orders can be reconciled.
This is almost always a Paystack-side Plan configuration issue, not a CheckoutJoy bug. Open the Paystack dashboard → Subscriptions / Plans and find the Plan that should be running the recurring charges:
If number of payments shows 0 (instead of your intended count, e.g. 5 or 10), the Plan wasn't created with a fixed instalment count. Fix the Plan in Paystack.
After the first charge, recurring instalments are scheduled and run by Paystack itself, not by CheckoutJoy. CheckoutJoy's job is to create the Plan and start the first payment; the rest is Paystack's responsibility.
If a payment plan was set up correctly but recurring still isn't firing, capture the Plan ID from Paystack and contact Paystack support.
If the order completed in CheckoutJoy (not stuck in Pending) but the Kajabi grant failed, check the order's activation log. A frequent cause is Kajabi's name validation rejecting the buyer's name. Kajabi only accepts names containing letters, spaces, apostrophes, hyphens, periods, or numbers — anything else (accents handled inconsistently, emoji, certain punctuation) returns a Validation failed: Name must contain only letters... error.
To recover the order: edit the buyer's name on the order to a Kajabi-acceptable form and replay the activation from the order page. To prevent it going forward, sanitise/restrict the name field on your checkout.