Le mobile money est devenu le mode de paiement numéro 1 au Sénégal : selon la BCEAO, plus de 85 % des transactions e-commerce locales passent par Wave, Orange Money ou Free Money en 2026. Pour tout business à Dakar — boutique en ligne, SaaS, fintech, plateforme de services — accepter ces moyens de paiement n'est plus optionnel.
Ce guide explique concrètement comment intégrer ces trois passerelles, ce qu'il faut négocier avec les opérateurs, et les pièges techniques à connaître pour ne pas perdre de transactions.
Pourquoi intégrer mobile money plutôt que carte bancaire au Sénégal
La carte bancaire (Visa, Mastercard, GIM-UEMOA) couvre moins de 15 % des Sénégalais bancarisés en 2026. Mobile money est utilisé par plus de 8 millions de personnes au Sénégal, dont la grande majorité sans compte bancaire.
Quelques chiffres-clés à savoir avant de chiffrer un projet e-commerce à Dakar :
- Wave : plus de 5 millions d'utilisateurs au Sénégal, frais gratuits côté client, paiement marchand 1 % côté marchand.
- Orange Money : ~3 millions d'utilisateurs au Sénégal, frais marchand 1,5 % à 2 %.
- Free Money : ~1 million d'utilisateurs, frais comparables à Orange Money.
Si vous deviez n'en intégrer qu'un : Wave. C'est le plus utilisé, le moins cher pour le marchand, et techniquement le plus stable. Mais en B2C, intégrer les trois reste la meilleure pratique.
Prérequis administratifs avant tout code
Avant la moindre ligne de code, vous devez obtenir les accès API officiels de chaque opérateur. Voici les démarches au Sénégal en 2026.
Wave Business API
- Créer un compte Wave Business (vérification d'identité du dirigeant + RCCM de l'entreprise).
- Demander l'accès à l'API marchand via business.wave.com.
- Délai d'obtention : 3 à 7 jours ouvrés si dossier complet.
- Documents requis : RCCM, NINEA, pièce d'identité, justificatif d'activité.
Orange Money API (Sonatel)
- Compte marchand Orange Money via une agence Sonatel à Dakar ou par dossier en ligne.
- Convention de partenariat à signer (10-20 pages, attention aux clauses de reversement).
- Délai : 2 à 6 semaines. C'est le plus long.
- Avoir un développeur disponible pour la phase de tests d'intégration : Orange exige des recettes formelles.
Free Money API
- Démarches via les agences Free Sénégal ou le service partenariats fintech.
- Délai : 2 à 4 semaines.
- Documentation API moins ouverte — souvent fournie après signature du partenariat.
Conseil : démarrez les trois démarches en parallèle dès le début du projet. Le code peut être prêt en 2 semaines alors que les accès traînent 4 à 6 semaines.
Architecture recommandée
Voici l'architecture qu'on recommande sur les projets fintech qu'on déploie à Dakar (vue d'oiseau, applicable Web ou Mobile) :
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Frontend │────▶│ Backend API │────▶│ Wave / OM / Free│
│ (Next.js / RN) │ │ (NestJS) │ │ APIs │
└──────────────────┘ └────────┬─────────┘ └────────┬─────────┘
│ │ webhook
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ PostgreSQL │◀────│ Webhook handler │
│ (transactions) │ │ (idempotent) │
└──────────────────┘ └──────────────────┘
Le backend est le seul à parler aux APIs des opérateurs : jamais directement depuis le frontend (sinon vos clés API fuitent dans le code client).
Chaque transaction passe par 3 états :
- PENDING : initiée côté serveur, attente paiement client.
- SUCCESS : confirmée par le webhook de l'opérateur (et uniquement par webhook — jamais par redirection client).
- FAILED / EXPIRED / CANCELLED : selon les cas.
Les 4 pièges techniques qui font perdre de l'argent
1. Croire le frontend, pas le webhook
Beaucoup d'intégrations naïves marquent la commande comme payée dès que le client revient sur la page de "succès". C'est une erreur grave : un utilisateur malveillant peut simuler cette redirection sans avoir payé.
À faire : ne marquez jamais une commande payée tant que le webhook signé de l'opérateur n'a pas confirmé la transaction côté serveur.
2. Pas d'idempotence sur les webhooks
Wave, Orange Money et Free Money envoient parfois le même webhook plusieurs fois (en cas de doute réseau). Si votre code crédite le compte client deux fois, vous perdez de l'argent.
À faire : chaque webhook contient un transaction_id unique. Stockez-le en base avec une contrainte d'unicité et ignorez les doublons :
async handleWebhook(payload: WaveWebhookPayload) {
const existing = await this.txRepo.findOne({
where: { externalId: payload.transaction_id },
});
if (existing && existing.status === 'SUCCESS') {
return { ok: true }; // déjà traité, on ignore
}
// ... traiter la transaction
}
3. Pas de vérification de signature
Un attaquant peut envoyer un faux webhook qui dit "client X a payé 100 000 FCFA". Si vous ne vérifiez pas la signature HMAC du webhook, vous offrez littéralement votre catalogue.
À faire : chaque opérateur fournit une clé secrète + un algorithme de signature (HMAC-SHA256 généralement). Vérifiez la signature avant tout traitement métier.
4. Timeout trop court côté API
Les APIs mobile money peuvent répondre en 5 à 15 secondes, surtout aux heures de pointe au Sénégal (vendredi soir, fin de mois). Si votre code timeout à 3 secondes, vous comptez des échecs là où il y avait succès.
À faire : timeout HTTP à 30 secondes minimum + retry exponentiel sur erreurs réseau (jamais sur 4xx).
Schéma fonctionnel : le checkout Wave en 7 étapes
Voici le flux complet d'un paiement Wave Business côté serveur (NestJS) :
- Client clique sur "Payer avec Wave" sur le frontend.
- Backend crée une transaction PENDING en DB avec un
internalIdunique. - Backend appelle
POST https://api.wave.com/v1/checkout/sessionsavec le montant, la devise (XOF), et unclient_reference=internalId. - Wave renvoie une URL de paiement. Backend la transmet au frontend.
- Frontend redirige le client vers cette URL → paiement dans l'app Wave du client.
- Wave appelle votre webhook
/api/payments/wave/webhookavec le résultat signé. - Backend vérifie la signature, met à jour la transaction en SUCCESS, déclenche la livraison / activation du service.
Pour Orange Money et Free Money, le principe est identique. Seules diffèrent les URL d'endpoints et les conventions de signature.
Côté coûts d'intégration
Voici les ordres de grandeur observés à Dakar pour intégrer mobile money sur un site existant :
| Périmètre | Prix (FCFA) | Délai |
|---|---|---|
| Wave uniquement (checkout simple) | 400 K – 700 K | 2 sem. |
| Wave + Orange Money | 700 K – 1,2 M | 3-4 sem. |
| Wave + OM + Free Money + Stripe | 1,2 M – 2 M | 4-6 sem. |
| Fintech complète (wallet, P2P, KYC) | 6 M+ | 3-6 mois |
Ces fourchettes sont cohérentes avec notre offre fintech & banque à Dakar.
Aspects réglementaires BCEAO à ne pas négliger
Au-delà du code, vos opérations doivent respecter le cadre BCEAO et UEMOA :
- Conserver les logs de transactions pendant 10 ans (loi anti-blanchiment).
- Mettre en place un dispositif KYC/AML dès que vous gérez des comptes utilisateurs avec montants > 200 000 FCFA / mois.
- Déclarer les opérations suspectes à la CENTIF (Cellule Nationale de Traitement des Informations Financières).
- Publier des CGU conformes au droit sénégalais (loi 2008-12 sur les transactions électroniques).
Pour un simple site e-commerce avec paiement mobile, ces obligations sont légères. Pour un projet fintech (wallet, transferts P2P, cash-out), elles deviennent structurantes et doivent être pensées dès la phase d'architecture.
FAQ — Intégration mobile money au Sénégal
Combien de temps pour intégrer Wave sur un site existant ? 1 à 2 semaines de développement côté backend + frontend, à condition d'avoir déjà obtenu les accès API Wave Business (compter 3 à 7 jours en plus).
Peut-on tester Wave / Orange Money en sandbox avant la prod ? Oui pour Wave (environnement de test fourni officiellement). Plus compliqué pour Orange Money : il faut souvent passer en prod sur des petits montants réels (100 à 500 FCFA) pour valider l'intégration.
Quelle est la commission marchand Wave en 2026 ? 1 % du montant de la transaction côté marchand, gratuit côté client. À comparer aux 1,5 à 2 % d'Orange Money et aux 1,4 à 2,9 % + 0,25 € de Stripe.
Faut-il une licence pour accepter mobile money ? Pas pour un site marchand classique avec compte business Wave/OM/Free. Oui pour un acteur fintech qui gère des wallets utilisateurs ou des transferts P2P : il faut une licence EME délivrée par la BCEAO.
Comment gérer les remboursements Wave / Orange Money ? Wave gère les refunds via API. Orange Money se fait souvent manuellement via le portail marchand — c'est un point d'attention si vous avez un volume important de retours.
Peut-on intégrer mobile money dans une app React Native ? Oui, via WebView pour la redirection vers les apps de paiement, ou via deep links natifs pour Wave. Nous le faisons couramment sur les projets applications mobile à Dakar.
Conclusion : commencez tôt, signez avant de coder
Mobile money est moins compliqué que la carte bancaire côté technique, mais plus long côté administratif. Un projet qui démarre les démarches Orange Money en même temps que le développement est presque garanti de prendre 2 mois de retard.
Notre conseil : dès qu'un projet implique du paiement au Sénégal, on lance les démarches contractuelles dès la semaine 1 — le code peut attendre, les accords avec Sonatel, non.
Vous lancez un projet avec paiement mobile à Dakar ? Notre équipe a intégré Wave, Orange Money et Stripe sur plusieurs projets sénégalais. Demandez un audit gratuit ou découvrez nos services fintech à Dakar.
Vous avez un projet ?
Discutons de votre projet en 30 minutes
Devis gratuit en 48h, sans engagement. Notre équipe à Dakar étudie votre besoin et propose une approche concrète.