moniewaves
Sandbox ouverte

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
col_3f9c1e2a7b4d5 000 XAF
Terminée
Opérateur
MTN Mobile Money
Client
237 690 000 001
Commission
100 XAF
Net pour vous
4 900 XAF
Historique des événements
  1. Acceptée — demande enregistrée14:02:11
  2. Transmise à l’opérateur14:02:12
  3. Terminée — confirmée par interrogation14:02:19
Webhook livré
POST /your-endpoint
MoniWave-Signature: t=1755…,v1=9f3c…

{ "event": "collection.completed",
  "id": "evt_8c2f…", "amount": 5000 }
Rails
MTN Mobile Moneyen bac à sableOrange MoneyensuiteIntégrations directes — aucun agrégateur intermédiaire.
Où nous en sommes

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.
Intégration

Trois étapes jusqu'au premier paiement

Rien à signer pour commencer : la clé de test est créée avec votre compte.

  1. 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. 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. 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"
  }'
Encaisser 5 000 FCFA auprès d'un client MTN, dans la sandbox.
Fonctionnalités

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.

Voir toutes les fonctionnalités
Voies d’accès

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é.

01

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.

Disponible
02

Page 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.

Disponible
03

SDK 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 cours
04

Plugins e-commerce

Un plugin WooCommerce d’abord, pour qu’une boutique encaisse en Mobile Money sans écrire une ligne de code.

Prévu
Cycle de vie d’une transaction

Un 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.

Acceptéeenregistrée, pas encore envoyéeTransmisechez l’opérateurTerminéeconfirmée par interrogationÉchouéerefusée, ou solde insuffisantExpiréele client n’a jamais réponduterminal

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.

Bac à sable

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 testProduit toujours
237 690 000 001Réussit dès la première interrogation de statut
237 690 000 002Reste 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 005Reste en attente indéfiniment — exerce l’expiration
237 690 000 006Rejeté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 test
Garanties

Conç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.

Obtenir une clé de test
Comment l’argent est tenu

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.

Règlement

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.

  1. 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.

  2. 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.

  3. 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.

Architecture

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èreVia un agrégateurMoniWave
Sauts jusqu’à l’opérateurDeux 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 direSouvent « 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 litigeCe 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’erreurRéécrits, et susceptibles de changer sans nouvelle version.Contractuels et stables — en changer un exige une nouvelle version de l’API.
CommissionsDeux 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.
Couverture

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

  1. Bac à sable public

    Fait

    Inscription en autonomie, une clé de test en un appel, des résultats déterministes.

  2. Tableau de bord marchand

    Fait

    Transactions, soldes, clés d’API, équipe et journal de livraison des webhooks, dans les deux langues.

  3. SDK et plugins

    En cours

    Node et PHP d’abord, puis un plugin WooCommerce.

  4. Agrément

    À venir

    L’é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.

  5. MTN Mobile Money en production

    À venir

    Même API, mêmes webhooks — vous changez l’URL de base et la clé.

  6. Orange Money en production

    À venir

    Le second opérateur sur la même interface de connecteur.

Tarifs

Tarifs

Vous ne payez que les paiements réussis. Un échec ou une expiration ne coûte rien.

0 XAFpour tout le bac à sable, sans limite de durée

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 grille
Cas d’usage

Pour 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

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.