Aller au contenu

Moyens de paiement et canaux

Chaque moyen de paiement avec lequel Wajub encaisse, son identifiant de canal et où il fonctionne.

Wajub encaisse via cinq familles de moyens de paiement, derrière une seule API. Chacune est désignée par un canal, et un canal est soit une famille à part entière, mobile, card, bank ou crypto, soit un opérateur précis au format country.operator.

Vous avez rarement besoin d'en nommer un. Par défaut, la page hébergée propose tous les canaux sur lesquels votre compte peut encaisser, quelle que soit la devise, et ne choisit rien à la place du client. Vous pouvez réduire cette liste paiement par paiement avec accept. Nommer un canal, c'est ce que fait l'API directe, quand vous avez déjà collecté le numéro vous-même.

Comment lire un canal

cm.mtn correspond à MTN Mobile Money au Cameroun, sn.wave à Wave au Sénégal. Le préfixe est le code pays ISO 3166-1 alpha-2 et le suffixe l'opérateur. Un nom de famille seul, comme mobile, laisse Wajub déduire l'opérateur à partir du numéro de téléphone.

Mobile Money

La colonne vertébrale de l'encaissement sur le continent. Le client valide sur son propre téléphone, depuis une invite USSD ou l'application de l'opérateur, et rien n'est encaissé tant qu'il ne l'a pas fait.

OpérateurCanauxPaysDevises
MTN MoMoMTN MoMocm.mtn ci.mtn bj.mtn gh.mtn ug.mtn rw.mtn zm.mtn cg.mtn gn.mtn lr.mtnCM, CI, BJ, GH, UG, RW, ZM, CG, GN, LRXAF, XOF, GHS, UGX, RWF, ZMW, GNF, LRD
Orange MoneyOrange Moneycm.orange ci.orange sn.orange bf.orange ml.orange gn.orange cd.orange. Bientôt disponible : sl.orangeCM, CI, SN, BF, ML, GN, SL, CDXAF, XOF, GNF, SLL, CDF
WaveWaveci.wave sn.waveCI, SNXOF
Airtel MoneyAirtel Moneyug.airtel rw.airtel tz.airtel ke.airtel zm.airtel mw.airtel cd.airtel cg.airtel ga.airtelUG, RW, TZ, KE, ZM, MW, CD, CG, GAUGX, RWF, TZS, KES, ZMW, MWK, CDF, XAF
Moov MoneyMoov Moneyci.moov bj.moov bf.moov tg.moov ml.moov ga.moovCI, BJ, BF, TG, ML, GAXOF, XAF
M-PesaM-Pesake.mpesa tz.mpesa mz.mpesaKE, TZ, MZKES, TZS, MZN

D'autres opérateurs complètent le catalogue : Express Union au Cameroun (cm.eu), Free au Sénégal, T-Money au Togo, Vodafone et AirtelTigo au Ghana, Tigo et Halopesa en Tanzanie, Vodacom et Africell en RD Congo, Zamtel en Zambie, TNM au Malawi, Vodafone Cash en Égypte et Capitec Pay en Afrique du Sud.

mobile et cm.mobile, pour le Cameroun, ne sont pas des canaux du catalogue. Ce sont les deux raccourcis qu'accepte l'appel de débit, pour laisser Wajub déduire l'opérateur à partir du numéro plutôt que de le nommer à l'avance. Aucun autre pays n'a d'agrégat : débitez le canal de son opérateur.

`GET /providers` donne la liste de votre compte

La couverture évolue. GET /channels est le catalogue global : tous les canaux pris en charge par Wajub, la même réponse pour chaque clé, filtrée par country si vous le passez. Ce que votre propre compte peut accepter dépend des prestataires que votre équipe a activés, et c'est GET /providers : chaque connexion active avec les canaux qu'elle propose réellement, ceux qu'affiche le checkout hébergé. Considérez le tableau ci-dessus comme la forme de l'offre. Un nouveau canal est un changement rétrocompatible, il ne casse donc jamais une intégration existante.

Cartes bancaires

Visa et Mastercard, proposées sur la page hébergée partout où la devise de règlement le permet.

RéseauDétecté commeRemarques
VisaVisavisa3-D Secure 2 sur demande
MastercardMastercardmastercard3-D Secure 2 sur demande

Le canal est card pour les deux réseaux. Vous ne nommez jamais la marque : Wajub la lit à partir du numéro de carte pour router le paiement. C'est aussi ainsi qu'American Express, Discover, Diners, JCB et Maestro sont reconnues lorsqu'un prestataire les accepte. Le paiement lui-même ne porte aucun champ card.brand.

Wajub demande le 3-D Secure quand Shield l'exige : l'Auto 3DS de Shield Advanced à partir de votre seuil de revue, ou une règle challenge_3ds. Sinon, le prestataire et l'émetteur de la carte appliquent leur propre politique.

Virements bancaires

Pour les gros montants, surtout entre entreprises. Le client reçoit des coordonnées bancaires, et le paiement passe à succeeded une fois les fonds arrivés.

TypeCanalPays
Virement nationalVirement nationalbankCM, CI, SN, NG, GH

Un virement se règle au rythme de la banque, pas à celui du client. Attendez-vous à un délai entre le moment où il confirme et celui où le webhook est déclenché, et ne gardez jamais une commande ouverte dans le navigateur en l'attendant.

Portefeuilles

Apple Pay et Google Pay tokenisent la carte sur l'appareil : Wajub ne voit donc jamais la carte en clair ni les identifiants de l'appareil.

Portefeuille`wallet_type`Nécessite
Apple PayApple Payapple_paySafari, iOS
Google PayGoogle Paygoogle_payChrome, Android

Cryptomonnaies

Le paiement est réglé une fois le transfert confirmé sur la blockchain. Les canaux suivent le format crypto.{asset}, et si vous ne fournissez pas de wallet_address, le payeur voit une adresse de dépôt vers laquelle envoyer les fonds.

Quatre actifs figurent au catalogue, les deux stablecoins en dollar et les deux principales blockchains :

ActifCanal
BitcoinBitcoincrypto.btc
EthereumEthereumcrypto.eth
TetherTethercrypto.usdt
USD CoinUSD Coincrypto.usdc

L'API accepte aussi crypto.bnb, crypto.sol, crypto.xrp, crypto.ada, crypto.ltc, crypto.matic, crypto.doge et crypto.trx comme channel, mais aucun prestataire du catalogue ne les prend en charge. Ceux que vos clients voient réellement parmi les quatre dépendent du prestataire crypto activé sur votre compte : lisez donc GET /providers avant de construire un sélecteur.

La crypto est bientôt disponible

Aucun prestataire portant ces quatre actifs ne peut encore être connecté : aucun compte ne peut donc les débiter en live aujourd'hui. Couverture liste les autres rails dans la même situation.

Où en est chaque pays

La devise décide des canaux qui existent, et les prestataires du compte décident lesquels sont activés.

PaysDeviseMobile MoneyCartes
CamerounCamerounXAFMTN, Orange, Express UnionOui
Côte d'IvoireCôte d'IvoireXOFMTN, Orange, Wave, MoovOui
SénégalSénégalXOFOrange, Wave, FreeOui
BéninBéninXOFMTN, MoovOui
Burkina FasoBurkina FasoXOFOrange, MoovOui
TogoTogoXOFT-Money, MoovOui
MaliMaliXOFOrange, MoovOui
GhanaGhanaGHSMTN, Vodafone, AirtelTigoOui
NigeriaNigeriaNGNAucun. Virement bancaire, USSD, OPay et PalmPay à la placeOui
KenyaKenyaKESM-Pesa, AirtelOui
OugandaOugandaUGXMTN, AirtelOui
RwandaRwandaRWFMTN, AirtelOui
TanzanieTanzanieTZSM-Pesa, Airtel, Tigo, HalopesaOui
GabonGabonXAFAirtel, MoovOui
CongoCongoXAFMTN, AirtelOui
RD CongoRD CongoCDFOrange, Airtel, Vodacom, AfricellOui
GuinéeGuinéeGNFMTN, OrangeOui
LiberiaLiberiaLRDMTNOui
Sierra LeoneSierra LeoneSLLOrangeOui
ZambieZambieZMWMTN, Airtel, ZamtelOui
MalawiMalawiMWKAirtel, TNMOui
MozambiqueMozambiqueMZNM-PesaOui

Choisir ce qu'un paiement accepte

Rien n'est masqué par défaut : le payeur voit tous les moyens sur lesquels votre compte peut encaisser, et un paiement dans une devise que le portefeuille n'utilise pas est converti, comme décrit dans Limites. Pour réduire la liste, envoyez accept à la création du paiement, du lien ou de la facture. Chaque clé est facultative, et une clé omise ne restreint rien.

accept.countriesstring[]facultatif
Uniquement les canaux de ces pays, en codes ISO 3166-1 alpha-2. Les cartes et la crypto n'appartiennent à aucun pays : cette clé ne les retire jamais.
accept.channelsstring[]facultatif
Uniquement ces canaux, comme cm.mtn. Un agrégat comme cm.mobile désigne tous les opérateurs mobiles du pays, et mobile tous les opérateurs mobiles.
accept.typesstring[]facultatif
Uniquement ces types de canal, comme mobile_money ou card.
accept.currenciesstringfacultatif
any (par défaut) propose tous les canaux et convertit le montant quand les devises diffèrent. payment ne garde que les canaux qui règlent dans la devise du paiement : un paiement en XAF n'affiche plus le Mobile Money kényan.
Un paiement en USD, Mobile Money camerounais uniquement
{
"amount": 99.5,
"currency": "USD",
"email": "[email protected]",
"accept": {
"countries": [
"CM"
],
"types": [
"mobile_money"
]
}
}

La restriction est conservée sur le paiement et s'applique deux fois : la page ne propose que ce qu'elle autorise, et un débit qui nomme un autre canal est refusé par un 422 et le code channel_not_accepted. Si accept ne laisse aucun moyen de payer, c'est la création elle-même qui répond 422 sur accept, plutôt que de produire une page sans aucun moyen de paiement.

Un débit envoyé sur mobile ou sur cm.mobile est vérifié sur l'opérateur que donne le numéro, pas sur l'agrégat. Avec la restriction ci-dessus, cm.mobile et un numéro MTN Cameroun est débité sur cm.mtn, et un numéro ivoirien est refusé. Un paiement restreint à "channels": ["mobile"] accepte tout opérateur Mobile Money, quel que soit celui que donne le numéro, et aucun canal carte, bancaire ou crypto.

Un lien ou une facture porte son propre accept, que chaque paiement ouvert depuis lui hérite. Sur un lien ou une facture, accept: {} supprime la restriction. Dans le Dashboard, les mêmes champs se trouvent sous Moyens de paiement, dans le composer de lien et sur le formulaire de facture.

Prévisualiser les moyens avant de créer un paiement

GET /payments/options liste les canaux qu'un payeur pourrait utiliser pour une devise et un montant, avant qu'aucun paiement n'existe : ceux que votre compte propose sur la page de paiement, restreints au country du payeur et au minimum et au maximum de chaque canal. Il prend la même restriction accept que POST /payments. Servez-vous-en pour dessiner votre propre choix de moyen de paiement ; une fois le paiement créé, c'est lui qui fixe ce qui est réellement proposé au payeur.

Moyens pour 25 000 XAF au Cameroun
curl "https://api.wajub.com/payments/options?currency=XAF&amount=25000&country=CM&locale=fr" \
  -H "Authorization: sk_test.xxxxxxxxxxxxxxxx…"

La réponse porte code, status, message et channels : chacun avec son slug, name, name.fr, type, logo et countries, et operators pour cm.mobile. Lister les options de paiement

Montants et plafonds

Deux limites différentes s'appliquent au même paiement, et elles sont faciles à confondre.

La première concerne le paiement lui-même. En XAF et XOF, il doit être compris entre 25 et 2 000 000 ; en dehors de cette plage, l'appel de création est refusé avec un 422 qui indique la borne dans errors.amount.

La seconde est ce qu'un seul débit Mobile Money peut porter, plafonné à 500 000 XAF, et au même montant en XOF. En live, un paiement au-dessus est refusé avec un 422 au moment de le débiter. Seule la sandbox l'encaisse en tranches successives, et c'est la seule situation où un paiement reste en partial. Consultez le cycle de vie d'un paiement pour comprendre ce que signifie cet état.

Que pensez-vous de ce contenu ?