Aller au contenu

Wajub BuildersDevenez l'un des 50 membres fondateurs. Postuler 

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
DashboardWajubOpérateursVotre serveurVotre applicationPaiementsSuivez et gérez vos transactions clientsMoyen de paiementMontantStatut•••• 4242Visa12 000 FCFARéussi+237 680 •• •• 88MTN MoMo4 500 FCFAOrchestréRéussi+237 699 •• •• 72Orange Money27 500 FCFARéussi9:41Boutique NkoloCommande #4172Total15 000 FCFANuméro Mobile Money+237Payer 15 000 FCFA

Ils encaissent avec Wajub

  • Laravel Cameroun
  • Moniwa
  • Trelund
  • Komerxe
  • Goshen Tabernacle

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.

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

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

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

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

Voir tous les moyens de paiement 
  • 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.

Guide de l'API directe Référence de l'API 

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.

Voir tous les tarifs 
FonctionnalitéPay as you go0 $USVous ne payez que l'usage au-delà du quotaGrowthRecommandé17 $US/ moisFacturé chaque mois, sans engagementScale52 $US/ moisFacturé chaque mois, sans engagementEnterpriseSur devis
Paiements inclus par mois2001 0005 000Illimité
Par paiement au-delà0,23 $US0,17 $US0,11 $US0,09 $US
Connexions26IllimitéIllimité
Limite d'API120 / min360 / min720 / minIllimité
Commission rail Wajubdè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

    Découvrir Checkout 

  • Link

    Encaissez avec un simple lien : produit, événement, collecte, don.

    • 25 liens inclus, sans abonnement
    • Mobile money et cartes

    Découvrir Link 

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.