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. La page hébergée propose tous les canaux disponibles pour la devise demandée et ne choisit rien à la place du client. 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 ng.mtnCM, CI, BJ, GH, UG, RW, NGXAF, XOF, GHS, UGX, RWF, NGN
Orange MoneyOrange Moneycm.orange ci.orange sn.orange bf.orange cd.orangeCM, CI, SN, BF, CDXAF, XOF, CDF
WaveWaveci.waveCIXOF
Airtel MoneyAirtel Moneyug.airtel rw.airtel tz.airtel cd.airtel ga.airtel gh.airtelUG, RW, TZ, CD, GA, GHUGX, RWF, TZS, CDF, XAF, GHS
Moov MoneyMoov Moneyci.moov bj.moov bf.moovCI, BJ, BFXOF
M-PesaM-Pesake.mpesa ke.mpesa_tillKEKES

Plusieurs pays proposent d'autres opérateurs que les six ci-dessus : Express Union et Yoomee au Cameroun, Free au Sénégal, Vodafone et AirtelTigo au Ghana, Vodacom, Tigo, Halopesa, Equitel et T-Kash plus à l'est. Wajub expose aussi des canaux agrégés comme cm.mobile, qui permet de déduire l'opérateur à partir du numéro plutôt que de le choisir à l'avance.

`GET /channels` fait foi

La couverture évolue, et ce qui est activé sur votre compte dépend des prestataires que votre équipe a activés. Considérez le tableau ci-dessus comme la forme de l'offre et GET /channels comme la vérité pour votre propre compte : cet appel ne demande aucune permission particulière et répond la même chose pour chaque clé. Un nouveau canal est un changement rétrocompatible, il ne casse donc jamais une intégration existante.

Cartes bancaires

Visa et Mastercard avec 3-D Secure 2, 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 chaque transaction
MastercardMastercardmastercard3-D Secure 2 sur chaque transaction

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

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.

Douze actifs sont acceptés, sur les principales blockchains et les deux stablecoins en dollar :

ActifCanal
BitcoinBitcoincrypto.btc
EthereumEthereumcrypto.eth
TetherTethercrypto.usdt
USD CoinUSD Coincrypto.usdc
BNBBNBcrypto.bnb
SolanaSolanacrypto.sol
XRPXRPcrypto.xrp
CardanoCardanocrypto.ada
LitecoinLitecoincrypto.ltc
PolygonPolygoncrypto.matic
DogecoinDogecoincrypto.doge
TRONTRONcrypto.trx

Ceux que vos clients voient réellement dépendent du prestataire crypto activé sur votre compte : lisez donc GET /channels avant de construire un sélecteur, plutôt que de supposer que les douze sont actifs.

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 Union, YoomeeOui
Côte d'IvoireCôte d'IvoireXOFMTN, Orange, Wave, MoovOui
SénégalSénégalXOFOrange, FreeOui
BéninBéninXOFMTN, Moov, GloOui
Burkina FasoBurkina FasoXOFOrange, MoovOui
TogoTogoXOFMoovOui
MaliMaliXOFOrangeOui
GhanaGhanaGHSMTN, Vodafone, AirtelTigoOui
NigeriaNigeriaNGNMTNOui
KenyaKenyaKESM-Pesa, Airtel, Equitel, T-KashOui
OugandaOugandaUGXMTN, AirtelOui
RwandaRwandaRWFMTN, AirtelOui
TanzanieTanzanieTZSVodacom, Airtel, Tigo, HalopesaOui

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. Un paiement au-dessus n'est pas refusé : la page hébergée 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.

Vous ne pouvez pas restreindre la liste par paiement

Il n'existe pas de paramètre channels sur POST /payments : la page hébergée affiche donc toujours tout ce qui est disponible pour la devise. Pour passer complètement l'écran de sélection, ne créez pas le paiement autrement : débitez-le vous-même avec POST /payments/{id} et un channel, c'est le parcours API directe décrit dans Choisir une intégration.

Que pensez-vous de ce contenu ?