Prestataires et canaux
Les canaux qu'un payout peut utiliser et les conditions qui déterminent leur disponibilité.
Un canal désigne un opérateur dans un pays : cm.mtn correspond à MTN Cameroun et sn.wave à
Wave Sénégal. C'est le champ qui indique où l'argent est réellement envoyé. Il appartient au
bénéficiaire, et non au payout, et reste donc fixé dès la création de la destination.
Nommer un canal ne garantit pas que vous puissiez y envoyer un payout. La liste ci-dessous indique ce que l'API accepte. L'exécution réelle dépend de votre compte.
Conditions à remplir
Un payout passe quatre contrôles distincts avant même d'atteindre un opérateur. Chacun renvoie son propre message.
| Contrôle | Refus avec |
|---|---|
| Le slug correspond à un canal de payout connu de Wajub | 422 The selected beneficiary.channel is invalid. |
| Un circuit peut techniquement effectuer un décaissement sur ce canal | 422 No payout provider is available for this channel and currency. |
| Ce circuit est approuvé pour les payouts live | Le même message |
| Votre compte l'a configuré dans cette devise et son circuit est fermé | Le même message |
Les trois derniers contrôles renvoient volontairement la même erreur : un marchand n'a pas à savoir quel circuit de Wajub est en panne. En pratique, un canal peut figurer dans le tableau ci-dessous, être accepté à la création, puis n'avoir aucun circuit disponible.
Canaux acceptés par l'API
L'API accepte quarante-neuf canaux Mobile Money dans vingt et un pays. Chacun constitue une valeur
valide pour beneficiary.channel.
| Pays | Canaux |
|---|---|
bj.mtn bj.moov | |
bf.orange bf.moov | |
cm.mtn cm.orange cm.eu | |
cg.mtn cg.airtel | |
ci.mtn ci.orange ci.moov ci.wave | |
cd.vodacom cd.airtel cd.orange cd.africell | |
eg.vodafone | |
ga.airtel ga.moov | |
gh.mtn gh.vodafone gh.airteltigo | |
gn.mtn gn.orange | |
ke.mpesa ke.airtel | |
lr.mtn | |
mw.airtel mw.tnm | |
ml.orange ml.moov | |
mz.mpesa | |
rw.mtn rw.airtel | |
sn.orange sn.free sn.wave | |
tz.mpesa tz.airtel tz.tigo tz.halopesa | |
tg.tmoney tg.moov | |
ug.mtn ug.airtel | |
zm.mtn zm.airtel zm.zamtel |
cd.vodacom et mz.mpesa désignent tous deux M-Pesa, tandis que cm.eu désigne Express Union. Le
slug suit l'opérateur utilisé par Wajub pour le routage, pas la marque affichée sur le téléphone du
client.
Canal générique
Treize de ces pays acceptent aussi {country}.mobile, qui détermine l'opérateur à partir du numéro :
cm.mobile, ci.mobile, sn.mobile, ga.mobile, bj.mobile, bf.mobile, ug.mobile,
rw.mobile, cd.mobile, tz.mobile, ke.mobile, gh.mobile et cg.mobile. La page
Bénéficiaires explique le fonctionnement de cette résolution et ses cas
d'échec.
Utilisez ce canal lorsque vous ne disposez que d'un numéro. Indiquez l'opérateur dès que vous le
connaissez, car un échec de résolution produit une erreur 422, alors qu'un slug explicite serait
passé directement.
Trois canaux génériques ne mènent nulle part
ng.mobile, td.mobile et cf.mobile sont acceptés par le validateur, car leur pays figure dans
la table des préfixes d'opérateurs. Le Nigeria, le Tchad et la République centrafricaine ne
disposent cependant d'aucun canal de payout Mobile Money. L'appel est donc refusé à l'étape
suivante. Le Nigeria possède bien un canal de payout bancaire, mais l'API ne permet pas de
l'utiliser, comme expliqué ci-dessous.
Couverture propre à votre compte
Wajub peut router un payout sur vingt et un circuits : son propre circuit de décaissement au Cameroun, appelé circuit interne, et vingt autres fournis par des prestataires de paiement. Parmi eux figurent Flutterwave, Paystack, Wave, pawaPay, CinetPay, InTouch, PayDunya, FedaPay, Monetbil, Campay et Fapshi. Chacun indique les canaux sur lesquels il peut effectuer un décaissement. Encaisser sur un canal ne signifie jamais que vous pouvez aussi y effectuer un décaissement.
Cette déclaration ne donne qu'une partie de la réponse. Tous les circuits sauf le circuit interne sont désactivés jusqu'à ce que Wajub les approuve pour les payouts live, un par un. Connecter un prestataire pour les encaissements n'active pas son côté payout.
Le circuit interne couvre trois canaux
Par défaut, le seul circuit activé pour les payouts live est celui de Wajub. Il effectue des
décaissements sur cm.mtn, cm.orange et cm.eu. Tous les autres canaux du tableau ci-dessus
nécessitent un circuit présent sur votre compte et approuvé par Wajub pour les payouts. Vérifiez
ce point avant d'intégrer un corridor à votre produit, plutôt que de le découvrir lors du premier
transfert live.
La couverture varie aussi selon les canaux. Quatorze circuits peuvent traiter cm.mtn et sept
peuvent traiter ci.mtn, ce qui laisse une solution de repli en cas d'échec. eg.vodafone,
lr.mtn, mz.mpesa et cd.africell ne sont pris en charge que par un circuit chacun. Aucun repli
n'est donc possible si celui-ci devient indisponible. Seul Flutterwave déclare pouvoir traiter tous
les canaux. Chaque autre circuit possède sa propre liste.
Ce que la devise détermine ou non
Aucune règle ne lie une devise au pays du canal. Le payout est contrôlé par rapport aux plafonds configurés pour sa devise, à la liste des devises actives et aux devises prises en charge par vos prestataires. Rien ne compare la devise aux deux lettres du slug.
En pratique, vous enverrez des XAF sur cm.* et des XOF sur ci.*, car ce sont les devises de
règlement des opérateurs. Une incohérence ne produit cependant pas d'erreur dédiée. Elle renvoie le
même message No payout provider is available for this channel and currency. que tout autre manque
de couverture.
Canaux existants qui ne sont pas des canaux de payout
Le catalogue Wajub marque quelques destinations supplémentaires comme compatibles avec les payouts. L'API les refuse toutes pour un bénéficiaire créé par votre intégration.
| Canal | Type |
|---|---|
ng.bank eg.instapay in.upi | Virement bancaire au Nigeria, en Égypte et en Inde |
crypto.btc crypto.eth crypto.usdt crypto.usdc | Portefeuilles de cryptomonnaies |
paypal | Portefeuille PayPal identifié par des coordonnées |
Envoyer l'une de ces valeurs comme beneficiary.channel renvoie 422 The selected beneficiary.channel is invalid.. Des destinations bancaires existent sous forme de bénéficiaires
privileged ajoutés par Wajub dans le back-office, mais elles ne peuvent pas non plus être payées
via l'API.
Prestataire chargé du payout
Vous ne le choisissez jamais. Un transfert ne possède aucun champ provider ni aucune surcharge
par appel. Vous indiquez un canal, puis Wajub choisit parmi les circuits capables de le traiter.
L'ordre est déterministe, et non équilibré, car les mouvements d'argent privilégient la prévisibilité à la répartition de charge. Les candidats sont triés selon la priorité définie pour chaque prestataire, de la plus haute à la plus basse. Un échec fait passer au suivant. Un circuit dont les échecs récents ont déclenché le coupe-circuit est ignoré jusqu'à son rétablissement. La page Orchestration explique comment définir cette priorité et comment fonctionne le repli.
Le transfert indique ensuite dans provider le prestataire qui l'a exécuté. L'identifiant propre à
l'opérateur apparaît dans provider_reference une fois que le payout l'a atteint.