Aller au contenu

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.

PlafondApplicationRefus
Montant de la deviseChaque paiement et chaque transfert422 à la création
Mobile Money par débitUn débit Mobile Money422 pendant le traitement
Plafonds du compte issus du KYCVolume live entrant et sortant402 pour un paiement, 422 pour un payout
Requêtes par minuteChaque appel429

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.

DeviseMinimumMaximum
XAFXAF252 000 000
XOFXOF252 000 000
NGNNGN100999 999,99
GHSGHS0,50999 999,99
KESKES0,50999 999,99
TZSTZS0,50999 999,99
UGXUGX1 000999 999 999
RWFRWF500999 999 999
GNFGNF1 000999 999 999
CDFCDF0,50999 999,99
ZARZAR0,50999 999,99
ZMWZMW0,50999 999,99
EGPEGP0,50999 999,99
EUREUR0,50999 999,99

Quatre-vingt-douze devises possèdent des limites, pas seulement celles affichées ci-dessus. Une devise absente du tableau n'est pas limitée à ce niveau. Seuls les plafonds du compte présentés plus bas s'appliquent alors.

Lorsqu'un montant dépasse les limites, l'appel n'atteint jamais le prestataire.

Réponse 422 pour un paiement de 10 XAF
{
"code": 422,
"status": "Unprocessable Entity",
"message": "Amount must be between 25 and 2000000 XAF.",
"errors": {
"amount": [
"The amount must be between 25 and 2000000 XAF."
]
}
}

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éseauPlafond par débitOrigine
Mobile MoneyMobile Money500 000 XAF ou XOFRègles de l'opérateur, par débit
CartesCartesPlafond de la deviseAucun plafond distinct
BanqueBanquePlafond de la deviseAucun plafond distinct
CryptoCryptoPlafond de la deviseAucun 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.

Réponse 422 pour un débit Mobile Money de 900 000 XAF
{
"code": 422,
"status": "Unprocessable Entity",
"message": "This transaction amount exceeds the per-transaction limit for cm.mtn. Use split_count or split_amounts to split the payment.",
"payer_message": "This amount is above the limit for this payment method."
}

Les autres devises sont converties, pas exemptées

Seuls XAF et XOF possèdent un plafond Mobile Money explicite. Pour un paiement dans une autre devise 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.

Le paiement fractionné permet de répartir un paiement entre deux et quatre débits. Le traitement des tranches fonctionne actuellement dans la sandbox. En mode live, considérez donc cette limite comme un plafond strict et utilisez un montant inférieur.

Montants autorisés pour votre compte

Six valeurs propres à votre équipe s'ajoutent aux limites par appel : plafonds unitaire, quotidien et mensuel pour les fonds entrants, puis les trois mêmes pour les fonds sortants. La vérification de conformité les détermine, pas votre plan.

PalierPaiement unitaireEntrées quotidiennesPayout unitaireSorties quotidiennes
basic500 0002 000 000500 0001 000 000
verified5 000 00020 000 0005 000 00010 000 000
premium50 000 000200 000 00050 000 000100 000 000
enterprise500 000 0002 000 000 000500 000 0001 000 000 000

Ces valeurs de base sont exprimées en XAF et ne s'appliquent jamais seules. Quatre multiplicateurs s'y ajoutent et se cumulent.

MultiplicateurValeurs
Niveau de risquelow 1,5, medium 1,0, high 0,5, critical 0,2
Catégorie d'activitéRisque élevé 0,5, moyen 0,8, faible 1,2, sinon 1,0
Structure juridiqueSociété 1,5, ONG 1,2, particulier 0,8, sinon 1,0
Statut de conformitéverified 1,0, toute autre valeur 0

Une société vérifiée à faible risque dispose donc de 1,5 × 1,2 × 1,5 = 2,7 fois la valeur de base. Un marchand individuel en cours de vérification reste à zéro.

Une fois le plafond défini, tout dépassement apparaît comme un refus.

Réponse 402 pour un paiement supérieur au plafond unitaire
{
"code": 402,
"status": "Payment Required",
"error_code": "limit_exceeded",
"message": "Transaction amount 1 200 000 XAF exceeds your single-transaction limit of 500 000 XAF. Please contact support to increase your limit.",
"payer_message": "This payment could not be completed. Please try a smaller amount or contact the merchant."
}

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.

Uniquement sur le réseau Wajub

Les plafonds entrants s'appliquent uniquement aux équipes dont Wajub est le seul prestataire actif. Si vous utilisez vos propres identifiants PSP, le plafond appartient à ce prestataire, pas à Wajub. Les plafonds des payouts ne bénéficient pas de cette exception.

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éseauRetenue par défautRaison
Mobile MoneyMobile Money24 heuresRèglements et litiges rapides chez l'opérateur
BanqueBanque48 heuresFenêtre d'annulation plus lente
CartesCartes72 heuresRisque de rétrofacturation
CryptoCrypto72 heuresRisque de rétrofacturation

Votre niveau de risque multiplie cette durée par 0.5, 1, 2 ou 3. Le résultat reste compris entre 6 et 168 heures. Une équipe bénéficiant d'une dérogation explicite des opérations ignore entièrement ce calcul.

Les payouts possèdent leurs propres contrôles

Trois 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ôleDéclencheurEffet
FréquencePlus de 6 payouts ou plus de 3 000 000 XAF sur une heure glissanteRefusé
Vérification manuelleTout payout supérieur ou égal à 1 000 000 XAFRetenu pour vérification
Vérification manuelleVotre tout premier payout liveRetenu pour vérification
Vérification manuellePlus de 5 fois votre moyenne après 3 payouts réussisRetenu pour vérification
Gel du compte2 rejets après vérification en 24 heuresTransferts limités jusqu'à l'intervention des opérations

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.

QuotaPay as you goGrowthScaleEnterprise
Requêtes par minute120360720Illimité
Liens de paiement25IllimitéIllimitéIllimité
Factures10IllimitéIllimitéIllimité
Membres de l'équipe35IllimitéIllimité
Prestataires26IllimitéIllimité
Exports par mois10IllimitéIllimitéIllimité
Répétitions de webhooks par mois525IllimitéIllimité

Les quotas de liens et de factures comptent uniquement les lignes live. Toute création au-delà de ces quotas renvoie 403. Les liens et factures de la sandbox ne consomment aucun quota.

Requêtes par minute

Quatre compteurs s'appliquent à chaque appel et le premier dépassé provoque le refus. Ils ne sont pas interchangeables. Une requête sous le plafond de l'équipe peut toujours être refusée par celui de l'IP.

CompteurPlafondClé de comptage
ÉquipeValeur de votre planIdentifiant de l'équipe
API key100En-tête Authorization
IP120IP du client
EndpointVoir ci-dessousIdentifiant de l'équipe et ressource
Sans authentification30IP du client

Les plafonds par endpoint correspondent à une valeur de base multipliée selon le plan.

RessourcePay as you goGrowthScale et Enterprise
/payments6018030
/transfers4012020
/refunds206010
/customers10030050

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.

ChampLimite
expires.inDe 5 à 43 200 minutes, 1 440 par défaut
description500 caractères
reference128 caractères
callback2 048 caractères
Idempotency-Key128 caractères, A-Za-z0-9._:-
per_pageDe 1 à 100, 25 par défaut
split_count2, 3 ou 4
split_amountsDe 2 à 4 montants, chacun au moins égal à 0.01
Fichier de justificatif d'un litige10 Mo, pdf jpg jpeg png doc docx txt
Message d'un litige5 000 caractères

Livraison des webhooks

ParamètreValeur
Tentatives par événement5
Calendrier des nouvelles tentatives30 s, 1 min, 5 min, 10 min, 1 h
Délai d'expiration de la requête10 secondes
Tolérance de la signature300 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.

Que pensez-vous de ce contenu ?