Aller au contenu

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ôleRefus avec
Le slug correspond à un canal de payout connu de Wajub422 The selected beneficiary.channel is invalid.
Un circuit peut techniquement effectuer un décaissement sur ce canal422 No payout provider is available for this channel and currency.
Ce circuit est approuvé pour les payouts liveLe 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.

PaysCanaux
Béninbj.mtn bj.moov
Burkina Fasobf.orange bf.moov
Camerouncm.mtn cm.orange cm.eu
Congo-Brazzavillecg.mtn cg.airtel
Côte d'Ivoireci.mtn ci.orange ci.moov ci.wave
RD Congocd.vodacom cd.airtel cd.orange cd.africell
Égypteeg.vodafone
Gabonga.airtel ga.moov
Ghanagh.mtn gh.vodafone gh.airteltigo
Guinéegn.mtn gn.orange
Kenyake.mpesa ke.airtel
Liberialr.mtn
Malawimw.airtel mw.tnm
Maliml.orange ml.moov
Mozambiquemz.mpesa
Rwandarw.mtn rw.airtel
Sénégalsn.orange sn.free sn.wave
Tanzanietz.mpesa tz.airtel tz.tigo tz.halopesa
Togotg.tmoney tg.moov
Ougandaug.mtn ug.airtel
Zambiezm.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.

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.

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.

CanalType
ng.bank eg.instapay in.upiVirement bancaire au Nigeria, en Égypte et en Inde
crypto.btc crypto.eth crypto.usdt crypto.usdcPortefeuilles de cryptomonnaies
paypalPortefeuille 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.

Que pensez-vous de ce contenu ?