L'API de paiement pour l'Afrique centrale
Encaissez et versez par Mobile Money au Cameroun, avec une intégration directe aux opérateurs. Testez dès aujourd'hui dans la sandbox : inscription libre, rien à signer, aucun frais.
- 2
- Opérateurs, intégrés en direct
- XAF
- Franc CFA d’Afrique centrale
- FR / EN
- Chaque écran, dans les deux langues
- 6
- Numéros de test déterministes
- Opérateur
- MTN Mobile Money
- Client
- 237 690 000 001
- Commission
- 100 XAF
- Net pour vous
- 4 900 XAF
- Acceptée — demande enregistrée14:02:11
- Transmise à l’opérateur14:02:12
- Terminée — confirmée par interrogation14:02:19
POST /your-endpoint
MoniWave-Signature: t=1755…,v1=9f3c…
{ "event": "collection.completed",
"id": "evt_8c2f…", "amount": 5000 }Ce qui est vrai aujourd’hui, et ce qui ne l’est pas
Nous préférons que vous trouviez les limites ici plutôt qu’après une journée d’intégration.
- Français et anglais
- Chaque écran vu par un marchand ou un client existe dans les deux langues. Le français est la référence, pas une traduction ajoutée après coup.
- Intégration directe
- MTN Mobile Money, puis Orange Money — sans agrégateur intermédiaire entre vous et l'opérateur.
- Sandbox déterministe
- Des numéros de test qui produisent toujours le même résultat : succès, refus, solde insuffisant, expiration.
- Contrat publié
- Une API versionnée /v1 et documentée, dont les codes d'erreur ne changent pas sans nouvelle version.
Trois étapes jusqu'au premier paiement
Rien à signer pour commencer : la clé de test est créée avec votre compte.
- 1
Créez votre compte
Inscription en libre-service. Votre espace et votre première clé sk_test_ existent immédiatement, sans intervention de notre part.
- 2
Appelez l'API
Une requête pour encaisser : le montant, la devise et le numéro du client. Une clé d'idempotence rend l'appel rejouable sans double débit.
- 3
Recevez le résultat
Un webhook signé vous prévient, et le statut reste interrogeable à tout moment — la notification n'est jamais la seule source de vérité.
curl -X POST https://api-sandbox.moni-wave.com/v1/collections \
-H "Authorization: Bearer sk_test_…" \
-H "Idempotency-Key: 3f9c1e2a-7b4d-4a1f-9c8e-2d6b5a0f3e11" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "XAF",
"msisdn": "237690000001",
"description": "Commande #1042"
}'Ce que vous pouvez construire
Une seule API pour l'argent qui entre, l'argent qui sort et tout ce qu'il faut pour en garder la trace.
Encaissements
Débiter le portefeuille mobile d'un client, avec confirmation sur son téléphone.
Versements
Envoyer de l'argent vers un portefeuille mobile, à l'unité ou en lot.
Remboursements
Rembourser tout ou partie d'un encaissement, sans appeler personne.
Page de paiement
Un lien à envoyer au client quand vous ne connaissez pas son numéro.
Webhooks
Des notifications signées, réessayées, et rejouables depuis le tableau de bord.
Tableau de bord
Transactions, soldes, clés, équipe et journal des notifications.
Quatre façons de vous connecter
De l’appel HTTP brut au plugin à installer — la même API en dessous, donc passer de l’un à l’autre ne change rien à la manière dont l’argent est traité.
API REST
Des points de terminaison /v1 versionnés, décrits en OpenAPI, sans SDK obligatoire. Si vous savez faire une requête HTTP, vous savez encaisser.
DisponiblePage de paiement hébergée
Créez une session, envoyez le lien au client. Il choisit son opérateur et saisit son numéro sur une page que nous hébergeons : vous n’y touchez jamais.
DisponibleSDK serveur
Bibliothèques Node et PHP générées à partir de la même description OpenAPI que la documentation : elles ne peuvent pas s’écarter du contrat.
En coursPlugins e-commerce
Un plugin WooCommerce d’abord, pour qu’une boutique encaisse en Mobile Money sans écrire une ligne de code.
PrévuUn statut auquel vous pouvez vous fier
L’essentiel de la douleur d’intégration vient d’une passerelle qui dit « succès » quand elle veut dire « nous l’avons envoyé ». Ici le statut est reconstitué à partir d’un flux d’événements immuable, et les trois états terminaux sont absorbants : on n’en sort jamais.
Un rappel de l’opérateur est enregistré comme une affirmation, jamais comme une vérité — seule une interrogation de statut rend une issue définitive. C’est pourquoi un webhook manquant ne vous laisse jamais dans le doute, et pourquoi un rappel tardif en double ne peut pas rouvrir une transaction déjà réglée.
Six numéros, six résultats, à chaque fois
Le bac à sable est déterministe et non aléatoire : chaque numéro de test produit toujours le même résultat. Un test qui échoue signifie donc que votre code a changé, pas que le faux opérateur était d’humeur différente.
| Numéro de test | Produit toujours |
|---|---|
| 237 690 000 001 | Réussit dès la première interrogation de statut |
| 237 690 000 002 | Reste en attente ~10 s puis réussit — exerce votre boucle d’interrogation |
| 237 690 000 003 | Échoue : le payeur a refusé l’invite |
| 237 690 000 004 | Échoue : solde insuffisant |
| 237 690 000 005 | Reste en attente indéfiniment — exerce l’expiration |
| 237 690 000 006 | Rejetée à la soumission : abonné non enregistré |
Ces numéros font partie du contrat public du bac à sable. Les marchands écrivent des tests contre eux : en modifier un serait une rupture de compatibilité et est traité comme telle. Tout autre numéro se comporte comme la première ligne.
Obtenir une clé de testConçu pour les développeurs
Les garanties qui comptent lorsqu'il s'agit d'argent, écrites dans le contrat plutôt que promises.
Idempotence obligatoire
Chaque requête qui déplace de l'argent porte une clé : la rejouer renvoie la réponse d'origine.
Webhooks signés
Signature HMAC-SHA256 par marchand, avec une implémentation de référence pour la vérifier.
Le statut se confirme
Une notification de l'opérateur est un indice ; seule une interrogation de statut fait foi.
Un contrat versionné
Les codes d'erreur sont stables ; les modifier imposerait une nouvelle version.
Conçu comme un grand livre, pas comme un formulaire
Ce qui détermine si l’argent est juste n’a pas été ajouté après coup — c’est la forme même du système.
Comptabilité en partie double
Chaque mouvement est un ensemble d’écritures dont la somme est nulle. Un solde se déduit, ne se modifie jamais, et ne peut donc pas contredire son historique en silence.
Historique événementiel
Le journal d’audit est la source de vérité, pas une copie. Le statut en est reconstitué, si bien que l’enregistrement et la réalité ne peuvent pas diverger.
Webhooks signés
HMAC-SHA256 avec un secret propre à chaque marchand et un horodatage : vous vérifiez qu’une notification vient bien de nous et n’est pas un rejeu.
Clés d’API hachées
Les clés sont stockées en empreinte SHA-256 et affichées en clair une seule fois, à la création. Nous ne pouvons pas retrouver la vôtre, et c’est voulu.
Plan de données privé
La base de données n’a aucun point d’accès public et n’est joignable que par liaison privée depuis l’application, jamais depuis Internet.
Hébergement régional
Exécuté sur Azure South Africa North, la région la plus proche du marché CEMAC disposant de trois zones de disponibilité.
Nous n’affichons pas de certifications que nous n’avons pas obtenues. PCI DSS ne s’applique pas tant qu’aucune donnée de carte n’est traitée, et toute certification obtenue sera nommée ici avec son périmètre, pas affichée comme un badge.
Où l’argent se trouve, et quand il bouge
Les encaissements ne disparaissent pas dans une réserve opaque : chacun est porté à votre solde dès sa confirmation, et l’écriture est visible.
- 01
Un encaissement aboutit
Dès qu’une interrogation de statut le confirme, le grand livre enregistre le brut, la commission et le net — de façon atomique avec l’événement terminal, pour que les deux ne puissent jamais diverger.
- 02
Votre solde se met à jour
Les fonds disponibles évoluent en temps réel, visibles dans le tableau de bord et via l’API. Un versement est vérifié contre eux avant d’être soumis.
- 03
Vous versez
Vers n’importe quel portefeuille mobile, à l’unité ou en lot. Un versement ne part jamais contre un solde qui n’existe pas.
Des rails directs, pas un agrégateur d’agrégateurs
L’essentiel de ce qui se vend localement est une couche par-dessus les intégrations d’autrui. C’est une façon légitime de démarrer vite, et cela change ce qu’on peut vous dire quand quelque chose se passe mal.
| Critère | Via un agrégateur | MoniWave |
|---|---|---|
| Sauts jusqu’à l’opérateur | Deux ou plus, chacun pouvant expirer ou transformer une erreur. | Un seul. Nous détenons le contrat opérateur et le connecteur. |
| Ce que « succès » veut dire | Souvent « l’amont l’a accepté », ce qui n’est pas la même chose que le client a payé. | Confirmé par une interrogation auprès de l’opérateur, jamais par un simple rappel. |
| Preuves en cas de litige | Ce que la couche intermédiaire a bien voulu conserver, à demander par e-mail. | Chaque échange avec l’opérateur est journalisé et rattaché à la transaction. |
| Codes d’erreur | Réécrits, et susceptibles de changer sans nouvelle version. | Contractuels et stables — en changer un exige une nouvelle version de l’API. |
| Commissions | Deux marges empilées : celle de l’opérateur et celle de l’agrégateur. | Une seule. Il n’y a personne d’autre à rémunérer dans la chaîne. |
Le Cameroun d’abord, la CEMAC ensuite
Une zone monétaire, une monnaie, six pays. Les rails y sont les mêmes, ce qui fait de l’expansion un connecteur plutôt qu’une reconstruction.
Pays
- CamerounMarché de lancement
- GabonPrévu
- République du CongoPrévu
- TchadPrévu
- République centrafricainePrévu
- Guinée équatorialePrévu
Les six partagent le franc CFA d’Afrique centrale (XAF) : un marchand qui intègre une fois ne réintègre pas pays par pays.
Ce qui est fait, ce qui suit
Bac à sable public
FaitInscription en autonomie, une clé de test en un appel, des résultats déterministes.
Tableau de bord marchand
FaitTransactions, soldes, clés d’API, équipe et journal de livraison des webhooks, dans les deux langues.
SDK et plugins
En coursNode et PHP d’abord, puis un plugin WooCommerce.
Agrément
À venirL’étape réglementaire qui doit précéder l’argent réel. Elle ne dépend pas de notre calendrier, donc aucune date n’est promise ici.
MTN Mobile Money en production
À venirMême API, mêmes webhooks — vous changez l’URL de base et la clé.
Orange Money en production
À venirLe second opérateur sur la même interface de connecteur.
Tarifs
Vous ne payez que les paiements réussis. Un échec ou une expiration ne coûte rien.
Grille tarifaire en cours de finalisation : les montants ci-dessous seront publiés avant l'ouverture des paiements réels. Nous préférons une case vide à un chiffre que personne n'a encore validé.
Voir la grillePour qui
L’API est la même pour tous ; voici les usages contre lesquels elle est conçue.
- Commerce en ligneCommerce en ligne : encaisser à la commande, rembourser sans appeler personne.
- Logiciels et abonnementsLogiciels et abonnements : encaissements répétés et réconciliation automatique.
- Places de marchéPlaces de marché : encaisser d'un côté, verser aux vendeurs de l'autre.
- Jeux et parisJeux et paris : volumes élevés, versements rapides, statut fiable.
Questions fréquentes
Y compris celles qu’une page d’accueil évite d’habitude.
Puis-je encaisser de vrais paiements aujourd'hui ?
Pas encore. La sandbox est ouverte et reproduit fidèlement le comportement de production ; les paiements réels suivront la mise en place de nos agréments et de nos accords opérateurs.
Comment passe-t-on en production ?
En changeant l'URL de base et la clé. Rien d'autre ne bouge : mêmes requêtes, mêmes réponses, mêmes webhooks.
Quels opérateurs sont couverts ?
MTN Mobile Money d'abord, Orange Money ensuite, par intégration directe plutôt que via un agrégateur.
Comment obtenir de l'aide ?
Écrivez-nous : nous répondons en français comme en anglais, et la documentation technique est publique.
Combien coûtent les tests ?
Rien, sans limite de durée. Le bac à sable est gratuit parce que c’est là que vous décidez s’il vaut la peine d’intégrer, et un essai qui expire en pleine évaluation n’aide personne.
Que se passe-t-il si un webhook n’arrive jamais ?
Rien n’est perdu. La livraison est retentée huit fois avec des délais croissants, chaque tentative est journalisée et peut être relancée à la main, et le statut reste interrogeable — un webhook n’est donc jamais votre seul moyen de savoir.
Gérez-vous les paiements par carte ?
Non. Le Mobile Money est le moyen de paiement qui compte sur ce marché, et bien faire un rail vaut mieux que d’en faire plusieurs à moitié.
Qui est derrière MoniWave ?
Awumba, qui construit pour le marché CEMAC. Écrivez-nous et vous aurez une personne qui travaille dessus, pas une file de tickets.
Commencez dans la sandbox
Créez un compte, récupérez une clé de test et effectuez un premier encaissement simulé en quelques minutes.
Sans carte, sans contrat, sans appel commercial. L’inscription crée un espace de travail et une clé de test.