To add Paystack to WordPress: install the "Paystack WooCommerce Payment Gateway" plugin, enter your API keys from the Paystack dashboard, enable test mode, run a test transaction, then switch to live keys. For Shopify: search for "Paystack" or "Flutterwave" in the Shopify App Store, install the app, connect your account, and activate it as a payment provider. The process takes 10 to 30 minutes for either platform. Flutterwave follows the same pattern with its own plugins and apps. Both support cards, bank transfers, and USSD for Nigerian customers.
WooCommerce is the most popular e-commerce plugin for WordPress, and Paystack has an official WooCommerce payment gateway plugin. Here is the step-by-step process.
Prerequisites: A WordPress site with WooCommerce installed and activated. A Paystack account with your API keys (found in Settings, then API Keys & Webhooks on your Paystack dashboard). Your WooCommerce store currency set to NGN (WooCommerce, then Settings, then General, then Currency).
Step 1: Install the plugin. In your WordPress admin, go to Plugins, then Add New. Search for "Paystack WooCommerce Payment Gateway" by Tunbosun Ayinla. Install and activate the plugin.
Step 2: Configure the plugin. Go to WooCommerce, then Settings, then Payments. You will see "Paystack" listed as a payment method. Click "Set up" or "Manage." Enter your test API keys first: paste your test public key (pk_test_...) and test secret key (sk_test_...) into the respective fields. Check "Enable Test Mode." Enable the payment channels you want: card, bank transfer, USSD. Set a title like "Pay with Card, Bank Transfer, or USSD" so customers know their options.
Step 3: Set the webhook URL. In your Paystack dashboard, go to Settings, then API Keys & Webhooks. Set the webhook URL to: https://yoursite.com/?wc-api=tbz_wc_paystack_gateway (replace yoursite.com with your actual domain). This is how Paystack notifies your store when a payment succeeds or fails.
Step 4: Test. Place a test order on your store. The Paystack checkout should appear with options for card, bank transfer, or USSD. In test mode, use Paystack's test card numbers (available in their docs) to simulate successful and failed payments. Verify that your WooCommerce order status updates correctly.
Step 5: Go live. Once testing is complete, replace the test keys with your live API keys (pk_live_... and sk_live_...) and uncheck "Enable Test Mode." Place one real order with a small amount to confirm everything works with live transactions.
The process for Flutterwave follows the same pattern as Paystack, with a different plugin.
Step 1: Install the plugin. Search for "Flutterwave WooCommerce" or "Rave WooCommerce Payment Gateway" in the WordPress plugin directory. Flutterwave has rebranded their gateway name over the years, so look for the one officially maintained by the Flutterwave team. Install and activate it.
Step 2: Configure. Go to WooCommerce, then Settings, then Payments. Find the Flutterwave option and click "Manage." Enter your test public key (FLWPUBK_TEST-...) and test secret key (FLWSECK_TEST-...). Enable test mode. Select the payment methods you want to offer: cards, bank transfer, USSD, and others.
Step 3: Set the webhook URL. In your Flutterwave dashboard, navigate to Settings, then Webhooks. Enter the webhook URL that the plugin documentation specifies. This varies by plugin version, so check the plugin's readme or settings page for the exact URL format.
Step 4: Test and go live. Run test transactions using Flutterwave's test card numbers and sandbox environment. Once confirmed, switch to live keys and disable test mode.
Choosing between Paystack and Flutterwave for WooCommerce: Both plugins work well. Paystack's WooCommerce plugin is generally considered slightly more polished and better maintained. Flutterwave's plugin has broader payment method support, including mobile money options that matter if you sell across West Africa. For a Nigeria-only store, either works. You can even install both and let the customer choose at checkout, though this adds some complexity to your payment management.
Get weekly developer tips
Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.
No spam. Unsubscribe anytime.
Shopify handles payment gateway integration differently from WooCommerce. Instead of plugins, you install apps from the Shopify App Store.
Paystack on Shopify:
Flutterwave on Shopify:
Important Shopify note: Shopify charges an additional transaction fee (0.5% to 2% depending on your plan) on top of the payment gateway's own fees when you use a third-party provider like Paystack or Flutterwave. This is on top of the 1.5% + NGN 100 that Paystack charges or the 1.4% that Flutterwave charges. Factor this into your product pricing.
Testing on Shopify: Shopify has its own test payment mode (Bogus Gateway) for simulating orders, but to test Paystack or Flutterwave specifically, use the payment gateway's test mode. Set up with test keys first, place a test order, verify it processes correctly, then switch to live keys.
These are the issues that trip up most Nigerian store owners setting up Paystack or Flutterwave for the first time.
1. Wrong currency setting. Your store currency must be set to NGN (Nigerian Naira). If your WooCommerce store is set to USD or any other currency, the payment gateway will reject transactions or convert amounts incorrectly. In WooCommerce: Settings, then General, then Currency. In Shopify: Settings, then General, then Store currency.
2. Test keys in production (or live keys in test). Test keys start with pk_test_ or sk_test_ (Paystack) and FLWPUBK_TEST or FLWSECK_TEST (Flutterwave). Live keys start with pk_live_ or sk_live_ (Paystack) and FLWPUBK or FLWSECK (Flutterwave). If you see "This transaction was done in test mode" when trying to take real payments, you still have test keys in your settings.
3. Webhook URL not set or incorrect. Without a webhook URL, your store will not receive payment confirmations for bank transfers and USSD payments. Card payments may appear to work because of the redirect callback, but bank transfers will stay "pending" forever. Check the webhook URL in both the plugin settings and your payment gateway dashboard.
4. SSL certificate missing. Both Paystack and Flutterwave require your site to use HTTPS. If your site is still on HTTP, the payment gateway will refuse to process. Most hosting providers offer free SSL certificates through Let's Encrypt. Activate it before setting up payments.
5. Only enabling card payments. The default configuration on some plugin versions only enables cards. Go into the plugin settings and explicitly enable bank_transfer and ussd. As covered in our guide on bank transfers and USSD payments, these are how most Nigerians prefer to pay online.
6. Not testing before going live. Run at least 3 to 5 test transactions covering cards, bank transfers, and (if possible) USSD before switching to live mode. Test a successful payment, a failed payment, and a cancelled payment. Verify that your order status updates correctly in each case.
Plugins and apps handle the basics well. They are the right choice for most small to medium Nigerian online stores. But there are legitimate reasons to move to a custom integration:
Moving from plugins to custom integration means learning server-side programming, API integration, and webhook handling. If you are at that point, McTaba Academy's Full-Stack Software & AI Engineering course (NGN 140,000 to 220,000; exchange rates fluctuate, check current price at checkout) covers building payment integrations from scratch using Paystack and Flutterwave APIs.
For a gentler starting point, Tech Foundations (NGN 3,500 to 6,000; exchange rates fluctuate, check current price at checkout) builds the foundational knowledge you need before writing backend code. Or create a free McTaba Academy account and see what suits your current level.
Create a free McTaba Academy account. Access starter lessons, join the community, and explore at your own pace.
Create Free Account