Tap Payments
MENA payment gateway with full GCC licensing — local schemes (mada, KNET, Benefit, OmanNet, NAPS/QPay), wallets (Apple/Google/Samsung Pay, STC Pay), and BNPL (Tabby/Deema) under one integration
Pick Tap Payments if your business is based in the GCC (KSA/KW/UAE/BH/QA/OM) and you need deep local payment-method coverage in one API — nobody else has full CBK/SAMA/CBUAE/CBB/QCB/CBO licensing plus KNET+mada+Benefit+OmanNet+NAPS+STC Pay in a single checkout; the trade-off is quote-based (opaque) card pricing and a consistent complaint pattern of settlement holds and slow support on Trustpilot/Sitejabber.
◆◆ Moderate
GCC-licensed: KSA, KW, UAE, BH, QA, OM
Card rates quote-based; mada 1% cap SAR 200
Tap Payments is a Kuwait-headquartered MENA payment gateway founded in 2014 by CEO Ali Abulhasan and serving ~120,000 businesses. In April 2025 it received a Retail Payment Services licence from the Central Bank of the UAE, completing regulatory approvals across all six GCC markets (KSA, KW, UAE, BH, QA, OM) — the first regional PSP to hold the full set. Tap exposes ~20 payment methods through a single goSell/Charges API: international cards (Visa, Mastercard, Amex), the full MENA local-scheme stack (mada, KNET/KFAST, Benefit/BenefitPay, OmanNet, NAPS/QPay, STC Pay, Fawry), wallets (Apple Pay, Google Pay, Samsung Pay), and BNPL (Tabby, Deema). Integration options include Hosted Checkout, Web/iOS/Android/Flutter/React Native SDKs, direct PCI-custom API (RSA tokenisation), and e-commerce plugins (Magento, WooCommerce, OpenCart, Shopify). In November 2024 Tap partnered with Mastercard to launch Click to Pay with Payment Passkey — a global first for MENA e-commerce.
Last full audit: April 24, 2026
Trust Score Breakdown
Account Stability
50/100Account termination without prior notice and multi-month settlement holds are the dominant merchant complaint theme on Trustpilot and Sitejabber (1.5/5 from 8 reviews). Reports specifically cite accounts closed two weeks after first receiving customer payments with funds held for ~540 days. Tap's Customer Care Lead has been documented responding publicly to at least one January 2026 scam complaint, indicating some escalation channel exists, but the pattern of unexplained freezes is consistent enough that it affects the core value proposition.
Developer Experience
78/100Strong for the MENA market: comprehensive developer portal at developers.tap.company with REST API docs, unified Checkout SDK across Web/iOS/Android/Flutter/React Native (advertised as first MENA payment SDK with true cross-platform parity), official e-commerce plugins (Magento, WooCommerce, OpenCart, Shopify), and a sandbox that mirrors live. Best-practices doc explicitly covers idempotency via reference.idempotent, webhook hashstring validation, and order/transaction reconciliation fields. Weaknesses: webhook hashstring uses a brittle concatenated-field SHA-256 HMAC (not raw-body HMAC like Stripe/Paystack) which breaks quietly if field order or decimal rounding drifts, and integration review with Tap's DX team is recommended before going live — suggesting rough edges exist even for well-documented flows.
Payout Reliability
55/100Documented payout schedules are published per country (T+2 KNET in KW, T+3 mada in KSA, T+5 Visa/MC across GCC, Mon/Wed in OM, Tuesday weekly in UAE) and merchants in good standing report reliable settlements. However, Trustpilot and Sitejabber repeatedly surface 'funds held 540 days with no update' and 'account closed without notice shortly after receiving payments' as recurring complaints. Minimum-settlement thresholds (SAR 100 / AED 100–1000 / QAR 500 / OMR 25) combined with early-payout fees (SAR 5 / AED 15 / QAR 15 / OMR 5) can trap low-volume merchants in delayed cash flow.
Support Quality
45/100Support is the most consistent negative theme in public reviews. Trustpilot and Sitejabber reviews cite 'zero support after registration,' repeated document requests on frozen accounts, and multi-week silence on settlement-hold escalations. There is evidence of a Customer Care Lead responding to high-visibility complaints, and integration-tagged tickets appear to be handled faster than risk/payout disputes, but merchants routinely report being unable to reach a human on funds-held issues.
Track Record
78/100Founded 2014 in Salmiya, Kuwait by CEO Ali Abulhasan. 10+ year operating history, ~120,000 merchants, offices in Cairo/Doha/Dubai/Kuwait/London/Manama/Muscat/Riyadh. Regulatory progression is the strongest signal: progressively secured CBK, SAMA, CBB, QCB, CBO, and in April 2025 CBUAE Retail Payment Services licences — the first MENA PSP with full GCC coverage. November 2024 co-launched Mastercard Click to Pay Passkey (global first). Glassdoor employee rating 3.8/5 from 44 reviews suggests reasonable internal stability. No major public security breaches or regulatory actions recorded.
Transparency
50/100Payout schedules, minimums, early-payout fees, and USD settlement fees are clearly published in support articles per country. Mada pricing is published on the blog (1% capped at SAR 200, effective 2023-09-01). However, the standard card processing rates (Visa/Mastercard/Amex, KNET, Benefit, OmanNet, NAPS, etc.) are quote-based — not published anywhere public — so merchants cannot compare against PayTabs/HyperPay/Checkout.com without entering sales cycles. FX premium is disclosed in the T&Cs as 2–5% over market rate, which is a wide undisclosed range. PCI DSS certification level is not publicly stated — only a generic 'complies with PCI DSS' clause in the T&Cs.
Availability Matrix
| Region | Countries | Currencies | Payout Timing |
|---|---|---|---|
| Qatar | Qatar — licensed by the Qatar Central Bank. NAPS (Qatar Payment System) / QPay is the core local scheme. | QAR settlement automatic and free. | Transactions settled in 5 business days. Minimum payout QAR 500. QAR 15 fee on transactions below QAR 500 upon merchant request for early payout. Payout frequency can be lengthened (bi-weekly, monthly) on request. |
| Oman | Oman — licensed by the Central Bank of Oman. OmanNet is the core local scheme and is charged below Visa/Mastercard rates. | OMR settlement automatic and free. | All transactions settled within 5 business days. Payouts sent twice weekly (Monday and Wednesday). Minimum payout OMR 25; OMR 5 fee on early-payout requests. |
| Saudi Arabia | Saudi Arabia — full SAMA licensing; mada is the core local-scheme with Apple Pay over mada supported. Payments settle for free to your Saudi bank account automatically. | SAR settlement. Accepts SAR from domestic customers and international cards in foreign currencies with 2–5% FX premium disclosed in the T&Cs. | mada: settled in 3 working days. Visa/Mastercard: 5 working days. Minimum settlement SAR 100; SAR 5 fee on early payout requests below minimum. |
| Kuwait (HQ market) | Kuwait — headquarters; KNET is the core local-scheme with KFAST variant. Licensed by the Central Bank of Kuwait. | KWD settlement automatic and free. USD settlement available on merchant request only, flat USD 25 fee per request (avoidable by opening a KWD settlement account). | KNET: settled within 2 business days. Visa/Mastercard/Amex: settled within 5 business days. No minimum settlement amount. |
| United Arab Emirates | UAE — Retail Payment Services licence from the Central Bank of the UAE (CBUAE) granted April 2025, completing the full GCC regulatory footprint. | AED settlement automatic and free. | Transactions settle in 5 business days, then weekly every Tuesday (Friday for corporate merchants). Minimum payout: AED 100 for corporates / AED 1,000 for individuals. AED 15 fee on early-payout requests below minimum. |
| Bahrain | Bahrain — licensed by the Central Bank of Bahrain. Benefit/BenefitPay is the core local scheme. | BHD settlement. | Settlement published through Tap support portal; contact merchant onboarding for exact schedule. Standard GCC cadence of T+2 to T+5 applies by method. |
| Egypt / Jordan / Lebanon (restricted) | Tap maintains an office in Cairo and historically operated in these markets, but the support documentation states 'we currently do not accept any new merchants from Egypt, Jordan, or Lebanon.' New merchant signups are gated; existing merchants continue. | Not accepting new accounts. | N/A for new signups. |
| NOT available | Non-GCC merchants (outside KSA/KW/UAE/BH/QA/OM) cannot sign up as Tap merchants. Customers worldwide can still pay into a GCC Tap merchant using international Visa/Mastercard/Amex or Apple Pay; settlement is to the merchant's GCC bank account in the licensed local currency (with FX premium applied). | N/A | N/A |
Feature Snapshot
Cards (Visa, Mastercard, American Express)
All three international schemes across all GCC markets. Direct PCI-certified merchants can use RSA tokenisation against a custom form; most merchants use Hosted Checkout or the Tap Card SDK.
mada (Saudi Arabia)
Saudi national debit scheme. Supported as standalone card-scheme and over Apple Pay; first-class recurring support. Pricing: 1% capped at SAR 200 per transaction since 2023-09-01.
KNET (Kuwait) + KFAST
Kuwait national debit rail (KNET) plus the KFAST one-click express variant. Redirect-flow; below Visa/Mastercard cost per transaction.
Benefit / BenefitPay (Bahrain)
Benefit card-scheme plus BenefitPay wallet. Dedicated Benefit Pay Web SDK available; requires public key, hashstring, and merchant ID at init.
OmanNet (Oman)
Oman national card scheme. Priced below Visa/Mastercard. Redirect payment flow.
NAPS / QPay (Qatar)
Qatar Payment System domestic scheme.
STC Pay (Saudi Arabia wallet)
Saudi mobile-wallet from STC. Redirect flow.
Apple Pay
Merchant-identifier flow supported; works over mada, Visa, Mastercard, Amex. Requires the standard Apple Pay domain-verification step during onboarding.
Google Pay
Supported across GCC merchants; works over supported card networks.
Samsung Pay
Supported on Android; works over supported card networks.
Fawry (Egypt cash wallet)
Cash-payment fulfilment via Fawry agent network. Only relevant to merchants with legacy Egypt acceptance.
Tabby (BNPL)
Buy-Now-Pay-Later through Tabby for GCC merchants (primarily KSA/UAE/KW). Handled as a redirect payment method on checkout.
Deema (BNPL)
Second BNPL option integrated in the Tap checkout.
Subscriptions / Recurring
Recurring API with daily, weekly, monthly, bi-monthly, quarterly, semi-annual, and annual schedules. mada supports recurring charges on saved cards.
Marketplace split payments
Split payout routing to multiple destinations within a single charge — FX-compatible for cross-border marketplaces.
Billing app / payment links (goSell)
Hosted payment-link product for creators, freelancers, and SMBs to collect via WhatsApp/SMS/Instagram/email. Invoice API for structured billing.
Hosted Checkout + Web/Mobile SDKs
Unified cross-platform Checkout SDK for Web, iOS, Android, Flutter, and React Native with all local methods pre-integrated. Advertised as first MENA SDK with true cross-platform parity.
E-commerce plugins
Official plugins for Magento, WooCommerce, OpenCart, and Shopify (native + redirect variants).
Webhooks with hashstring (HMAC-SHA256)
Event webhooks signed via x-hashstring header. Hash is HMAC-SHA256 of a concatenated string of transaction fields (id, amount, currency, gateway reference, payment reference, status, created) plus merchant secret key — NOT raw-body HMAC.
POS / Terminal (goTerminal)
In-person card acceptance hardware in Kuwait (powered by KNET) and other GCC markets. Advertised with built-in PCI compliance.
Mastercard Click to Pay with Passkey
November 2024 global-first launch with Mastercard — passwordless, passkey-based checkout over the Click to Pay standard.
Pricing Breakdown
Security & Compliance
Integration Prompt
✂
Copy & use this 5316-char integration prompt
Production-ready prompt for Claude / GPT / Cursor — handles setup, security, webhooks & gotchas
Copy & use this 5316-char integration prompt
Production-ready prompt for Claude / GPT / Cursor — handles setup, security, webhooks & gotchas
You are building a Tap Payments integration for [Django / Next.js / Laravel / Rails / etc.] targeting [one of KSA / KW / UAE / BH / QA / OM]. Follow these rules exactly.
## Architecture
1. Use **Tap Hosted Checkout** or the **Tap Checkout SDK** (Web/iOS/Android/Flutter/React Native) — do not build a custom card form unless you already hold a valid PCI DSS AoC. If you do go custom, you MUST use Tap's RSA public key to encrypt cardholder data client-side before sending to your server.
2. Flow: server-side `POST /v2/charges` → redirect customer to `transaction.url` (redirect flow) or render Tap SDK (direct flow) → customer completes payment → Tap redirects to your `redirect.url` with a charge ID → **your server calls `GET /v2/charges/{charge_id}` before fulfilling the order**. Never trust the client-returned status.
3. Subscribe to webhooks at `POST /tap/webhook` by passing `post.url` on the charge. Listen for `CAPTURED`, `AUTHORIZED`, `FAILED`, `DECLINED`, `CANCELLED`, and subscription/invoice events. Webhooks are the source of truth for async events; `GET /v2/charges/{id}` is the source of truth for the synchronous callback.
## Amounts (critical)
All amounts are rounded to the currency's decimal places:
- **2 decimals:** SAR, AED, QAR, EGP, USD (e.g., SAR 10.50 = 10.50)
- **3 decimals:** KWD, OMR, BHD (e.g., KWD 10.500 = 10.500)
When you construct the webhook-verification hashstring, the amount MUST match the rounding Tap uses or the signature will not match. Do arithmetic in integer subunits internally and format to the exact decimal count at the API and webhook-verification boundaries.
## Webhook security (do not skip)
1. Verify the `hashstring` header on every webhook. The hash is HMAC-SHA256 of the concatenated string, using your **secret API key** as the HMAC key.
2. Concatenation order (for charges) is documented as:
`x_id` + `x_amount` + `x_currency` + `x_gateway_reference` + `x_payment_reference` + `x_status` + `x_created`
Use an empty string if `gateway_reference` is unavailable. For invoices, the `updated` field replaces `gateway_reference`.
3. Compute the HMAC-SHA256 hex digest and compare with `timingSafeEqual` / `hmac.compare_digest` — never string equality.
4. Return `200 OK` within 5 seconds. Queue heavy work (email, fulfilment) to a background job.
5. **Idempotency:** pass `reference.idempotent` on the charge create to prevent duplicate charges from retried network requests. On the receive side, deduplicate by `charge.id` in a processed-events table so repeated webhook deliveries don't re-fulfil.
6. **Reconciliation:** always set `reference.order` and `reference.transaction` on the charge so your reporting can join back to your DB.
## Secrets
- Use `sk_live_...` / `sk_test_...` server-side only. Never ship to the browser bundle.
- Use `pk_live_...` / `pk_test_...` only on the client for SDK init.
- Separate test and live keys. Test transactions do not settle.
## Currency & country config
Each GCC market has different core local schemes. Pass the correct `currency` and constrain `source` / payment-methods accordingly:
- **KSA (SAR):** cards + mada + Apple Pay over mada + STC Pay + Tabby
- **KW (KWD):** cards + KNET + KFAST + Apple Pay
- **UAE (AED):** cards + Apple Pay + Google Pay + Tabby
- **BH (BHD):** cards + Benefit + BenefitPay (separate Benefit Pay Web SDK)
- **QA (QAR):** cards + NAPS/QPay
- **OM (OMR):** cards + OmanNet
Apple Pay requires domain verification via the Tap dashboard before going live.
## Development workflow
- Register webhook URL via `post.url` on each charge (not a dashboard global). Use ngrok/Cloudflare Tunnel during development or a stable staging deploy.
- Before going live: run an integration review with Tap's Developer Experience team, swap to `sk_live_` keys, configure production `redirect.url` and `post.url`, and run one live transaction per payment method across web/iOS/Android.
## Subscriptions
- Create a `Plan` then a `Subscription` tied to a customer email. Handle `subscription.create`, `subscription.updated`, and invoice webhooks.
- mada supports recurring charges with saved cards — the only Saudi local scheme that does.
## Marketplace split payments
Use the Split API to route portions of a single charge to multiple sub-accounts. Works across currencies for marketplaces with GCC-multi-country sellers.
## Error handling
- Treat non-2xx responses from Tap as retryable with exponential backoff (3 attempts, 1s/5s/30s).
- Log the full response from `GET /v2/charges/{id}` for reconciliation — the `status`, `response.code`, and `source` fields are essential when investigating declines.
- Merchants on MENA report higher decline rates on some international cards than global comparables — expose a secondary retry path (different method) in your UI.
## Compliance
- PCI DSS certification level is not publicly advertised by Tap. If your own compliance program requires a supplier AoC, request it from Tap during onboarding in writing — do not assume Level 1.
- FX premium on foreign-currency transactions is 2–5% per the T&Cs. Price accordingly if you accept non-settlement-currency cards.
Deliver a minimal working integration: create charge → verify on redirect → signature-verified webhook handler → 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 itemsAccount freezes and multi-month settlement holds
The most consistent complaint pattern on Trustpilot and Sitejabber (1.5/5 from 8 reviews, polarised Trustpilot distribution). Specific reports include accounts closed two weeks after first customer payments with funds held for ~540 days. Mitigation: complete KYC with clean business documentation before going live, stay inside your declared business model, and keep CRs/licences up-to-date for re-verification requests.
Card pricing is quote-based and opaque
Unlike Stripe/Paystack/Checkout.com, Tap does not publish standard card-processing rates. You cannot compare rates against competitors without entering a sales cycle. mada is the only publicly-disclosed card-scheme rate (1% cap SAR 200); KNET/Benefit/OmanNet/NAPS are documented only as 'lower than Visa/Mastercard.'
Webhook hashstring is concatenation-based, not raw-body HMAC
Tap's webhook signature is HMAC-SHA256 over a concatenated string of SPECIFIC transaction fields (id, rounded amount, currency, gateway reference or empty, payment reference, status, created) plus your secret key. This is field-order-sensitive — adding a field in the wrong position or rounding the amount to the wrong number of decimals silently produces a mismatch. Follow the exact concatenation in the docs and log both the expected and received hash during integration.
Amount rounding must match currency minor units
The webhook signature calculation requires the amount to be rounded to the currency's decimal places (3 for KWD/OMR/BHD, 2 for SAR/AED/QAR). Off-by-one rounding on sub-currency units is a common reason for failing hashstring verification. Use integer subunits internally and only format to the expected decimal places at the signature boundary.
No public 'no minimum' payouts outside Kuwait
Every GCC market except Kuwait has a minimum settlement amount that blocks automatic payouts below the threshold (SAR 100 / AED 100–1000 / QAR 500 / OMR 25). Below the threshold you can request an early payout but pay a fixed fee (SAR 5 / AED 15 / QAR 15 / OMR 5). Low-volume merchants can sit on cash for weeks waiting to cross the threshold — plan cashflow accordingly.
FX premium is 2–5% and disclosed only in T&Cs
Foreign-currency transactions incur a 2% to 5% FX premium over market rate, buried in the merchant T&Cs rather than on the pricing or developer pages. Customers in foreign currencies can materially reduce your effective margin; benchmark against a settlement-currency-agnostic competitor if cross-border volume is significant.
USD settlements from Kuwait are manual and fee-bearing
Kuwait merchants do not get automatic USD settlements — you must submit a USD withdrawal request, and each one is charged a flat USD 25 fee. If you invoice internationally in USD and want to avoid the fee, open a KWD settlement account instead and convert on your own banking side.
Support latency on risk/payout tickets
Trustpilot and Sitejabber reviews repeatedly cite silence on settlement-hold escalations and 'zero support after registration.' Integration-tagged tickets appear to be handled faster than risk/payout disputes. Plan for multi-day turnaround on any funds-related issue and escalate via Customer Care Lead or public review channel if stuck.
Egypt / Jordan / Lebanon no longer accept new merchants
Tap's support documentation explicitly states 'we currently do not accept any new merchants from Egypt, Jordan, or Lebanon.' If you are building for a non-GCC MENA market you will need an alternative (Paymob in Egypt, Amazon Payment Services, MyFatoorah) despite Tap having a Cairo office.
PCI DSS level not publicly advertised
Unlike Stripe (Level 1) or Paystack (Level 1), Tap's T&Cs commit to PCI DSS compliance but do not publish a certification level, AoC, or ROC. If your compliance program requires a supplier AoC, request it directly during onboarding rather than assuming Level 1.
Community Pulse
Merchant sentiment on Tap Payments is sharply polarised. Developers praise the SDK coverage (Web/iOS/Android/Flutter/React Native with cross-platform parity), the breadth of pre-integrated MENA payment methods (nowhere else gets you mada + KNET + Benefit + OmanNet + NAPS + STC Pay + Tabby in one SDK), and recent regulatory milestones (full GCC licensing April 2025, Mastercard Click to Pay Passkey launch Nov 2024). Operational reviews on Trustpilot (154 reviews, highly polarised) and Sitejabber (1.5/5 from 8 reviews) converge on two recurring complaints: account closures/settlement holds without prior notice (with reports of 540-day fund holds) and slow support on risk/payout escalations, contrasted against reasonable responsiveness on integration tickets. Employee reviews on Glassdoor (3.8/5 from 44 reviews) suggest internal stability. The pattern is 'excellent product for the market it serves, frustrating when your merchant account flags a review.' No meaningful Reddit discussion exists on Tap specifically — sentiment lives on Trustpilot, Sitejabber, and MENA fintech blogs.
Sentiment last updated: April 2026 · We summarize — never copy — community content. Links go to original threads.
Changelog
-
logo
downloaded official Tap favicon SVG from https://www.tap.company/favicon.svg — rendered to 256×256 transparent PNG (18KB) via resvg_py; avg brightness 35.0 (dark logo) so logo_bg left empty. Chose symbol-only lockup over the Wikimedia stacked version (Tap_Payments.svg, 400×648) for visual consistency with other square-mark gateway cards.
-
pricing
initial pricing entries — mada 1% cap SAR 200 (verified); FX premium 2–5% from T&Cs; payout fees/minimums for KSA/KW/UAE/QA/OM (verified from support articles); card/local-scheme rates and chargeback/setup fees marked unverified because Tap does not publish them publicly
-
availability
initial availability rows — 6 GCC markets (KSA, KW, UAE, BH, QA, OM) all licensed; Egypt/Jordan/Lebanon explicitly restricted for new merchants; Bahrain payout timing marked unverified (no public per-country payout article found); NOT-available row added
-
features
initial feature list — 21 features covering cards, mada, KNET/KFAST, Benefit/BenefitPay, OmanNet, NAPS/QPay, STC Pay, Apple/Google/Samsung Pay, Fawry, Tabby, Deema, Subscriptions, Split payments, Billing app, Hosted Checkout + SDKs (Web/iOS/Android/Flutter/React Native), e-commerce plugins, webhooks, POS terminal, Mastercard Click to Pay Passkey
-
security
initial security entries — PCI DSS (level not publicly advertised), 3D Secure (conditional), webhook hashstring HMAC-SHA256 with field-concatenation, tokenisation (SDK + RSA custom), full GCC regulatory licensing, data-protection clause from privacy policy, Click to Pay Passkey
-
pitfalls
initial 10 pitfalls — account freezes and 540-day holds, quote-based card pricing, concatenation-based hashstring, amount-rounding trap on KWD/OMR/BHD 3-decimal, payout minimums outside Kuwait, 2-5% FX premium buried in T&Cs, USD settlement fee from Kuwait, support latency on risk tickets, Egypt/Jordan/Lebanon restriction, undisclosed PCI level
-
community_pulse
initial synthesis from Trustpilot (154 reviews, polarised), Sitejabber (1.5/5 from 8), Glassdoor (3.8/5 from 44), FinTech Futures UAE-license coverage, Tap blog SDK announcement. No meaningful Reddit discussion exists.
-
trust_score
initial weighted trust score 62 — strong track record (78) and developer experience (78) offset by support quality (45), account stability (50), and transparency (50). Matches the 'strong product / opaque account ops' narrative consistent across public reviews.
-
integration_prompt
initial integration prompt covering Charge API + verify flow, hashstring HMAC-SHA256 concatenation field order, amount-rounding by currency decimals, idempotency via reference.idempotent, per-country local-method config (mada/KNET/Benefit/OmanNet/NAPS/STC Pay/Tabby), RSA tokenisation for PCI-custom, Apple Pay domain verification
LearnWithHasan.com · Payment Gateway Index · No affiliate links · Builder-first