Paystack & Flutterwave Integration Services in Nigeria
We fix, finish and take live payment integrations: webhooks that fire, wallets that credit once, and a clean switch from test to live.
For Nigerian websites and apps on Paystack, Flutterwave or Monnify. Health checks and bug fixes from ₦200,000, typically done in one to two weeks.
What Does a Payment Integration Service Fix?
A payment integration service makes sure every successful Paystack, Flutterwave or Monnify payment reaches your database exactly once. Musskart traces and fixes webhooks, server-side verification, double credits, sandbox-to-live switches, split payments, virtual accounts and subscriptions. A health check or bug fix typically costs ₦200,000–₦500,000 and takes one to two weeks.
A common request reads like this one, posted publicly by a site owner on Freelancer in 2026: payments go through and Paystack marks them as “successful”, yet the buyer’s balance never updates on the platform and no error is returned. The gateway did its job. The fault is on your side of the line, usually in a few dozen lines of webhook and verification code.
It costs more than it looks. A Nigerian VTU founder told Zikoko in September 2025 about daily complaints of “wallets not reflecting, delayed subscriptions, and hanging payments”, adding: “Once customers experience friction two or three times, they move on.”
You probably don’t need a rebuild or a new gateway. When payments stop reflecting, owners often blame the app or the gateway and go shopping for a new developer and a second provider. Usually the gateway is working and the fault is one of the twelve issues in the checklist below. Fix that first: switching gateways just moves the bug to a new dashboard.
What Payment Integration Fixes Cost in Nigeria (2026)
Typical Musskart prices, in naira. You get a fixed quote after a free scoping call, once we have seen the code and the gateway dashboard.
| Scope | What is included | Typical price | Typical timeline |
|---|---|---|---|
| Integration health check / bug fix | Trace a payment end to end, fix webhook or callback bugs, add server-side verification and duplicate protection, written findings | ₦200,000–₦500,000 | 1–2 weeks |
| Full integration with webhooks, reconciliation and go-live | New or rebuilt Paystack, Flutterwave or Monnify integration, signed webhooks, verification, refunds, a daily reconciliation report, help with gateway activation and a live test | ₦500,000–₦1,200,000 | 2–4 weeks |
| Multi-gateway / split payments / subscriptions + reconciliation dashboard | Two or more gateways with fallback, subaccounts and split settlement, subscription billing, virtual accounts and a reconciliation dashboard for your finance team | ₦1,200,000–₦3,000,000 | 4–8 weeks |
| Ongoing monitoring | Webhook failure alerts, gateway API changes, monthly checks | See our care plans | Monthly |
Gateway transaction fees and settlement charges are billed by Paystack, Flutterwave or Monnify directly to your account and are not part of our price. If the whole app has been abandoned, not just its payments, see our code takeover pricing.
Paystack Webhook Not Working? Why Payments Fail: A 12-Point Checklist
Work through this list before you pay anyone, including us. Every gateway behaviour below comes from the providers’ own developer documentation, checked in October 2026.
- Trusting the redirect. The page a customer lands on after paying is not proof of payment. Paystack says to send the reference to your server and verify it there; on redirects, the reference arrives as a query parameter on your callback URL.
- Reading the wrong status. In Paystack’s verify response, the top-level
statusonly tells you the API call worked. The transaction’s own status is indata.status. Code that checks the first one can mark abandoned and failed payments as paid. - Not checking amount, currency and reference. Flutterwave tells merchants to check the reference, the status, the currency and that the amount paid is at least what was expected before giving value.
- Wrong amount units. Paystack takes amounts in the currency’s subunit, which is kobo for naira, so ₦100 is sent as 10000. Its minimum naira transaction is ₦50. A missing ×100 turns a ₦5,000 order into a ₦50 charge.
- A broken signature check. Paystack signs events in an
x-paystack-signatureheader (an HMAC SHA512 of the payload, keyed with your secret key). Flutterwave’s v3 API sends your secret hash inverif-hash; v4 sendsflutterwave-signature, an HMAC-SHA256 of the raw body. Monnify sendsmonnify-signature, an HMAC-SHA512 keyed with your client secret. Hashing a re-encoded body, or checking the wrong version’s header, rejects genuine events. - A check that only works in one environment. Monnify’s docs say
monnify-signatureis only included on production notifications, not sandbox ones. Code written against the sandbox often skips the check entirely, or rejects everything on launch day. - Slow or non-200 responses. Paystack treats anything but a 200 OK as failed and, in live mode, retries every 3 minutes for the first 4 tries, then hourly for the next 72 hours (test mode: hourly for 10 hours, 30-second timeout). Flutterwave times out after 60 seconds, counts 3xx redirects as failures and retries 3 times, 30 minutes apart, only if retries are switched on. Acknowledge first; do the slow work in a queue.
- Framework security blocking the POST. Laravel applies CSRF protection to routes in
routes/web.phpand its docs say payment webhook routes must be excluded; Flutterwave’s docs say the same for Rails and Django. Without the exclusion, the gateway logs a failed delivery. - Redirects and unreachable URLs. Paystack warns that localhost URLs can’t receive events and that
.htaccesssetups need the trailing slash on the URL. HTTPS redirects, firewalls and bot protection cause the same silence; Paystack publishes three webhook IP addresses and Monnify one, for allow-listing. - Test settings left in production. Test and live environments have separate API keys, and Paystack’s docs refer to a webhook URL configured for each environment. A live site still holding test keys, or a webhook URL saved only in test mode, quietly breaks after launch.
- Double credits. Gateways can deliver an event more than once: Flutterwave says so, Monnify resends after a timeout or a non-200 reply, and Paystack tells sellers of airtime, wallet top-ups and digital credit to confirm they haven’t already delivered value. If both your callback page and your webhook credit the wallet, customers get paid twice.
- Relying on webhooks alone. Paystack currently sends webhook events only for successful transactions, and Flutterwave recommends a background job that polls pending transactions, for example hourly, in case your endpoint was down. Without one, a payment made during an outage can sit at “pending” for good.
On WooCommerce, check the basics first. Paystack’s official plugin page recommends saving the webhook URL shown on the plugin’s settings page in your Paystack dashboard, because poor network connections can stop order statuses updating after a payment.
What We Fix, Finish and Build
Webhooks and callbacks
Signature checks on the raw body, a fast 200 with queued processing, an event log and replay. Paystack’s Webhook Events API can resend past events, which helps recover payments missed during an outage.
Verification and double-credit protection
Every credit confirmed with the gateway’s verify endpoint, amounts compared in the right units, and a unique key per transaction reference, so a duplicate event, a refreshed callback page or a retry can never credit twice.
Sandbox to live, and gateway activation
Live keys in environment variables, live webhook URLs, one real low-value test payment and refund, and help preparing your business activation. See the go-live section below.
Split payments and subaccounts
On Paystack a split is a percentage by default, can be a flat fee to the main account instead, and charges fall on the main account unless the subaccount is set as bearer. Those settings decide who receives what.
Virtual accounts and transfers
Paystack’s Dedicated Virtual Accounts are only for registered businesses in Nigeria and Ghana that have completed go-live, and betting, financial services and general services businesses must validate customer identity first. Monnify offers reserved accounts.
Subscriptions and recurring charges
Paystack subscriptions support card and direct debit (Nigeria) only, and monthly plans started on the 29th to 31st bill on the 28th of later months. We handle renewals, failed charges, cancellations and the events that drive them.
Refunds, disputes and reconciliation
Refunds that reverse both the order and the wallet, dispute alerts, and a daily match of gateway transactions and settlements against your own ledger, so finance can account for every naira.
Mobile apps and frameworks
Flutter, React Native, native Android and iOS, Laravel, PHP, Node.js and WooCommerce. Paystack publishes Android, iOS and Flutter SDKs; Flutterwave publishes iOS and React Native SDKs and an official WooCommerce plugin. Secret keys stay on the server, never inside the app.
Sandbox to Live Without Rejected Submissions
One 2026 Freelancer brief summed up the worry: getting activation and KYC right, with “no rejected submissions, no surprise holds”. Going live is part code, part paperwork, and the paperwork is the gateway’s decision.
- Paystack starts every account in test mode and switches it to live when your compliance details are submitted and approved. Requirements depend on your business type and country. Starter businesses give a personal bank account; registered businesses must give a corporate account in the same name as the registration document. If something is wrong, Paystack says its Business Reviews team will email you to fix it within 24 hours.
- Flutterwave enables live transactions after you complete KYC verification, which includes submitting business documents. After approval you can transfer settings from the test environment to your live account.
- Monnify only signs webhooks in production, so the signature check has to be retested after the switch.
We handle the technical side (live keys, webhook URLs, HTTPS, one real low-value payment and its refund) and walk you through the dashboard forms so names, bank accounts and documents match. Approval and timelines belong to the gateway. Nobody can promise them, so be wary of anyone who does.
Based abroad? Because Paystack’s requirements follow your business type and the country you register in, a company registered outside Nigeria may not qualify for a Nigerian account. Talk to your lawyer about structure, and see our payment gateway guide for the options.
How a Payment Fix Works, Step by Step
1. Free scoping call
Tell us the gateway, the stack and the symptom. Send a screenshot of one payment that succeeded on the gateway but not on your side.
2. Safe access
Read access to the code, a limited team login on the gateway dashboard, and server logs. We never need your card or bank login.
3. Trace one payment end to end
Initialisation, checkout, callback, the gateway’s webhook delivery log, the verification call and the database write. The break usually shows up in this trace.
4. Fix and harden
Correct the fault, then add signature checks, verification, idempotency, logging and a pending-payment sweeper, so the next fault is caught early.
5. Test in sandbox, then live
Gateway test cards and test accounts first, then one real low-value payment and refund in production.
6. Handover
Written notes on what changed, a short runbook for your support and finance staff, and an optional care plan for monitoring.
Who This Is For, and What We Have Shipped
- VTU, bills and wallet apps where a missed or doubled credit is a direct loss. See VTU app development.
- Online stores on WooCommerce or custom carts with orders stuck at “pending”. See online store setup.
- Schools collecting fees: Paystack’s own split examples include separating tuition, accommodation and excursion fees.
- Marketplaces, lenders, subscription businesses and event organisers (see Paystack payments and QR tickets).
For ETK Mall, a live Nigerian multi-vendor marketplace, we built Paystack checkout with webhook-based order confirmation and a split-payout layer that separates the platform fee from each vendor’s share. On Elite Creed’s lending platform, Paystack and Flutterwave handle repayment collection with scheduled debits, receipts and reconciliation of every transaction against the loan ledger.
Musskart Technology Limited is a Nigerian software company with its head office in Asaba and an office in Abuja, working with clients across Nigeria and abroad.
Payment Integration FAQs
data.status, not the top-level status, from the verify response. The checklist above covers the twelve common causes.
x-paystack-signature header before you process the event. Paystack also publishes three IP addresses its webhooks come from, which you can allow-list.
verif-hash, which carries the secret hash you set on your dashboard. On v4 it is flutterwave-signature, an HMAC-SHA256 of the raw body made with your secret hash. Use the one that matches the API version your code calls.
Related Guides
- Payment gateway development: build your own or use Paystack
- NIN and BVN verification (KYC) integration
- App maintenance, care plans and code takeover
- Case study: ETK Mall marketplace with Paystack split payouts
- VTU app development in Nigeria
- Online store setup with Paystack or Flutterwave
- How much app development costs in Nigeria
- Hire app developers in Nigeria
Sources
Gateway rules change. We checked each against the provider's own documentation in October 2026. General information, not legal or financial advice.
- Paystack Developer Documentation — Webhooks (accessed October 2026)
- Paystack Developer Documentation — Verify Payments
- Paystack API Reference — supported currencies and subunits
- Paystack Developer Documentation — Dedicated Virtual Accounts
- Paystack Developer Documentation — Split Payments
- Paystack Developer Documentation — Subscriptions
- Paystack Support — How to activate your business
- Paystack Support — Test Mode and Live Mode
- Flutterwave Developers — Webhooks (v3)
- Flutterwave Developers — Webhooks (v4)
- Flutterwave Developers — Transaction verification
- Flutterwave Developers — Quickstart (KYC and going live)
- Monnify Developers — Webhooks
- Flutterwave Developers — SDKs and plugins directory
- Laravel 12.x documentation — CSRF Protection: excluding URIs
- WordPress.org — Paystack WooCommerce Payment Gateway (official plugin)
- WordPress.org — Flutterwave WooCommerce (official plugin)
- Freelancer — Fix Paystack Funding Callback Bug (2026 brief)
- Freelancer — Flutterwave Sandbox-to-Live Migration (2026 brief)
- Zikoko — VTU founder on trusting the wrong developers (11 September 2025)
Payments Not Reflecting? Let’s Trace One Together
Send us the gateway, your stack and a screenshot of one stuck payment. We will tell you what is likely wrong before you pay anything, then quote a fixed price.