Back to Gateway Index
Flutterwave logo
Payment Gateway

Flutterwave

Pan-African payment infrastructure — 34+ African licenses, card/bank/mobile-money/USSD in one API, plus US/UK/EU collections

Builder Verdict

Pick Flutterwave if you're running cross-border across Africa (especially countries Paystack doesn't cover — Uganda, Tanzania, Rwanda, Zambia, Francophone, Ethiopia) or need mobile-money collections alongside cards; trade-offs are a noisier support experience, higher fees than Paystack in NG/GH/KE, and a track record of high-profile security incidents in 2023–2024.

Complexity

◆◆ Moderate

Region

34+ African countries + US/UK/EU

Fees

2% local (NG), 2.6–4.8% card + 4.8% international

Flutterwave is a Nigeria-founded payments platform (2016, YC W16) headquartered in San Francisco and Lagos, offering collections, payouts, card issuing, and remittance across 34+ African markets plus merchant signup in the US, UK, Canada, and parts of the EU. It achieved unicorn status in 2021 and reached a $3B+ valuation in its 2022 Series D, with customers including Uber, Netflix, Microsoft, and Flywire. Products span online payments (cards, bank transfer, USSD, NQR, mobile money, Apple Pay), subscriptions, Payment Links, no-code Store, Send remittance app, virtual and physical card issuing, and the Moneywave B2B payout platform. In April 2026 Flutterwave was granted a Nigerian Micro Finance Banking license. The v4 API is in public beta while v3 remains the production standard.

Last full audit: April 24, 2026

01

Trust Score Breakdown

Account Stability

60/100

KYC re-verification loops and settlement holds are the dominant complaint theme across Trustpilot, PissedConsumer, and Capterra. Unverified or incomplete KYC (missing CAC for NG, TIN, regulatory IDs, AML/refund policy docs) is the primary driver of frozen funds. Higher complaint volume than Paystack, though comparable in pattern. April 2026 Microfinance Banking license grant from CBN may incrementally improve compliance posture.

Developer Experience

78/100

v3 API is mature with first-party SDKs for Node, PHP, Python, Go, .NET, WordPress, React/React Native, Vue, and Android, plus a Flutterwave CLI for local webhook testing. Documentation improved materially after the 2023–2024 Hackmamba collaboration (61% positive developer sentiment, 10% drop in support tickets). v4 API public beta simplifies card-payload encryption and moves to strict REST. Known rough edges: v3 amount format is in main units (amount: 1000 = NGN 1000) which trips developers coming from Paystack (subunits); dashboard UX complaints; test-mode scenarios require an X-Scenario-Key header to trigger webhook delivery.

Payout Reliability

68/100

Documented local settlement is T+1 business day, international T+5. Trustpilot and PissedConsumer (227+ reviews) surface recurring stuck-funds and long refund-resolution complaints — merchants report 14-day refund windows stretching to 45+ days when things go wrong. Reliable for well-verified accounts in good standing; tail risk on KYC or compliance flags is material. Two security incidents (₦2.9B in Feb 2023, ₦11B in May 2024) did not affect customer funds per the company, but eroded confidence.

Support Quality

50/100

Support is the most consistent complaint across Trustpilot (4.5★ aggregate but heavy tail of one-star reviews on payout/refund) and PissedConsumer (227 reviews). Representative pattern: refund promised in 48h, unresolved after 1–2 months; UKVI/external refund cases stalled; deducted-but-failed transactions requiring 21+ business days to reverse. Faster response on developer/API questions than on risk/payout tickets. No published 24/7 phone line for merchant support.

Track Record

70/100

Founded 2016 by Iyinoluwa Aboyeji and Olugbenga 'GB' Agboola; YC W16. Unicorn status 2021 ($170M Series C); $3B+ valuation 2022 ($250M Series D). Customers include Uber, Netflix, Microsoft, Flywire. 34+ African licenses. Regulatory issues: Kenyan Assets Recovery Agency froze KES 6.2B (~$52M) on money-laundering allegations in July 2022 — case dismissed and funds released February 2023. Two security breaches in 2023 ($4.2M) and 2024 ($24M equivalent) — Flutterwave stated customer funds were not affected in either. April 2026: CBN Micro Finance Bank license approved.

Transparency

72/100

Core pricing is published per country at flutterwave.com/{cc}/pricing — transparent for the 10+ operating markets. However pricing is fragmented across help-center pages (one URL per country/fee type), VAT handling varies by country, the International Processing Fee (flat 2% on non-card APM cross-border) is surfaced only via a Mauritius FAQ, and criteria that trigger settlement holds are not disclosed. Public status page (status.flutterwave.com) and engineering blog are active. Merchant Service Agreement is published.

02

Availability Matrix

Region Countries Currencies Payout Timing
Nigeria (primary market) Nigeria — merchants need a Nigerian bank account; CAC registration is effectively required for most business models. Supports NGN settlement and USD collections routed through local rails. NGN settlement; accepts NGN and USD from customers. Naira cards settle in NGN per CBN dollarisation policy. T+1 business day (local); T+5 (international).
Ghana Ghana — merchant signup with Ghana registration and GHS bank account. MTN, Vodafone, AirtelTigo mobile money fully supported. GHS settlement. T+1 business day.
Kenya Kenya — merchant signup with Kenyan registration and KES bank account. Full M-PESA support for collections; historical 2022 money-laundering freeze was dismissed in February 2023 and operations restored. KES settlement. T+1 business day.
South Africa South Africa — merchant signup with SA registration and ZAR bank account. Supports card, account, 1voucher, and Apple Pay. ZAR settlement (VAT exclusive). T+1 business day.
Uganda Uganda — mobile money (Airtel, MTN) and cards supported. Merchant signup available. UGX settlement. T+1 business day (local).
Tanzania Tanzania — mobile money (Airtel, Tigo, HaloPesa) and cards supported. TZS settlement. T+1 business day (local).
Rwanda Rwanda — mobile money (Airtel, MTN) and cards supported. RWF settlement. T+1 business day (local).
Zambia Zambia — mobile money (Airtel, MTN, Zamtel) primary; international card acceptance available. Bank-account transfers not offered. ZMW settlement (mobile money). T+1 business day.
Other African markets (licensed) Cameroon, Côte d'Ivoire, Senegal, Burkina Faso, Malawi, Sierra Leone, Egypt, Mozambique, Ethiopia and additional countries — Flutterwave holds payment licenses in 34 African markets per its public company filings, though direct merchant-signup products are strongest in the nine markets above. Francophone Africa uses XOF/XAF mobile-money rails. XOF, XAF, EGP, ETB, MWK and local currencies depending on market. Varies by market.
United States United States — merchant signup available in 49 states; Texas excluded. Cards and Apple Pay supported; Send App operates in 29 states for outbound remittance. USD settlement. T+1 ACH for local settlements; T+5 for cross-border.
United Kingdom United Kingdom — cards, account (Pay with Bank / Open Banking), and Apple Pay supported. Merchant signup available. GBP settlement. T+1 local.
European Union (SEPA) Austria, Belgium, Cyprus, Estonia, Finland, France, Germany, Greece, Ireland, Italy, Netherlands, Portugal, Slovakia, Slovenia, Luxembourg, Latvia, Lithuania, Malta, Spain, Hungary, Poland — Pay with Bank supported across SEPA countries. EUR settlement. EUR 35 per SEPA transfer.
Canada Canada — merchant signup available; cards and cross-border disbursement supported via Send App expansion announced 2024. CAD, USD. T+1 local.
NOT available Texas (US) is excluded from merchant signup. Asia-Pacific (India, SE Asia, China, Japan), Latin America (Mexico, Brazil), and most of Eastern Europe/MENA outside Egypt are not currently merchant-signup regions — though customers worldwide can pay a Flutterwave-enabled merchant via international cards. N/A N/A
03

Feature Snapshot

Cards (Visa, Mastercard, Amex, Discover, Verve)

All major schemes globally. Verve is Nigeria-local. Amex/Discover treated as international acceptance at 4.8%.

Bank Transfer (Pay with Bank)

NG bank transfer, SA account, UK/EU open-banking bank transfer across SEPA countries.

USSD (Nigeria)

NG-only channel — customer dials a USSD code from their mobile banking app to complete payment.

NQR (Nigeria QR)

NIBSS-backed QR payment scheme for Nigeria.

Mobile Money

GH (MTN, Vodafone, AirtelTigo), KE (M-PESA), UG (Airtel, MTN), TZ (Airtel, Tigo, HaloPesa), RW (Airtel, MTN), ZM (Airtel, MTN, Zamtel), MW, CI/SN/BF (Orange, MTN, Moov, Wave via XOF), CM (XAF). Not applicable in NG/ZA.

Apple Pay

Supported in NG, ZA, UK, EU, US.

Google Pay

Not listed among Flutterwave payment channels as of April 2026.

eNaira / Opay (NG)

Nigeria-specific wallet and CBDC channels.

Subscriptions / Recurring

Payment Plans + Subscriptions API with dashboard or API creation; supports day/week/month/year intervals and tokenized card re-use.

Payment Links

No-code hosted payment links for one-off or recurring collection.

Store (no-code storefront)

Hosted no-code storefront for selling products without building a site.

Split Payments / Subaccounts

Single-transaction splits to multiple subaccounts — used by marketplaces and revenue-share models.

Transfers / Payouts API

Payouts to bank accounts and mobile-money wallets across all live markets. Bulk transfers supported. Moneywave is the B2B payout brand.

Virtual Cards (issuing)

Issue instant USD/NGN virtual cards via dashboard or API for customers or internal spend. Nigerian issuing has historically been paused/resumed around CBN FX policy changes.

Physical Card Issuing

Issue physical cards for customers or employees at scale (enterprise program).

Webhooks (HMAC-SHA256)

Secret-hash HMAC-SHA256 signed via flutterwave-signature header. Retries 3x at 30-minute intervals on non-200. 60-second endpoint timeout. Separate test & live secret hashes.

Refunds API

Full or partial refunds via API or dashboard; transaction fees and International Processing Fee are not refunded.

Chargebacks / Disputes API

Dispute evidence submission via API or dashboard. NG local response window 24 working hours; international 48 working hours. $38 dispute fee on international chargebacks.

Bills Payment / Airtime / Data

Bill-pay API covering airtime, data, utility bills, cable TV in NG/GH/KE/UG/ZA and more.

Send App (consumer remittance)

Consumer-facing remittance product; active in US (29 states), UK, EU, Canada for sending money to African recipients.

~

v4 API (public beta)

Cleaner REST surface, partial-payload encryption on cards, improved errors. In public beta as of 2025–2026; v3 remains production default and not slated for deprecation.

Flutterwave CLI (webhook testing)

First-party CLI for local webhook testing without tunnelling. `flutterwave webhook:ping` simulates events.

04

Pricing Breakdown

Nigeria — local card/bank/USSD/transfer/NQR 2.0% (1.4% transaction + 0.6% platform); capped at ₦2,000 per transaction; +7.5% VAT
Nigeria — international card (Visa/Mastercard/Amex/Discover) 4.8% per transaction; settled in local currency by default; +7.5% VAT
Nigeria — transfer/payout NGN 10 (≤₦5,000); NGN 25 (₦5,001–₦50,000); NGN 50 (>₦50,000)
Ghana — local card 2.6% per transaction
Ghana — mobile money 2.0% per transaction
Ghana — international card 4.8% per transaction
Ghana — transfer (bank / mobile money) GHS 10 (bank); 1.5% (mobile money)
Kenya — local card 3.2% per transaction
Kenya — M-PESA / mobile money 2.9% per transaction
Kenya — international card 4.8% per transaction
Kenya — bank transfer (payout) KES 100 per transfer
South Africa — local card 2.9% + ZAR 1.00 per transaction (VAT exclusive)
South Africa — international card 4.8% per transaction
South Africa — transfer/payout ZAR 10 per transfer
Uganda — local card 4.8% per transaction
Uganda — wallet / mobile money 3.0% per transaction
Uganda — international card 4.8% per transaction
Uganda — transfer (bank / mobile money) UGX 5,000 (bank); UGX 1,000 (mobile money ≤UGX 125,000); 1.2% (mobile money >UGX 125,000)
Tanzania — local card 4.8% per transaction
Tanzania — wallet / mobile money 2.5% per transaction
Tanzania — transfer (bank / mobile money) TZS 3,000 (bank); TZS 500 (mobile money ≤TZS 40,000); 1.5% (mobile money >TZS 40,000)
Rwanda — local card 4.8% per transaction
Rwanda — wallet / mobile money 3.5% per transaction
Rwanda — transfer (bank / mobile money) RWF 2,000 (bank); RWF 500 (mobile money)
Zambia — mobile money 3.0% per transaction
Zambia — international card 4.8% per transaction
Zambia — mobile-money transfer/payout 2.0% per transfer
Cameroon — mobile money transfer 1.0% per transfer; XAF 1,500 bank transfer
Côte d'Ivoire — mobile money / bank transfer 2.0% (mobile money); XOF 1,500 (bank ≤XOF 49.9M); XOF 4,000 (≥XOF 50M)
Senegal — mobile money / bank transfer 2.0% (mobile money); XOF 1,500 (bank transfer)
Egypt — bank transfer 1% with a minimum fee of EGP 20, capped at EGP 25
Malawi — mobile money transfer 3.0% per transfer
Ethiopia — payout $4 per payout
SEPA countries — bank transfer (payout) EUR 35 per transfer
United Kingdom — bank transfer (payout) GBP 35 per transfer
United States — bank transfer (payout) USD 40 per transfer
International Processing Fee (APM cross-border) 2% flat on non-card alternative payment methods (bank transfer, Apple Pay, Google Pay, mobile money) when the transaction is collected from outside the merchant's signup country. No cap. Not applicable to local transactions.
Chargeback / Dispute fee $38 per international chargeback (or local-currency equivalent). Local-chargeback fee not separately published on the main pricing page.
Account / signup / monthly Free — no setup, monthly, or maintenance fees. Transactions only.
05

Security & Compliance

PCI DSS Level 1 Service Provider (highest) — renewed annually
SOC 1 & SOC 2 Compliant — reported as part of security posture disclosures in 2026 CBN-license filings
ISO 27001 Certified (information security management)
ISO 22301 Certified (business continuity management)
3D Secure 2 3DS2 supported across Flutterwave APIs and Checkout; automatically applied to high-risk card payments. Frictionless + Challenge flows supported.
Webhook signing HMAC-SHA256 via flutterwave-signature header; merchant-defined Secret Hash. Separate live/test hashes.
Fraud detection ML-based internal risk engine; 14% reported false-positive rate vs 95% industry average per company blog; dashboard-configurable fraud rules.
Two-factor authentication Available on merchant dashboard login
Regulatory licensing CBN (Nigeria — Payment Service Provider + April 2026 Micro Finance Bank), BoG (Ghana), CBK (Kenya), SARB/PASA (South Africa), BNR (Rwanda), BOU (Uganda), BoT (Tanzania), Bank of Zambia, CBE (Egypt). Total 34 African payment licenses per company filings.
Historical security incidents February 2023: ₦2.9B (~$4.2M) lost to unauthorised transfers across 28 accounts. May 2024: ₦11B (~$7M–$24M reported variously) POS-related breach. Flutterwave stated customer funds were not impacted in either case; funds recovered partially through court-ordered freezes on receiving banks.
06

Integration Prompt

Copy & use this 6020-char integration prompt

Production-ready prompt for Claude / GPT / Cursor — handles setup, security, webhooks & gotchas

You are building a Flutterwave integration for [Django / Next.js / Laravel / Rails / Node.js / etc.]. Follow these rules exactly.

## Architecture
1. Use **Flutterwave Standard (redirect checkout)** or **Flutterwave Inline (modal)** — never build a custom card form. Flutterwave is PCI DSS Level 1; routing raw PAN through your server moves PCI scope to you.
2. Flow: server calls `POST /v3/payments` with `tx_ref`, `amount`, `currency`, `customer`, `redirect_url` → customer is redirected to `data.link` → completes payment → Flutterwave redirects to your `redirect_url` with `?status=&tx_ref=&transaction_id=` → **your server calls `GET /v3/transactions/{transaction_id}/verify` before fulfilling the order**. Never trust the client-returned status.
3. Also subscribe to webhooks at `POST /flutterwave/webhook` for `charge.completed`, `transfer.completed`, `transfer.failed`, `subscription.cancelled`, `charge.dispute`. Webhooks are the source of truth for async events; `verify` is the source of truth for the synchronous redirect.

## Amounts (critical — different from Paystack/Stripe)
Flutterwave v3 uses **main currency units**, NOT subunits:
- NGN 1,000 → `amount: 1000`
- GHS 10 → `amount: 10`
- ZAR 50 → `amount: 50`
- USD 9.99 → `amount: 9.99`

If you are porting from Paystack (kobo/pesewas/cents), divide by 100. Do all money math in `Decimal` (never floats) and pass as the main unit.

## Webhook security (do not skip)
1. Set a long random Secret Hash in Dashboard → Settings → Webhooks — separate values for Live and Test. Store as `FLUTTERWAVE_SECRET_HASH_LIVE` / `_TEST`.
2. Verify `flutterwave-signature` = `HMAC-SHA256(raw_request_body, SECRET_HASH)` base64-encoded. Use constant-time comparison (`hmac.compare_digest` / `crypto.timingSafeEqual`).
3. Capture the **raw** request body before any JSON parsing:
   - Django: read `request.body` in the view before DRF's parser runs. Mark the webhook endpoint `@csrf_exempt` but keep a `HttpResponseForbidden` fallback.
   - Next.js App Router: `const raw = await req.text(); const body = JSON.parse(raw);` — never `await req.json()` first.
   - Laravel: `$request->getContent()` before middleware parses it.
   - Express: `app.use('/flutterwave/webhook', express.raw({type: 'application/json'}), handler)`.
4. Return `2xx` within 60 seconds — Flutterwave times out past that. Queue heavy work (email, fulfilment) to a background job.
5. **Idempotency:** duplicates happen. Store `event.data.tx_ref` + `event.data.id` in a processed-events table and short-circuit duplicates. Also call `/verify` on the transaction ID before fulfilling to protect against replay.
6. IP-allowlist Flutterwave's webhook IPs (pull current list from the Dashboard — do not hardcode).

## Secrets
- `FLW_SECRET_KEY` server-side only (used for all /v3 API calls; never expose to browser bundles).
- `FLW_PUBLIC_KEY` client-only for Inline/modal init.
- `FLW_ENCRYPTION_KEY` server-side only if using raw Card API (prefer Standard/Inline to avoid this).
- `FLW_SECRET_HASH` server-side only for webhook verification — separate Live/Test values.
- Never commit any of these.

## Currency & country config
Each market gets specific channels. Pass the correct `currency` (`NGN`/`GHS`/`KES`/`ZAR`/`UGX`/`TZS`/`RWF`/`ZMW`/`XOF`/`XAF`/`EGP`/`GBP`/`EUR`/`USD`) and, if constraining methods, `payment_options` (e.g., `"card,banktransfer,ussd,mpesa,mobilemoneyghana,mobilemoneyuganda"`). Apple Pay requires domain verification via the dashboard.

## International Processing Fee
A flat 2% IPF applies to non-card APMs (bank transfer, Apple Pay, Google Pay, mobile money) for every **cross-border** transaction — uncapped. Decide up-front whether to absorb it or pass it to customers (Dashboard → Business Preferences → Fee Settings). Document the choice in your pricing copy.

## Development workflow
- Use the Flutterwave CLI (`npm i -g @flutterwave/cli` then `flutterwave webhook:ping`) to test webhooks locally without tunnelling — or use ngrok + register the URL in the Test-mode dashboard.
- In test mode, **transfers stay pending until you pass `X-Scenario-Key`** in the header (e.g., `success`, `failed`). Without it no webhook fires.
- Test card PAN for NG: `5531 8866 5214 2950` (Mastercard); CVV `564`; PIN `3310`; OTP `12345`.

## Subscriptions
- Create a `Payment Plan` first (`POST /v3/payment-plans`) then initiate a transaction with `payment_plan` set. Handle `subscription.cancelled`, `charge.completed` (renewal), and `charge.failed` webhooks to manage access state.
- Tokenize once (first successful charge returns a `token`) then reuse via `/v3/tokenized-charges` — avoids repeated 3DS on the same card.

## Split payments (marketplace)
Create `Subaccounts` (`POST /v3/subaccounts`) then pass a `subaccounts: [{id, transaction_split_ratio}]` array on the charge. Platform fee lands in the main account automatically.

## Disputes
Subscribe to `charge.dispute`. NG local response window is **24 working hours**, international is **48 working hours**. Missing it auto-accepts and deducts the disputed amount plus a $38 international-chargeback fee. Page on-call when the event fires.

## Error handling & reconciliation
- Treat every non-2xx from Flutterwave as retryable with exponential backoff (3 attempts, 1s/5s/30s) — except for 4xx validation errors.
- Log every `/verify` response — the `status`, `processor_response`, `charged_amount`, `app_fee`, `merchant_fee` fields are essential for reconciliation.
- Store the Flutterwave `id`, `tx_ref`, `flw_ref`, and `charged_amount` on your order. Reconcile daily against settlement reports.

## Dashboard hardening
- Enforce 2FA on every admin account (the 2023 and 2024 breaches were internal-access vectors).
- Rotate Secret/Public/Encryption keys on staff departure.
- IP-allowlist admin dashboard and API key usage where possible.

Deliver a minimal working integration: initialize → redirect/modal → server-side verify → webhook with HMAC-SHA256 → idempotent fulfilment. Do not add features beyond those requested.

Replace [Django / Next.js / etc.] with your stack. Follows PCI DSS best practices and handles common edge cases.

07

Common Pitfalls

10 items
1

v3 amount format is in main units, not subunits

Unlike Paystack and Stripe (which use kobo/pesewas/cents/minor units), Flutterwave v3 accepts `amount` as a decimal in the MAIN currency unit — e.g., `amount: 1000` means NGN 1,000, not 10 NGN. Developers porting code from Paystack regularly ship the wrong value by a factor of 100. Always treat amount as a float of the full currency unit in v3; always write tests that post ₦100 and verify ₦100 arrives.

2

Webhook secret-hash is merchant-defined and per-environment

Flutterwave does not generate the webhook secret — you set your own Secret Hash in Dashboard → Settings → Webhooks for each of Live and Test modes. Missing or mismatched secret hashes cause silent signature-verification failures. Set a long random secret (≥32 bytes) and store it as an environment variable; never reuse between environments.

3

Webhook signature is HMAC-SHA256 of the raw body — raw body parsing required

The `flutterwave-signature` header is HMAC-SHA256(raw_body, secret_hash) in base64 (per Flutterwave's own Node.js reference). If any middleware parses the JSON before you hash it, signature verification fails. Django views must read `request.body` before the parser; Next.js App Router must use `await req.text()` not `await req.json()`; Express must use `express.raw()` on the webhook route only.

4

Settlement holds and KYC re-verification loops

Trustpilot and PissedConsumer repeatedly surface multi-week settlement holds driven by incomplete KYC (regulatory ID, CAC registration for NG, TIN, AML + refund policy documents) or risk flags. Refund SLAs have stretched from 48h to 14+ business days in multiple reported cases. Upload every required document at onboarding; keep valid IDs current; contact [email protected] for stuck payouts and keep an audit trail.

5

International Processing Fee is flat 2% with no cap

The 2% International Processing Fee applies to non-card APMs (bank transfer, Apple Pay, Google Pay, mobile money) for every cross-border transaction — uncapped. A single $10,000 bank transfer from a different country incurs $200 in IPF on top of transaction fees. Enable the 'pass fee to customer' toggle in Dashboard → Settings → Business Preferences → Fee Settings if you don't want to absorb it.

6

Duplicate webhook deliveries — idempotency is mandatory

Flutterwave retries a failed webhook up to 3 times at 30-minute intervals; in practice duplicates can also occur on successful deliveries during infrastructure events. Handlers must be idempotent on `event.data.tx_ref` and `event.data.id`. Always call `/v3/transactions/{id}/verify` server-side before fulfilling — never trust the client-returned payload.

7

Test-mode transfers need the X-Scenario-Key header to fire webhooks

In test mode, a transfer stays permanently pending and no webhook is delivered unless you pass `X-Scenario-Key` with the scenario you want simulated. First-time integrators hit this as 'webhooks work in live but not test'. Add the header when writing integration tests against the sandbox.

8

Chargeback response windows are short

NG local chargebacks must be responded to within 24 working hours from the Flutterwave email; international within 48 working hours. Missing the window auto-accepts and deducts the transaction amount plus the $38 international fee. Subscribe to the `charge.dispute` event and route it to an on-call rotation — not a shared inbox.

9

v3 is stable but v4 is the direction — plan the migration

Flutterwave has stated v3 is not scheduled for deprecation but v4 is the active investment (cleaner REST, partial-payload encryption, better error shapes). If you're starting fresh in 2026, evaluate v4 beta for greenfield; if you're on v3, stay on v3 until Flutterwave publishes a migration timeline but structure your integration (amounts, webhooks) so the swap is localised to the client SDK layer.

10

Two high-profile security breaches in 2023 and 2024

February 2023 (₦2.9B) and May 2024 (₦11B) breaches involved internal/POS vectors; Flutterwave asserted customer funds were unaffected in both cases and pursued court-ordered freezes on receiving banks. For high-value merchants: require 2FA on the dashboard for every admin, rotate API keys on staff departure, and use IP allowlisting on webhook ingress and API key usage.

08

Community Pulse

Developer sentiment is genuinely split. On the positive side, Flutterwave's API coverage is the broadest in African payments — every serious cross-Africa playbook ends up pairing it with Paystack (or using it alone) because no one else has the same combination of 34+ licenses, mobile-money APIs, and US/UK/EU signup. Documentation materially improved through the Hackmamba partnership (61% positive developer sentiment reported in 2024, 10% ticket drop). On the negative side, Trustpilot (4.5★ aggregate with a heavy one-star tail) and PissedConsumer (227+ reviews) paint a consistent picture: refunds that take 14–60+ days to resolve, settlement holds triggered by opaque KYC re-verification, and multi-week support silence on payout disputes. The 2023 and 2024 security incidents ($4.2M and $7–$24M respectively) raised concerns but Flutterwave insists customer funds were untouched. The reasonable summary: excellent product for cross-border Africa, frustrating when something goes wrong with your account — plan your ops accordingly.

Sentiment last updated: April 2026 · We summarize — never copy — community content. Links go to original threads.

09

Changelog

  1. logo

    downloaded from https://commons.wikimedia.org/wiki/File:Flutterwave_Logo.png (CC BY-SA 4.0); resized from 6080×1448 to 400×95 transparent PNG, 18KB; avg brightness 84.8 (dark logo) so logo_bg left empty

  2. pricing

    initial pricing — Nigeria 2% local (new rate effective April 2025), Ghana 2.6% card / 2% mobile money, Kenya 3.2%/2.9%, SA 2.9%+R1, Uganda/Tanzania/Rwanda/Zambia local rates, transfer/payout per country, $38 international chargeback, 2% International Processing Fee on cross-border APMs

  3. availability

    initial availability — 9 primary merchant markets (NG, GH, KE, ZA, UG, TZ, RW, ZM + 'Other African' bucket), US (49 states; Texas excluded), UK, SEPA EU (21 countries), Canada, plus NOT-available row

  4. features

    initial 22 features — Cards (Visa/MC/Amex/Discover/Verve), Bank Transfer, USSD, NQR, Mobile Money, Apple Pay, eNaira/Opay, Subscriptions, Payment Links, Store, Split Payments, Transfers/Payouts, Virtual & Physical Card Issuing, Webhooks HMAC-SHA256, Refunds, Chargebacks, Bill Payments, Send App, v4 beta, Flutterwave CLI. Google Pay marked 'no'.

  5. security

    initial security entries — PCI DSS Level 1, SOC 1 & 2, ISO 27001 & 22301, 3DS2, HMAC-SHA256 webhook signing, ML fraud detection (14% FPR claim), 2FA, regulatory licenses across 34 African markets plus US/UK/EU, historical 2023/2024 breach disclosures with customer-funds-safe statements and April 2026 CBN MFB license

  6. pitfalls

    initial 10 pitfalls — v3 main-unit amount format (vs Paystack subunits), merchant-defined webhook Secret Hash, HMAC-SHA256 raw-body requirement, NG settlement holds and KYC loops, 2% International Processing Fee uncapped, duplicate webhook idempotency, X-Scenario-Key test-mode gotcha, 24h/48h chargeback windows, v3/v4 migration planning, 2023/2024 breach hardening guidance

  7. community_pulse

    initial synthesis from Trustpilot (4.5★, 43 pages), PissedConsumer (227 reviews), Capterra, Medium comparison articles, TechCabal breach reporting, Hackmamba DX case study, PRNewswire MFB license announcement

  8. trust_score

    initial weighted trust score 67 — payout_reliability 68, account_stability 60, developer_experience 78, transparency 72, support_quality 50, track_record 70. Lower than Paystack overall (74) on support and account stability; comparable on developer experience

  9. integration_prompt

    initial integration prompt covering v3 init→verify→webhook flow, HMAC-SHA256 with raw-body handling, main-unit amount format warning (vs Paystack subunits), 2% IPF handling, test-mode X-Scenario-Key, subaccounts for marketplaces, dispute windows, dashboard hardening

Back to Gateway Index

LearnWithHasan.com · Payment Gateway Index · No affiliate links · Builder-first