UPI en profondeur : intégrer et exploiter. 6 chapitres et un QCM final.
Le cours d'ingénierie du rail indien, pour une équipe qui exploite déjà du volume UPI. Lire le triplet de statut que renvoie la NPCI, instrumenter la perte propre au collect, valider une adresse virtuelle contre le mappeur central, poser un mandat AutoPay qui survit à ses fenêtres d'exécution. Puis tenir une consommation de webhooks idempotente sous la discipline de sondage imposée depuis 2025, rapprocher douze cycles de règlement, et transformer un code de refus NPCI en décision de relance.
🇮🇳
Décomposer le statut d'une transaction UPI en trois champs distincts (résultat, code d'erreur UPI, code de réponse banque) et savoir lequel fait foi
Instrumenter l'écart de réussite entre intent et collect à partir des codes de refus propres à chaque mode, et non d'une impression de parcours
Valider une adresse virtuelle contre le mappeur central, interpréter les codes de mappage et absorber le recyclage des numéros mobiles
Câbler UPI AutoPay en tenant compte du seuil d'authentification inscrit dans le protocole, des fenêtres d'exécution hors pointe et du quota de tentatives
Chapitre 1. Intent, collect, QR : mesurer la perte au lieu de la deviner.
Le statut final d'une transaction UPI se répartit sur trois champs distincts, remplis par trois acteurs différents. Le premier porte le verdict, le deuxième la cause vue par la NPCI, le troisième la cause vue par la banque du payeur. Leur décomposition constitue la mesure de référence d'une intégration mature, davantage que l'observation du parcours d'achat. Les fondre en un indicateur unique produit des tableaux de bord faux. L'archivage du seul verdict ne permet pas de distinguer une perte due au parcours du marchand d'une perte due à un établissement en difficulté.
Trois champs, trois émetteurs
Champ
Qui le remplit
Valeurs
Ce qu'il vous apprend
Result
UPI
SUCCESS, FAILURE, DEEMED
Le verdict. DEEMED signale un crédit de statut inconnu : ni réussi ni échoué, à trancher plus tard par UDIR ou le back-office
ErrorCode
La couche de service UPI
Codes U01 à U99, M16, S93…
La cause vue par le commutateur central : duplicata, plafond, expiration, indisponibilité d'un membre
RespCode
La banque ou le PSP dans la branche de réponse
Codes à deux caractères : Z9, ZM, B3, XH…
La cause vue par l'établissement : solde, code confidentiel, nature du compte, gel judiciaire
Ce que porte un message RespPay final, d'après la spécification NPCI des codes d'erreur et de réponse (version 2.9)
La spécification NPCI publie à côté de chaque code une classification, BD pour un refus commercial et TD pour un refus technique. Cette étiquette décide de ce que le marchand a le droit de tenter ensuite. Un refus commercial vient du payeur ou de son compte, et le retenter à l'identique produit le même code. Un refus technique vient d'une indisponibilité, et une seconde tentative a du sens. La NPCI a communiqué à ses membres des cibles de moins de 1 % pour les refus techniques et de moins de 5 % pour les refus commerciaux.
Mode
Codes de refus qui lui sont spécifiques
Ce que vous ne contrôlez pas
Instrumentation à poser
Intent (upi://pay)
Aucun code propre : la perte se produit avant le rail, quand l'application ne s'ouvre pas ou que le client abandonne
L'installation d'une application UPI sur l'appareil, et la bascule système
Compter les liens émis, les retours d'application et les autorisations demandées : l'écart est votre abandon réel
QR dynamique
X6 invalid merchant (acquéreur), PQ QR altéré sur le rail e-RUPI
La qualité de lecture, l'ancienneté du QR affiché, la fraîcheur de la référence portée
Horodater la génération et l'expiration du QR ; un QR qui vit trop longtemps encaisse un montant périmé
Collect
U69 COLLECT EXPIRED, classé BD, une catégorie de perte qui n'existe pas en intent
La remise de la notification, l'attention du payeur, le délai d'expiration que vous avez fixé
Suivre le taux d'expiration par tranche de délai : c'est le seul réglage dont vous disposez
Les trois modes d'encaissement et la perte qui leur est propre. La comparaison utile porte sur les codes, pas sur le nombre d'écrans
⚠️
Le collect ne s'optimise pas, il se retire
U69 COLLECT EXPIRED désigne une demande de paiement que le payeur n'a pas approuvée avant son expiration. Le code est classé refus commercial. Le rail a fonctionné et le payeur n'a pas répondu. Aucune optimisation d'API ne réduit ce taux, parce que la variable en cause est le comportement du payeur. Le mode a porté la fraude la plus répandue du marché, la demande de paiement présentée comme un versement à recevoir, et la NPCI a supprimé le collect entre particuliers au 1er octobre 2025. Le maintien du collect au moment du paiement expose donc le marchand à une perte qu'aucune correction technique ne réduit, sur un mode dont la NPCI a déjà supprimé le volet entre particuliers. Le collect garde un emploi étroit, celui de relancer un impayé sur une adresse déjà connue et déjà validée.
< 1 % / < 5 %
cibles communiquées aux membres UPI pour les refus techniques et les refus commerciaux
NPCI, circulaire UPI OC n° 149 (2022) et addendum OC n° 149A du 15 juin 2022
mensuelle
fréquence de publication, banque par banque, des refus commerciaux, des refus techniques et de la disponibilité
NPCI, page « Declined (BD/TD) & Uptime »
22 716,07 M
transactions UPI sur le seul mois de juin 2026, l'échelle qui rend toute mesure fine exploitable
NPCI, statistiques produit UPI, juin 2026
L'instrumentation qui découle de cette lecture conserve à chaque tentative les trois champs de statut, la classification BD ou TD, l'identifiant de la banque du payeur et le mode d'initiation. Sans l'identifiant de la banque du payeur, les échecs du marchand ne peuvent pas être rapprochés de la publication mensuelle de la NPCI. La dégradation d'un seul établissement prend alors l'apparence d'une régression de l'application marchande. Les équipes qui pilotent leur taux d'autorisation en Inde confrontent chaque mois leur propre décomposition à celle du marché.
🎯 Question éclair
Votre tableau de bord montre une hausse des échecs UPI. Quel champ regardez-vous en premier pour savoir si la cause vous appartient ?
Chapitre 2. VPA : le mappeur central, la validation, le recyclage.
Une adresse virtuelle de paiement, ou VPA, désigne une entrée d'annuaire qui tient lieu de coordonnée de paiement, et non un compte. Le mappeur central de la NPCI relie chaque identifiant au fournisseur d'application qui le détient. Cet identifiant prend la forme d'une adresse nom@banque, d'un numéro de mobile ou d'un identifiant numérique. L'entrée d'annuaire change au fil du temps. La résolution précède donc chaque paiement. Traiter le VPA comme une donnée stable conduit à débiter la mauvaise personne, ou à perdre la trace du client.
Résolution d'une adresse avant paiement
Votre serveur
Transmet l'adresse saisie à l'agrégateur
Normalisation préalable : suppression des espaces, passage en minuscules, contrôle de la présence du séparateur
➜
PSP / banque du bénéficiaire
Interroge le mappeur central de la NPCI
Le mappeur indique quel fournisseur d'application détient cet identifiant
➜
Mappeur central
Répond, ou renvoie un code de mappage
`MM2` MAPPING_DOES_NOT_EXIST, `MM3` MAPPING_BLOCKED, `MM4` MAPPING_INACTIVE selon l'état de l'entrée
➜
Banque du payeur
Renvoie le nom du titulaire tel qu'elle le détient
C'est cette chaîne que vous affichez au client, jamais le libellé qu'il a lui-même saisi
➜
Votre serveur
Fait confirmer le nom, puis seulement déclenche le paiement
Sur un rail instantané, l'erreur de destinataire n'a pas de rattrapage automatique
Les codes du mappeur, et ce qu'ils imposent
Code
Signification
Ce que votre système doit faire
MM2 MAPPING_DOES_NOT_EXIST
L'identifiant n'est rattaché à aucun fournisseur d'application
Refuser la saisie à l'écran, sans créer de ligne de référentiel ni de tentative de paiement
MM3 MAPPING_BLOCKED / MM4 MAPPING_INACTIVE
L'entrée existe mais est bloquée ou inactive
Traiter comme une adresse morte : déclencher un parcours de mise à jour, pas une relance de paiement
MM5 VPA_MAPPED_TO_ANOTHER_MOBILE
L'adresse est rattachée à un autre numéro que celui présenté
Interrompre. Ce cas est un signal de reprise d'identifiant, à remonter au risque
MM10 COOLING_PERIOD_NOT_OVER
Une période de latence court après un changement d'enregistrement
Ne pas retenter en boucle. Programmer une nouvelle vérification différée
MM18 ID_MAPPED_TO_DIFFERENT_VPA
L'identifiant pointe désormais vers une autre adresse
Invalider l'adresse stockée et repasser par la validation avant tout débit
ZH INVALID VIRTUAL ADDRESS / U29 ADDRESS RESOLUTION IS FAILED
Adresse invalide, ou résolution en échec au moment du paiement
Distinguer les deux dans vos journaux : le premier est un refus commercial, le second une non-résolution
Codes du mappeur central NPCI rencontrés en exploitation, et la réaction attendue côté marchand
⚠️
Un numéro de mobile indien se recycle, et votre base ne le sait pas
Le Department of Telecommunications autorise la réattribution d'un numéro resté inutilisé pendant 90 jours, si bien qu'un identifiant UPI numérique adossé à ce numéro change de titulaire sans qu'aucun message ne parvienne au marchand. La NPCI impose depuis le 1er avril 2025 aux banques et aux fournisseurs d'application une mise à jour hebdomadaire de leurs enregistrements à partir de la Mobile Number Revocation List. La date butoir du nettoyage initial était fixée au 31 mars 2025. Un remboursement adressé à un identifiant numérique conservé depuis deux ans peut ainsi créditer un inconnu. Le rail n'offre alors aucun recours de type carte pour reprendre la somme versée.
Politique de traitement d'une adresse virtuelle, les cinq règles à coder une fois
1. NORMALISER A L'ECRITURE
trim, minuscules, controle du separateur unique '@'
'Ravi@okhdfcbank' et 'ravi@okhdfcbank' = UNE ligne de referentiel
2. NE JAMAIS INDEXER LE CLIENT SUR L'ADRESSE
cle primaire = votre identifiant client
l'adresse est un ATTRIBUT DATE, avec un historique
colonnes utiles : valeur, date de validation, nom renvoye, statut
3. REVALIDER AVANT TOUT DEBIT DIFFERE
une adresse validee il y a six mois n'est pas une adresse valide
revalider avant : remboursement, reversement, reprise de mandat
4. AFFICHER LE NOM RENVOYE PAR LA BANQUE, PAS CELUI SAISI
et exiger une confirmation explicite du client
5. SEPARER LES ECHECS DANS LES JOURNAUX
resolution echouee -> l'adresse n'a pas ete trouvee
refus au paiement -> l'adresse existe, le debit a ete refuse
Les melanger rend le taux d'echec illisible.
Source des codes de mappage : NPCI, UPI Error and Response Codes v2.9,
section Central Mapper.
🎯 Question éclair
Vous préparez un remboursement vers une adresse UPI validée lors de l'achat, quatorze mois plus tôt. Que faites-vous ?
UPI AutoPay repose sur un objet distinct du paiement, le mandat, que désigne un UMN, le numéro de mandat unique. Ce mandat a un cycle de vie propre, qui va de la création à l'expiration en passant par l'exécution répétée, la modification, la pause et la révocation. Chaque étape porte ses propres codes. Lire l'exécution d'un mandat avec la grille d'un paiement ordinaire laisse donc de côté la moitié de l'information disponible. Les codes de mandat indiquent pourquoi un abonnement cesse d'être encaissable, et quel parcours le marchand doit déclencher.
Le seuil d'authentification est écrit dans le protocole
La règle réglementaire impose une authentification forte à la première échéance d'un mandat, puis dispense sous le seuil de ₹15 000. Deux codes de réponse de la spécification NPCI portent ce seuil. V3 signale un bloc de code confidentiel manquant pour une transaction supérieure à ₹15 000. V4 signale le même manque pour une transaction inférieure à ₹15 000 dont le numéro de séquence vaut 1. La règle est donc câblée dans les messages autant qu'écrite dans un texte, et l'intégration marchande la rencontre sous forme de code de refus. Une hausse tarifaire qui franchit le seuil produit donc V3 en production, dans le flux de paiement lui-même.
Code
Signification
Nature
Parcours à déclencher
V3 / V4
Bloc de code confidentiel absent : au-dessus de ₹15 000, ou à la première échéance
BD
Solliciter la présence du client. Aucune reprise automatique n'est possible
QC / VA MANDATE HAS BEEN REVOKED
Le mandat a été révoqué par le payeur
BD
Fin d'abonnement. Ne pas retenter, basculer sur la rétention commerciale
QD / VU MANDATE HAS EXPIRED
La date de fin du mandat est dépassée
BD
Ré-enrôlement. Prévoir l'alerte avant l'échéance, pas après le refus
VT MANDATE IS PAUSED
Le mandat est suspendu par le payeur
BD
Ni relance de paiement ni résiliation : attendre, et informer
VE MANDATE IS ALREADY HONOURED
L'échéance a déjà été honorée
BD
Symptôme d'un double déclenchement chez vous. Corriger l'ordonnanceur
VK
Le nombre de mandats autorisés sur le compte dépasse la limite de l'émetteur
BD
Proposer un autre compte ou un autre rail. La contrainte est chez la banque du payeur
VS DUPLICATE MANDATE REQUEST FOR SAME ITEM
Demande de mandat en doublon pour le même objet
BD
Chercher le mandat existant avant d'en créer un second : le doublon vient de vous
MM MANDATE REQUEST IS DECLINED BY MERCHANT
Le bénéficiaire a refusé la demande de mandat
BD
Vérifier vos propres règles d'acceptation : le refus est émis de votre côté
Codes de mandat NPCI les plus rencontrés en exploitation d'abonnements, et le parcours qu'ils déclenchent
Un mandat récurrent porte le code de finalité 14. La spécification impose alors un blocage de fonds à N, et les codes Q3 et V5 rejettent l'inverse.
Le même code de finalité impose un mandat révocable, sauf pour le code catégorie marchand 7322, où les deux valeurs sont acceptées. Les codes Q4 et V6 sanctionnent l'écart.
Le numéro de séquence identifie l'échéance dans le mandat. Il porte la logique de première exécution, et il sert de clé naturelle d'idempotence côté ordonnanceur.
Un mandat s'exécute par un couple de messages distinct du paiement ponctuel. Vos journaux doivent donc classer les événements par UMN, pas seulement par identifiant de transaction.
L'expiration d'un mandat est connue à l'avance : elle figure dans le mandat lui-même. Une équipe qui découvre VU en production a raté une alerte qu'elle pouvait poser des semaines plus tôt.
⚠️
Vous n'ordonnancez plus votre facturation à l'heure de votre choix
Depuis le 1er août 2025, la NPCI confine l'exécution des mandats UPI AutoPay aux périodes hors pointe, les heures de pointe étant définies de 10 h 00 à 13 h 00 et de 17 h 00 à 21 h 30. Les exécutions se placent donc avant 10 h, entre 13 h et 17 h, ou après 21 h 30. Le même dispositif borne les tentatives à une exécution initiale et jusqu'à trois reprises par numéro de séquence, soit quatre au total. Un éditeur d'abonnements en tire deux conséquences. Un calendrier de facturation calé sur minuit ou sur l'heure d'un siège étranger subit un décalage imposé par ces bornes. Une politique de relance qui prévoit six tentatives par échéance en programme deux qui ne seront jamais exécutées.
La conception du calendrier de facturation obéit à une seconde contrainte, distincte de ces bornes horaires. La pré-notification obligatoire avant chaque débit place la décision du payeur avant l'exécution, et non après le refus. Un abonnement indien suit donc deux horloges, celle de la notification appartenant à la relation client et celle de l'exécution appartenant au rail. Le modèle de données les distingue. Un refus exprimé la veille par le payeur et un rejet bancaire au moment du débit portent le même effet comptable et procèdent de deux causes opposées. Les réunir dans un indicateur unique prive l'équipe de rétention de la distinction entre un client qui se désengage et un client dont le compte a refusé le débit.
🎯 Question éclair
Votre ordonnanceur d'abonnements déclenche tous les prélèvements indiens à 11 h 00, heure locale, et prévoit six tentatives par échéance. Que corrigez-vous ?
Chapitre 4. Webhooks, idempotence et discipline de sondage.
La spécification UPI prévoit trois issues pour une transaction, dont un état intermédiaire nommé DEEMED. Cet état désigne une transaction dont le crédit reste inconnu et dont le sort se règle ultérieurement. Sur UPI, une absence de réponse dans le délai attendu relève de cet état plutôt que de l'échec. Traduire un délai dépassé en « paiement refusé » fabrique donc une information que le rail n'a pas donnée. L'enchaînement qui suit associe un client débité, une commande annulée, un remboursement à instruire et une contestation qui arrivera de toute façon.
⚠️
Les codes de temporisation ne disent pas la même chose
U67 DEBIT TIMEOUT est classé TD. Le débit n'a pas répondu à temps, et l'issue reste ouverte. U30 DEBIT HAS BEEN FAILED n'est classé ni BD ni TD dans la spécification, parce qu'il décrit un état du flux plutôt qu'un motif de refus. U09 REQAUTH TIME OUT FOR PAY, U28 REMITTER BANK NOT AVAILABLE et U78 BENEFICIARY BANK OFFLINE sont tous techniques, et n'autorisent aucune conclusion sur le compte du payeur. Regrouper ces cinq codes sous un refus unique efface la distinction entre une issue encore ouverte et une indisponibilité identifiée, alors que les deux appellent des suites différentes.
Le sondage de statut est une ressource réglementée
La circulaire NPCI du 26 avril 2025, consacrée au cadrage de l'usage de l'API de vérification de statut, fixe le premier appel à 90 secondes après l'initiation de la transaction d'origine. Une communication ultérieure a ramené ce délai à 45-60 secondes.
Le même texte plafonne à trois appels de vérification de statut, de préférence dans les deux heures suivant l'initiation. Au-delà, le membre consulte les fichiers de règlement plutôt que le commutateur.
Une liste de codes vaut arrêt du sondage : recevoir l'un d'eux impose de considérer la transaction comme échouée et de cesser d'interroger.
L'API de vérification n'accepte pas une transaction d'origine de plus de 90 jours : le code X09 sanctionne une date hors fenêtre. Passé ce délai, la vérité est dans les fichiers, pas dans une requête.
Les Guidelines on the usage of UPI API du 21 mai 2025 plafonnent la consultation de solde à 50 par application, par client et par jour, et cantonnent certaines API d'inventaire aux heures creuses. Les échéances de mise en conformité étaient fixées au 31 juillet puis au 31 août 2025.
Consommateur idempotent, la forme minimale qui tient en production indienne
CLES ET LEUR PROPRIETAIRE
ref_commande -> VOUS. Choisie a l'ecriture, portee dans la requete,
renvoyee dans tous les evenements.
txnId / RRN -> LE RAIL. Inconnus tant que la transaction n'existe pas.
UMN -> LE RAIL. Identifie le mandat, pas l'echeance.
seqNum -> L'ECHEANCE dans un mandat. Cle naturelle d'idempotence
pour un ordonnanceur d'abonnements.
RECEPTION D'UN EVENEMENT
1. verifier la signature AVANT de lire le corps
2. cle d'unicite = (ref_commande, type_evenement, txnId)
deja vue -> repondre 200 et SORTIR, sans rejouer d'effet metier
3. accuser reception tout de suite ; le traitement metier est asynchrone
4. n'appliquer une transition d'etat que si elle est AUTORISEE
EN_ATTENTE -> REUSSI | ECHOUE | INDETERMINE
INDETERMINE -> REUSSI | ECHOUE
REUSSI -> (aucune) <- un evenement en retard ne degrade pas
ECHOUE -> REUSSI <- autorise : le rail peut confirmer tard
SONDAGE DE STATUT (bornes NPCI, circulaire du 26/04/2025)
t = 90 s premier appel
puis 2 appels max, de preference sous 2 heures
code d'arret recu -> ECHOUE, on arrete d'interroger
au-dela -> fichiers de reglement, plus d'appel unitaire
transaction de plus de 90 jours -> refusee (code X09)
DUPLICATION
U01 THE REQUEST IS DUPLICATE -> votre requete etait deja partie
DF / DT DUPLICATE RRN FOUND -> collision de RRN cote beneficiaire
ou cote remettant
Dans les deux cas : NE PAS recreer la transaction. Interroger.
Ce que vous observez
Ce que ce n'est pas
Décision
Aucune réponse après 30 secondes
Un échec
Attendre. Le premier appel de vérification n'est pas autorisé avant 90 secondes
Result = DEEMED
Un succès partiel à comptabiliser
État indéterminé : ne livrer ni annuler. L'issue viendra du back-office ou d'UDIR
Webhook de succès reçu deux fois
Deux paiements
Idempotence sur (ref_commande, type, txnId) : le second événement est absorbé sans effet métier
Trois situations d'incertitude et la décision correcte
Une dernière pratique devient impraticable en Inde, celle d'interroger le solde du payeur pour anticiper un rejet. Le plafond de cinquante consultations par application, par client et par jour rend cette architecture intenable à l'échelle, et la NPCI a explicitement visé la surconsommation d'API comme cause d'indisponibilité du rail. L'information recherchée parvient de toute façon au marchand, par l'événement d'exécution puis par le fichier de règlement. L'architecture attendue consomme donc ces deux flux entrants, au lieu d'interroger le rail transaction par transaction.
🎯 Question éclair
Votre appel de paiement UPI n'a reçu aucune réponse au bout de vingt secondes. Quelle séquence est conforme ?
La réconciliation UPI repose sur des cycles de règlement quotidiens, sur les fichiers produits à chaque cycle et sur un système central de compensation qui tranche les écarts. Le modèle diffère de celui des réseaux carte, où interviennent une autorisation différée de la capture, une fenêtre de présentation et un relevé mensuel de réseau. Aucun de ces trois mécanismes n'existe sur UPI. Le rapprochement se conduit donc à trois niveaux, et chaque niveau a sa clé.
20 septembre 2019
Délais opposables sur les transactions échouées
La circulaire RBI/2019-20/67 DPSS.CO.PD n° 629/02.01.014/2019-20 impose, sur UPI, une contre-passation au plus tard à T+1 dès qu'un compte a été débité sans crédit du bénéficiaire. Passé ce délai, le client perçoit ₹100 par jour de retard.
10 février 2025
Contestations tranchées automatiquement
La circulaire NPCI UPI OC n° 213, applicable au 15 février 2025, rend automatique l'acceptation ou le rejet d'une contestation. La décision suit la confirmation de crédit (TCC) ou le retour (RET) produit par la banque du bénéficiaire au cycle de règlement suivant. Le périmètre couvre le dépôt en masse et UDIR, pas les interfaces de traitement unitaire.
26 avril 2025
Cadrage de la vérification de statut
La NPCI borne l'usage de l'API de vérification et renvoie les membres vers les fichiers de règlement au-delà de deux heures. La réconciliation cesse d'être un recours et devient la procédure normale.
3 novembre 2025
Séparation des cycles d'autorisation et de litige
Les cycles 1 à 10 ne portent plus que les transactions autorisées. Les litiges passent dans deux cycles dédiés, 11 et 12, identifiés dans les fichiers de règlement par les libellés DC1 et DC2. Les heures de coupure et les échéances de règlement restent inchangées.
Lire les drapeaux UDIR
Drapeau
Ce qu'il exprime
Codes associés
DRC
Confirmation de contre-passation du débit
102, 103 ; 104 lorsque la transaction d'origine n'a pas été débitée ; 105 en temporisation
TCC
Confirmation de crédit de la transaction, par laquelle la banque du bénéficiaire atteste que les fonds sont arrivés
102, 103
RET
Retour à l'initiative du bénéficiaire
114 à 120
RRC
Confirmation de contre-passation du retour
501 en succès, 502 en temporisation
BUU / RUU / PUU
Impossibilité de mettre à jour, côté bénéficiaire, retour ou réponse à réclamation
UT1 à UT6
Motifs UT
La raison réelle du refus de mise à jour
UT1 compte clôturé, UT2 instructions du client, UT3 gel du crédit, UT4 traitement en double, UT5 erreur technique
Drapeaux de l'interface unifiée de résolution des litiges (UDIR) et codes associés, d'après la spécification NPCI
Les trois niveaux de rapprochement, et la clé de chacun
NIVEAU 1 : COMMANDE <-> TRANSACTION
cle : votre reference de commande, portee a l'initiation
source : vos evenements + le rapport de l'agregateur
ecart type : commande sans transaction (abandon), ou transaction
sans commande (double soumission cote client)
NIVEAU 2 : TRANSACTION <-> CYCLE DE REGLEMENT
cle : identifiant de la transaction et RRN
source : fichiers produits a chaque cycle
depuis le 03/11/2025 : cycles 1-10 = autorisations,
cycles 11-12 = litiges (libelles DC1, DC2)
ecart type : transaction reussie non reglee au cycle attendu
-> ce n'est PAS un echec, c'est un decalage de cycle
NIVEAU 3 : REGLEMENT <-> ENCAISSEMENT BANCAIRE
cle : reference de versement de l'agregateur
source : releve du compte de reversement
ecart type : montant net different du brut attendu
-> commissions, retenues, reprises de litige
REGLE DE CONCEPTION
Ne jamais rapprocher sur (montant, horodatage). Sur un rail qui
traite plus de vingt milliards d'operations par mois, la collision
est certaine, pas probable.
ℹ️
La contestation se gagne au cycle suivant, ou pas du tout
Depuis le 15 février 2025, une contestation UPI déposée en masse ou via UDIR est acceptée ou rejetée d'office selon la confirmation de crédit ou le retour produit au cycle de règlement suivant. Le délai dont dispose le marchand pour produire une preuve se compte donc en heures. La conséquence organisationnelle prime sur la conséquence technique. La preuve d'exécution doit être disponible sans intervention humaine et transmissible à l'agrégateur dans la journée, qu'elle prenne la forme d'une livraison, d'une prestation ou d'un journal d'accès. Une procédure de litige fondée sur une recherche manuelle dans un back-office produit sa preuve après que la décision automatique a été rendue.
⚠️
Le retard de remboursement porte un prix affiché
La circulaire RBI du 20 septembre 2019 harmonise les délais de traitement des transactions échouées. Sur UPI, un compte débité sans crédit du bénéficiaire doit donner lieu à contre-passation au plus tard à T+1, faute de quoi le client perçoit ₹100 par jour de retard. L'indemnité se cumule par transaction et par jour de retard. Un lot de dix mille transactions bloquées cinq jours coûte ainsi cinq millions de roupies, avant toute considération d'image. Le dispositif de rejeu et de remboursement automatique pèse donc sur le compte de résultat, au-delà de la seule commodité d'exploitation.
🎯 Question éclair
Une transaction UPI marquée réussie chez vous n'apparaît dans aucun fichier de règlement du cycle attendu. Quelle interprétation retenez-vous ?
Chapitre 6. Codes de refus NPCI et limites : la table de décision.
Une table de décision associe à chaque code de refus la suite à lui donner. Elle traite trois interrogations, l'origine du refus, l'intérêt d'une nouvelle tentative et l'opportunité d'informer le client. La spécification NPCI répond déjà à la première par la classification BD ou TD, qui sépare le refus commercial du refus technique. Les deux autres relèvent de la table elle-même. L'équipe d'exploitation la tient à jour au fil des évolutions de la spécification.
Code
Description
BD / TD
Décision
Z9
Fonds insuffisants sur le compte du payeur
BD
Aucune reprise automatique. Proposer un autre instrument, ou reprogrammer
ZM / Z6
Code confidentiel invalide, puis nombre d'essais dépassé
BD
Le payeur doit reprendre la main. Z6 annonce un blocage : ne pas relancer le même jour
ZA
Transaction refusée par le client
BD
Refus explicite. Le traiter comme un échec technique détruit la relation
Z8 / Z7 / ZU
Plafond unitaire, plafond de fréquence, plafond de la banque du payeur
BD
Fractionner ou changer de rail. La contrainte est chez l'émetteur, pas chez vous
FL
Plafond de première transaction dépassé, pour un utilisateur qui débute sur UPI
BD
Cas de nouveau client. Proposer un montant réduit, ou différer
U02 / U03
Plafond de montant dépassé, plafond de débit net dépassé
BD
Vérifier la catégorie marchande attribuée et le plafond associé
U16
Seuil de risque dépassé
BD
Ne pas retenter. Un rejeu répété aggrave le score du payeur et le vôtre
B3
Transaction non autorisée sur ce compte : compte de mineur, compte professionnel, procédure judiciaire
BD
Le compte est structurellement inéligible. Demander un autre compte
XH / XI
Compte inexistant, côté remettant ou côté bénéficiaire
BD
Vérifier l'adressage avant tout rejeu. Sur XI, l'erreur peut être de votre côté
U28 / U78
Banque du payeur indisponible, banque du bénéficiaire hors ligne
TD
Reprise différée légitime. À corréler avec la publication mensuelle de disponibilité
U69
Demande de paiement collect expirée
BD
Le rail a fonctionné. Le réglage est le délai d'expiration, ou l'abandon du mode collect
U77 / X6 / ZN
Marchand bloqué, marchand invalide, fonction indisponible pour le marchand chez la banque acquéreuse
TD / BD
Le problème est dans votre paramétrage d'acceptation. Escalader à l'agrégateur, ne pas relancer le client
Codes de refus UPI fréquents en encaissement marchand, et la décision associée (source : NPCI, UPI Error and Response Codes v2.9)
Les limites ne viennent pas toutes du même endroit
Un plafond UPI provient de trois sources distinctes, et le code de refus indique laquelle s'est appliquée. La NPCI fixe un cadre par catégorie, tandis que la banque du payeur applique ses propres bornes, que signalent ZU, Z8 et Z7. La couche de service UPI ajoute enfin ses propres plafonds de montant et de débit net. U02 et U03 les signalent. Rapporter tous les plafonnements à la NPCI conduit à demander une dérogation sans objet, alors que la limite atteinte est celle de l'établissement du client.
Catégorie
Par transaction
Cumul sur 24 heures
Marchés de capitaux
₹5 lakh
₹10 lakh
Assurance
₹5 lakh
₹10 lakh
Encaissements de prêts et échéances
₹5 lakh
₹10 lakh
Voyage
₹5 lakh
₹10 lakh
Place de marché publique et paiements à l'État
₹5 lakh
₹10 lakh
Règlement de relevé de carte de crédit
₹5 lakh
₹6 lakh
Bijouterie
₹2 lakh
₹6 lakh
Ouverture de compte à distance, versement initial
₹2 lakh
₹2 lakh
Entre particuliers (P2P), inchangé
–
₹1 lakh
Plafonds UPI par catégorie marchande vérifiée, applicables depuis le 15 septembre 2025 (NPCI, circulaire du 28 août 2025, addendum à la circulaire du 24 août 2024)
🔑
Le plafond ne s'obtient pas, il s'attribue
Les plafonds relevés depuis le 15 septembre 2025 ne s'appliquent qu'aux paiements vers un marchand vérifié au sens des règles NPCI, et dans une catégorie éligible. Deux vérifications portent sur le contrat d'acceptation, et non sur le paramétrage applicatif. La première porte sur le code catégorie marchand effectivement attribué aux identifiants d'acceptation du marchand. Un code générique maintient le plafond de droit commun, quel que soit le secteur d'activité réel. La seconde porte sur le statut de vérification lui-même, qui conditionne l'éligibilité. Un panier moyen supérieur au plafond attribué produit du U02 en masse, et aucune modification du code applicatif ne réduit ce taux.
Rangez vos codes en trois seaux : ne pas retenter (ZA, Z9, B3, U16), retenter plus tard (U28, U78, U67), corriger avant de retenter (XH, U02, ZH).
Comptez les refus par banque de payeur, pas seulement en agrégat. Une dégradation d'un seul établissement se noie dans un taux global.
Ne relancez jamais un client sur un code qui vous désigne : U77, X6 et ZN décrivent votre paramétrage d'acceptation.
Conservez le code brut, jamais un libellé traduit. Un refus se rejoue des mois plus tard, et la table des codes évolue.
Rapprochez chaque mois votre décomposition BD et TD de la publication NPCI par banque : c'est la seule référence externe disponible.
Une exploitation UPI mature se reconnaît à ce qu'elle sait faire de chaque refus. Elle établit, code par code et banque par banque, ce qu'elle peut corriger et ce qu'elle doit accepter. Un taux d'échec global agrège ces deux catégories. Il ne permet donc pas de les séparer. Le choix du mode d'encaissement, la politique de relance et la conception du calendrier de mandats découlent tous de cette table. Celle-ci s'établit avant l'ouverture du volume et se maintient avec la même discipline que le code applicatif.
🎯 Question éclair
Un marchand de bijoux constate un mur de refus U02 sur ses paniers à ₹3 lakh. Quelle est la cause la plus probable ?