E-commerce9 min read

Integrate Wave, Orange Money and Stripe on your site in 2026

Mohamed Bah·Fondateur, Kolonell
May 21, 2026
Share:
Integrate Wave, Orange Money and Stripe on your site in 2026

Integrate Wave, Orange Money and Stripe on your site in 2026

E-commerce

Why multi-method payment in Senegal in 2026

A Senegalese e-commerce site accepting only one method loses 35-55% of conversions. Distribution observed on 12 SMEs supported:

MethodVolume shareCustomer profile
Wave48-62%Young 18-35, urban, mobile-first
Orange Money22-34%25-55, employees, loyal Orange
Cash on delivery8-18%First-purchase distrustful, rural areas
Stripe (Visa/Mastercard cards)3-12%Diaspora, B2B, purchases > 100 KFCFA
Bank transfer0-3%B2B large orders only

Recommended strategy: Wave + Orange Money + Stripe by default, COD optional by zone.

H2: Real fees and 2026 conditions

MethodMerchant feesPayout delayReliable webhookKYC
Wave Business1% intra-SenegalT+1 working dayyes (HMAC SHA256)RC + IFU
Orange Money Merchant1-1.5% by volumeT+2 working daysyes (OM signature)RC + IFU + deposit
Stripe (EUR/USD cards)2.9% + 0.30 EURT+7 (J+2 if Stripe Capital)yes (Stripe signature)full KYC
Stripe (local XOF cards)not directgo through local PSP (PayDunya, CinetPay)
PayDunya (Wave+OM+cards aggregator)2-3.5%T+1 to T+3yesRC + IFU
CinetPay (Africa multi-country aggregator)2-3%T+2 to T+5yesRC + IFU

Tactical choice.

  • Monthly volume < 5 M FCFA: aggregator (PayDunya or CinetPay), single integration
  • Volume > 10 M FCFA: direct Wave + Orange Money integration (saves 1-2% fees) + Stripe for international

H2: Technical architecture (Next.js 14 + Prisma + webhooks)

Minimum Prisma model.

`prisma

model Order {

id String @id @default(cuid())

amount Int // in FCFA

currency String @default("XOF")

status OrderStatus @default(PENDING)

paymentMethod String // wave | orange | stripe | cod

paymentRef String? // external PSP ref

customerId String

createdAt DateTime @default(now())

paidAt DateTime?

}

enum OrderStatus {

PENDING

PAID

FAILED

REFUNDED

}

`

Server-side checkout route. Create order as PENDING, generate PSP payment URL, return to client. Client is redirected to PSP, pays, and PSP calls your webhook back.

Webhook route. Verify HMAC signature, update status=PAID, trigger email + logistics. Always idempotent (PSP may call back 2-3 times).

Need a professional website?

Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.

Sample Wave webhook payload (simplified).

`json

{

"event": "payment.success",

"data": {

"id": "tx_AbCdEf123",

"amount": 28500,

"currency": "XOF",

"reference": "order_xyz_789",

"status": "succeeded",

"completed_at": "2026-05-21T14:32:11Z"

}

}

`

H2: Security and compliance

Non-negotiable rules.

  • Webhook signature verified server-side — never trust the raw payload
  • Idempotency key on payment creation — a customer clicking 3 times must not create 3 charges
  • Amounts validated server-side — never accept the client amount (tamperable)
  • Encrypted payment logs + restricted access (RBAC)
  • PCI DSS: never store card number. Tokenize via Stripe Elements or PSP redirection
  • 3D Secure activated on Stripe for all transactions > 50 KFCFA
  • Rate limiting on payment endpoint (Cloudflare or Next.js middleware)

FAQ

Wave or Orange Money: which to integrate first?

Wave first in 2026: 48-62% of mobile money volume observed on SMEs, more modern API (REST + clean webhooks), flat 1% fees vs 1-1.5% for OM, faster KYC (3-7 days vs 10-21 days OM).

How much does it cost to integrate Wave + Orange Money + Stripe?

Direct integration by an experienced dev: 1.2-3.5 M FCFA for all three (including custom checkout, webhooks, minimum internal dashboard). Via aggregator (PayDunya / CinetPay): 350-850 KFCFA. Plus monthly transaction fees.

Does Stripe accept XOF?

Stripe does not process XOF directly as merchant currency. Workarounds: (1) bill in EUR/USD with displayed conversion, (2) go through local PSP (PayDunya, CinetPay) aggregating Stripe + Wave + OM, (3) open an entity outside CFA zone. Most SMEs use option 2.

How to handle cash on delivery (COD) technically?

Order created as PENDING_COD. Delivery person collects cash, scans QR on their app, marks order PAID after handing funds to HQ. Risks: customer no-pickup 8-18%, delivery person theft 0.5-2%. Mitigation: require 10-20% Wave deposit at order, delivery geolocation, delivery photo.

Webhook receiving nothing: what to check?

Checklist: (1) public webhook URL accessible (not localhost), (2) valid HTTPS (Let's Encrypt), (3) 200 response under 5s otherwise retry, (4) PSP IP whitelisted if firewall, (5) HMAC signature verified with the right secret key, (6) PSP-side merchant dashboard logs consulted (Wave / OM / Stripe all have a "webhook logs" tab).

Let's talk about your case

If you want to integrate Wave, Orange Money and Stripe on your e-commerce site, we can design the architecture and code the integration. WhatsApp +221 77 596 93 33.

Tags:#payment#Wave#Orange Money#Stripe#API#Next.js#Prisma
Share:

Mohamed Bah

Fondateur, Kolonell

Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.