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.
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 : 500 000 pour XAF et XOF. Un paiement dans une autre devise, en USD
ou en EUR par exemple, effectué avec un portefeuille d'Afrique occidentale ou centrale, est plafonné
au même montant converti au taux actuel. 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, vos propres fournisseurs connectés compris, 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 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 | Trop de payouts, ou un montant versé trop élevé, en peu de temps | Refusé avec 422 |
| Vérification | Wajub peut retenir un payout pour vérification avant son envoi | Retenu dans l'état review |
Ces plafonds sont fixés par compte ; écrivez au support pour 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é |
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 plafonds s'appliquent à chaque appel fait avec une clé, et le premier atteint répond 429.
Tous les trois suivent votre plan, et un compte Enterprise n'en a aucun. Un appel sans clé est
limité à 30 par minute.
| Plafond | Par minute |
|---|---|
| Compte | Valeur de votre plan, sandbox et live à part |
| API key | Valeur de votre plan |
| Endpoint, par ressource | Voir ci-dessous |
Les plafonds par endpoint suivent le plan : trois fois la valeur d'entrée sur Growth, six fois sur Scale. Chaque appel sur la ressource compte, lectures comprises, sauf la lecture d'un transfert.
| 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 |
Deux plafonds sont fixes, les mêmes sur tous les plans, Enterprise compris :
| Appels | Plafond |
|---|---|
| Écritures de payout : payouts, lots, bénéficiaires et créances | 20 par minute, par compte et par environnement |
POST /beneficiaries/{id}/verify | 10 par minute et 200 par jour et par compte en live, 10 par minute en sandbox |
Renvoyer un événement à la main a son propre délai, le même sur tous les plans : voir
Livraison des webhooks. Limites de requêtes présente les
en-têtes de réponse, les deux formes du corps d'une réponse 429 de la limite de requêtes, et le
429 d'un renvoi dans ce délai.
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 |
| Aucune nouvelle tentative | 410 Gone |
| Délai d'expiration de la requête | 10 secondes |
| Tolérance de la signature | 300 secondes |
| Renvoi manuel d'un événement vers un endpoint | Une fois toutes les 5 minutes, depuis Konsole ou POST /events/{id}/resend |
Répondez avant l'expiration du délai pour éviter une nouvelle livraison. Vous devez donc accuser réception avant de lancer le traitement.
Un renvoi dans ces 5 minutes ignore cet endpoint. Quand POST /events/{id}/resend trouve encore
dans ce délai chaque endpoint qui n'a pas accepté l'événement, il répond 429 avec
error_code: event_resend_cooldown et un en-tête Retry-After qui donne les secondes restantes. Ce
n'est pas la limite de requêtes : un renvoi avant Retry-After obtient la même réponse, ne laissez
donc pas un client le réessayer de lui-même.
Pages associées
- CouvertureLes canaux et les devises disponibles.
- Limites de requêtesLes en-têtes, les 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.