Payments
Encaissez mobile money et cartes avec une seule intégration.
Créez le paiement depuis votre serveur : Wajub choisit la connexion, porte la demande à l'opérateur et vous notifie du résultat. Si une connexion mobile money est en panne, Wajub essaie la suivante dans la même requête.
- Webhooks signés
- Idempotence intégrée
Ils encaissent avec Wajub
Pourquoi Wajub Payments
Tout ce qu'un encaissement demande, déjà construit.
Routage, bascule, webhooks et remboursements : Wajub s'en charge, et chaque étape se lit sur la fiche du paiement dans le Dashboard.
Aucun fournisseur dans votre code
Vous créez le paiement, Wajub choisit la connexion dès que le numéro du client est connu. L'API n'a pas de champ provider : ajoutez, retirez ou réordonnez vos connexions dans le Dashboard, sans redéployer.
Une panne ne coûte pas la vente
Si une connexion mobile money est en panne, Wajub essaie la suivante dans la même requête : votre client ne recommence rien. Si la connexion reçoit la demande puis reste muette, le paiement reste en attente, pour ne pas risquer un double débit.
Le résultat arrive sur votre serveur
Chaque événement du paiement part en webhook signé HMAC-SHA256. Si votre serveur répond en erreur ou ne répond pas, Wajub relance à intervalles croissants pendant 72 heures, et chaque livraison s'affiche sur la fiche du paiement.
Remboursez sans quitter le Dashboard
Remboursement total ou partiel, depuis la fiche du paiement ou par l'API. Vous choisissez qui paie les frais, et le client est prévenu.
Couverture
69 canaux de paiement dans 24 pays.
Votre application lance le paiement sur l'opérateur choisi par votre client. Chaque canal listé ici est disponible dans l'API, avec les connexions capables de le porter.
Afrique du Sud
Capitec Pay, EFT, QR
Bénin
MTN MoMo, Moov Money
Burkina Faso
Orange Money, Moov Money, Wave
Cameroun
MTN MoMo, Orange Money, Wave, Express Union
Congo-Brazzaville
MTN MoMo, Airtel Money
Congo-Kinshasa
MTN MoMo, Orange Money, Airtel Money, M-Pesa, Africell Money, Vodacom M-Pesa
Côte d’Ivoire
MTN MoMo, Orange Money, Moov Money, Wave, Djamo
Gabon
Airtel Money, Moov Money
Ghana
MTN MoMo, Telecel Cash, AirtelTigo Money
Guinée
MTN MoMo, Orange Money
Kenya
Airtel Money, M-Pesa
Liberia
MTN MoMo
Malawi
Airtel Money, TNM Mpamba
Mali
Orange Money, Moov Money
Mozambique
M-Pesa
Niger
Airtel Money, Moov Money
Nigeria
MTN MoMo, Débit de compte bancaire, Virement bancaire, Virement vers un compte dédié, USSD
Ouganda
MTN MoMo, Airtel Money, Wave
Rwanda
MTN MoMo, Airtel Money
Sénégal
Orange Money, Wave, Djamo, Free Money
Sierra Leone
Orange Money
Tanzanie
Airtel Money, M-Pesa, HaloPesa, Tigo Pesa, Vodacom M-Pesa, Zantel
Togo
Moov Money, T-Money, Togocel
Zambie
MTN MoMo, Airtel Money, Zamtel Money
Pour les développeurs
Deux appels pour encaisser, un webhook pour le confirmer.
Votre serveur crée le paiement, puis le lance sur le numéro de votre client. Wajub vous envoie un webhook signé dès que le paiement aboutit. En sandbox, les six derniers chiffres du numéro de test décident du résultat.
POST /paymentsCréer le paiement- Montant, devise, un contact du client (e-mail, téléphone ou identifiant client) et votre référence. Une clé d'idempotence évite un doublon si l'appel est rejoué.
POST /payments/{id}Lancer le paiement- Donnez le canal et le numéro du client. Wajub choisit la connexion qui porte ce canal, et la réponse contient le message à montrer à votre client pendant qu'il confirme.
payment.succeededRecevoir le webhook- Un événement signé arrive sur votre serveur dès que le paiement aboutit. S'il n'est pas reçu, Wajub le renvoie pendant 72 heures.
GET /payments/{id}Relire le paiement- Avant de livrer, relisez le paiement par son identifiant : c'est son statut qui fait foi.
import { Wajub } from '@wajub/node'
const wajub = new Wajub({ secretKey: process.env.WAJUB_SECRET_KEY! })
const payment = await wajub.payments.create(
{
amount: 15000,
currency: 'XAF',
phone: '+237677123456',
reference: 'order-4172',
},
{ idempotencyKey: 'order-4172' },
)
await wajub.payments.process(
payment.id,
{ channel: 'cm.mtn', data: { phone: '+237677123456' } },
{ idempotencyKey: 'charge-order-4172-1' },
)
// Webhook
const event = wajub.webhooks.constructEvent(rawBody, signature, timestamp)
const paid = await wajub.payments.retrieve(String(event.data.id))
if (paid.status === 'succeeded') await fulfil(paid.reference)Réponse202 Accepted
{"code": 202,"status": "Accepted","message": "Confirm the transaction on your phone.","transaction": {"id": "trx_7Hq2LmX9pR4tVb8KcN3w","status": "processing","channel": "cm.mtn"}}
WebhookX-Wajub-Signature
{"event": "payment.succeeded","data": {"id": "trx_7Hq2LmX9pR4tVb8KcN3w","reference": "order-4172","amount": 15000,"currency": "XAF","status": "succeeded"},"livemode": true}
Réponse202 Accepted
{"code": 202,"status": "Accepted","message": "Confirm the transaction on your phone.","transaction": {"id": "trx_7Hq2LmX9pR4tVb8KcN3w","status": "processing","channel": "cm.mtn"}}
WebhookX-Wajub-Signature
{"event": "payment.succeeded","data": {"id": "trx_7Hq2LmX9pR4tVb8KcN3w","reference": "order-4172","amount": 15000,"currency": "XAF","status": "succeeded"},"livemode": true}
Tarifs
Sans abonnement pour commencer, des paiements inclus à chaque plan.
Pay as you go n'a ni abonnement ni frais d'installation. Les paiements passés par vos connexions sont inclus jusqu'au quota du plan, puis facturés à l'unité. Sur le rail Wajub, une commission s'applique selon le plan.
| Fonctionnalité | Pay as you go0 $USVous ne payez que l'usage au-delà du quota | GrowthRecommandé17 $US/ moisFacturé chaque mois, sans engagement | Scale52 $US/ moisFacturé chaque mois, sans engagement | EnterpriseSur devis |
|---|---|---|---|---|
| Paiements inclus par mois | 200 | 1 000 | 5 000 | Illimité |
| Par paiement au-delà | 0,23 $US | 0,17 $US | 0,11 $US | 0,09 $US |
| Connexions | 2 | 6 | Illimité | Illimité |
| Limite d'API | 120 / min | 360 / min | 720 / min | Illimité |
| Commission rail Wajub | dès 2 % | dès 1,7 % | dès 1,5 % | dès 1,2 % |
Pay as you go
0 $US
Vous ne payez que l'usage au-delà du quota
- Paiements inclus par mois
- 200
- Par paiement au-delà
- 0,23 $US
- Connexions
- 2
- Limite d'API
- 120 / min
- Commission rail Wajub
- dès 2 %
Growth
Recommandé
17 $US
/ mois
Facturé chaque mois, sans engagement
- Paiements inclus par mois
- 1 000
- Par paiement au-delà
- 0,17 $US
- Connexions
- 6
- Limite d'API
- 360 / min
- Commission rail Wajub
- dès 1,7 %
Scale
52 $US
/ mois
Facturé chaque mois, sans engagement
- Paiements inclus par mois
- 5 000
- Par paiement au-delà
- 0,11 $US
- Connexions
- Illimité
- Limite d'API
- 720 / min
- Commission rail Wajub
- dès 1,5 %
Enterprise
Sur devis
- Paiements inclus par mois
- Illimité
- Par paiement au-delà
- 0,09 $US
- Connexions
- Illimité
- Limite d'API
- Illimité
- Commission rail Wajub
- dès 1,2 %
Abonnements et options facturés en FCFA, ou en euros par carte au taux fixe de 655,957 FCFA. Les montants dans votre devise sont indicatifs, au taux du jour.
Autres façons d'encaisser
Encaissez aussi au checkout et par lien.
Checkout et Link ouvrent les mêmes moyens de paiement et remontent dans le même Dashboard que vos paiements par l'API.
Checkout
Page de paiement hébergée par Wajub, à votre logo et à vos couleurs.
- Mobile money et cartes
- Français et anglais
Link
Encaissez avec un simple lien : produit, événement, collecte, don.
- 25 liens inclus, sans abonnement
- Mobile money et cartes
Questions fréquentes
Une autre question ? Parler à l'équipe
- Combien de temps prend l'intégration de Wajub Payments ?
- Deux appels et un webhook : vous créez le paiement, vous le lancez sur le numéro du client, puis vous vérifiez le webhook. Le guide de l'API directe le déroule en sandbox, de bout en bout.
- Quels sont les frais de transaction ?
- Sur le rail Wajub, une commission s'applique à chaque paiement selon votre plan. Avec vos propres connexions, votre fournisseur vous facture selon votre contrat, et Wajub facture l'abonnement et l'usage d'orchestration au-delà du quota inclus. Le détail est sur la page Tarifs.
- Dans quelles devises puis-je encaisser ?
- Une devise est encaissable dès que l'une de vos connexions porte un canal dans cette devise : XAF sur MTN MoMo au Cameroun, XOF sur Wave au Sénégal, par exemple. Le taux de change est figé au moment où le paiement est lancé.
- Comment confirmer qu'un paiement est bien réussi ?
- Côté serveur, avec GET /payments/{id} ou le webhook payment.succeeded. Le retour du client vers votre site sert à l'afficher, pas à livrer : une URL de retour peut être modifiée à la main.
- Puis-je utiliser ma clé secrète dans une application web ?
- Non, elle reste sur votre serveur. Une clé secrète utilisée depuis un navigateur est refusée, et son propriétaire est prévenu par email.
Encaissez votre premier paiement aujourd'hui.
Créez votre compte, lancez vos premiers paiements en sandbox avec des numéros de test, puis passez en production avec vos clés live.








