Plafonds et quotas
Les plafonds appliqués par l'API et les erreurs renvoyées pour chacun.
Quatre plafonds différents peuvent refuser le même appel. Chacun renvoie un code de statut distinct. Ce code vous indique immédiatement le plafond atteint.
| Plafond | Application | Refus |
|---|---|---|
| Montant de la devise | Chaque paiement et chaque transfert | 422 à la création |
| Mobile Money par débit | Un débit Mobile Money | 422 pendant le traitement |
| Plafonds du compte issus du KYC | Volume live entrant et sortant | 402 pour un paiement, 422 pour un payout |
| Requêtes par minute | Chaque appel | 429 |
Les quotas du plan constituent un cinquième type. Ils refusent la ressource plutôt que le montant. Vous ne pouvez plus créer de liens de paiement ni de factures lorsque le quota du plan est épuisé.
Montants par devise
Un même tableau régit les deux directions. POST /payments et POST /transfers utilisent les mêmes
plafonds par devise. Un payout est donc refusé avec les mêmes valeurs qu'un paiement du même montant.
Les montants utilisent les unités principales.
| Devise | Minimum | Maximum |
|---|---|---|
| 25 | 2 000 000 | |
| 25 | 2 000 000 | |
| 100 | 999 999,99 | |
| 0,50 | 999 999,99 | |
| 0,50 | 999 999,99 | |
| 0,50 | 999 999,99 | |
| 1 000 | 999 999 999 | |
| 500 | 999 999 999 | |
| 1 000 | 999 999 999 | |
| 0,50 | 999 999,99 | |
| 0,50 | 999 999,99 | |
| 0,50 | 999 999,99 | |
| 0,50 | 999 999,99 | |
| 0,50 | 999 999,99 |
Quatre-vingt-douze devises possèdent des limites, pas seulement celles affichées ci-dessus, et l'API refuse un montant qui en sort.
Lorsqu'un montant dépasse les limites, l'appel n'atteint jamais le prestataire.
Le même refus sur POST /transfers contient Transfer amount must be between …, avec les deux mêmes
valeurs.
Un débit Mobile Money possède son propre plafond
Le plafond de la devise limite le montant total du paiement. Le plafond Mobile Money limite un seul débit sur un portefeuille et sa valeur est bien plus basse.
| Réseau | Plafond par débit | Origine |
|---|---|---|
| 500 000 XAF ou XOF | Règles de l'opérateur, par débit | |
| Plafond de la devise | Aucun plafond distinct | |
| Plafond de la devise | Aucun plafond distinct | |
| Plafond de la devise | Aucun plafond distinct |
Un débit Mobile Money supérieur à ce plafond est refusé pendant le traitement, pas à la création.
Le paiement reste pending et peut faire l'objet d'une nouvelle tentative.
Un plafond par devise, les autres converties
Le plafond se fixe par devise. Aujourd'hui, XAF et XOF ont 500 000. Pour un paiement dans une
devise sans plafond propre, effectué avec un portefeuille d'Afrique occidentale ou centrale, les
500 000 XAF sont convertis au taux actuel puis arrondis à l'unité inférieure. Le plafond s'applique
donc aussi en USD ou en EUR. Quand Wajub fixe le plafond propre d'une devise, il remplace le montant
converti. Ces portefeuilles sont proposés par défaut sur un paiement en USD ou en EUR ;
réduisez la liste avec accept.
Un paiement au-dessus du plafond peut être réglé en deux à quatre débits, chacun sous le plafond, une fois les tranches activées : Paiements fractionnés décrit les appels. Un débit unique au-dessus est refusé, en live comme en sandbox : rien ne fractionne un paiement de lui-même.
Montants autorisés pour votre compte
Votre compte a ses propres plafonds au-delà des limites par appel : plafonds unitaire, quotidien et mensuel pour les fonds entrants, puis les trois mêmes pour les fonds sortants. Ils dépendent de votre vérification, de votre activité et de l'évaluation des risques faite par Wajub, pas de votre plan. Vos plafonds actuels sont affichés dans le Dashboard ; écrivez au support pour les relever.
Un compte non vérifié ne déplace aucun fonds live
Tant que votre vérification n'est pas approuvée, chaque paiement live renvoie 402 avec
error_code: merchant_not_verified, quel que soit le fournisseur qui le porterait, rails Wajub ou
votre propre connexion, et chaque payout renvoie 422 avec
Payouts are not available for this account yet. La sandbox n'est pas concernée.
Une fois votre compte vérifié, tout dépassement d'un plafond apparaît comme un refus.
Les compteurs quotidiens et mensuels utilisent les paiements live crédités dans la devise concernée.
Ils se réinitialisent à minuit UTC et le premier jour du mois. Les compteurs de payouts additionnent
les transferts pending, processing, review et succeeded. Un payout soumis à une vérification
consomme donc toujours le quota du jour.
Les fonds sont retenus avant leur retrait
Un paiement crédité arrive dans pending_balance, puis passe dans available_balance à la fin de
la période de retenue. Sa durée de base dépend du réseau utilisé pour recevoir les fonds.
| Réseau | Retenue par défaut | Raison |
|---|---|---|
| 24 heures | Règlements et litiges rapides chez l'opérateur | |
| 48 heures | Fenêtre d'annulation plus lente | |
| 72 heures | Risque de rétrofacturation | |
| 72 heures | Risque de rétrofacturation |
La retenue de votre compte peut être plus courte ou plus longue que la durée par défaut, selon votre activité et l'évaluation des risques faite par Wajub.
Les payouts possèdent leurs propres contrôles
Deux mécanismes interviennent entre la requête de payout et l'envoi des fonds. Ils sont indépendants des plafonds de montant ci-dessus.
| Contrôle | Déclencheur | Effet |
|---|---|---|
| Fréquence | Plus de 6 appels de payout acceptés, ou plus de 3 000 000 XAF versés, sur une heure glissante | Refusé avec 422 |
| Vérification | Wajub peut retenir un payout pour vérification avant son envoi | Retenu dans l'état review |
La fréquence compte ce qui a été accepté, pas ce qui a été tenté. Un payout refusé pour n'importe quelle raison, plafond de fréquence compris, n'occupe aucune place dans l'heure : réessayer un payout refusé ne prolonge donc jamais l'attente. Un lot est un seul appel : il occupe une des six places quel que soit son nombre de lignes, et la rend s'il n'envoie finalement rien. Chaque ligne ajoute tout de même son montant aux 3 000 000 XAF. Un payout dans une autre devise est converti en XAF au taux de Wajub avant d'être ajouté. La relance d'un lot dont des lignes sont déjà parties n'est jamais refusée en bloc : ces lignes reviennent telles quelles, et seule une ligne encore à envoyer est refusée quand il ne reste plus de place. Les deux plafonds sont fixés par compte, et seul Wajub peut les relever.
Un payout retenu n'a pas échoué. Il reste dans l'état review et se poursuit après son approbation.
Traitez review comme un état normal dans votre rapprochement, pas comme une erreur.
Quotas des plans
Le plan régit les ressources et le débit, jamais les montants.
| Quota | Pay as you go | Growth | Scale | Enterprise |
|---|---|---|---|---|
| Requêtes par minute | 120 | 360 | 720 | Illimité |
| Liens de paiement | 25 | Illimité | Illimité | Illimité |
| Factures | 10 | Illimité | Illimité | Illimité |
| Membres de l'équipe | 3 | 5 | Illimité | Illimité |
| Prestataires | 2 | 6 | Illimité | Illimité |
| Exports par mois | 10 | Illimité | Illimité | Illimité |
| Répétitions de webhooks par mois | 5 | 25 | Illimité | Illimité |
Les quotas de liens et de factures comptent uniquement les liens et les factures live. Toute
création au-delà de ces quotas renvoie 403. Les liens et les factures n'existent qu'en live : avec
une clé sandbox, l'API répond 403 (This feature is only available in live mode.).
Requêtes par minute
Trois compteurs s'appliquent à chaque appel fait avec une clé, et le premier dépassé provoque le refus. Tous les trois suivent votre plan : une clé peut consommer tout le budget de l'équipe, et une équipe Enterprise n'a de plafond sur aucun d'eux.
| Compteur | Plafond |
|---|---|
| Équipe | Valeur de votre plan |
| API key | Valeur de votre plan |
| Endpoint, par ressource | Voir ci-dessous |
| Appel sans clé | 30 |
Les plafonds par endpoint sont des parts des 120 requêtes par minute du plan d'entrée, et ils suivent le plan : trois fois plus sur Growth, six fois plus sur Scale. Chaque appel sur la ressource compte, lectures comprises.
| Ressource | Pay as you go | Growth | Scale | Enterprise |
|---|---|---|---|---|
/payments | 30 | 90 | 180 | Aucun plafond |
/transfers | 20 | 60 | 120 | Aucun plafond |
/refunds | 10 | 30 | 60 | Aucun plafond |
/customers | 50 | 150 | 300 | Aucun plafond |
Un appel a son propre plafond fixe, sur tous les plans, Enterprise compris :
POST /beneficiaries/{id}/verify, qui demande à un opérateur le nom derrière un numéro, accepte 10
vérifications par minute et 200 par jour et par compte en live, et 10 par minute en sandbox.
Limites de requêtes présente les en-têtes de réponse et les deux formes du corps
d'une réponse 429.
Limites des champs
Voici les limites de validation que vous risquez le plus de rencontrer. Elles proviennent directement des règles des requêtes.
| Champ | Limite |
|---|---|
expires.in | De 5 à 43 200 minutes, 1 440 par défaut |
description | 500 caractères |
reference | 128 caractères |
callback | 2 048 caractères |
Idempotency-Key | 128 caractères, A-Za-z0-9._:- |
per_page | De 1 à 100, 25 par défaut |
split_count | 2, 3 ou 4 |
split_amounts | De 2 à 4 montants, chacun au moins égal à 0.01 |
| Fichier de justificatif d'un litige | 10 Mo, pdf jpg jpeg png doc docx txt |
| Message d'un litige | 5 000 caractères |
Livraison des webhooks
| Paramètre | Valeur |
|---|---|
| Fenêtre des nouvelles tentatives | 72 heures après la première tentative |
| Attente entre deux tentatives | 30 secondes, doublée après chaque échec, jusqu'à 6 heures, avec une part d'aléa |
| Aucune nouvelle tentative | 410 Gone |
| Délai d'expiration de la requête | 10 secondes |
| Tolérance de la signature | 300 secondes |
Répondez avant l'expiration du délai pour éviter une nouvelle livraison. Vous devez donc accuser réception avant de lancer le traitement.
Pages associées
- CouvertureLes canaux et les devises disponibles.
- Limites de requêtesLes en-têtes, les deux formes de réponse 429 et l'attente progressive à mettre en place.
- Dépannage des paiementsLes actions à effectuer lorsqu'un paiement est refusé.
- Transferts et payoutsLa création, la retenue et le règlement d'un payout.