Flutterwave
Pan-African payment infrastructure — 34+ African licenses, card/bank/mobile-money/USSD in one API, plus US/UK/EU collections
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.
◆◆ Moderate
34+ African countries + US/UK/EU
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
Trust Score Breakdown
Account Stability
60/100KYC 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/100v3 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/100Documented 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/100Support 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/100Founded 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/100Core 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.
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 |
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.
Pricing Breakdown
Security & Compliance
Integration Prompt
✂
Copy & use this 6020-char integration prompt
Production-ready prompt for Claude / GPT / Cursor — handles setup, security, webhooks & gotchas
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.
Common Pitfalls
10 itemsv3 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Changelog
-
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
-
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
-
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
-
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'.
-
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
-
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
-
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
-
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
-
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
LearnWithHasan.com · Payment Gateway Index · No affiliate links · Builder-first