🎓 FormationMarchés & internationalAvancé⏱ 60 min

Pix en profondeur : intégrer et exploiter. 7 chapitres et un QCM final.

Le Pix vu depuis la salle des machines, pour une équipe qui encaisse au volume. Résoudre une chave sans épuiser son balde de fichas au DICT, défendre ses clés contre une reivindicação de posse, choisir entre QR statique, cob et cobv, câbler le calendrier imposé du Pix Automático, instruire une devolução et répondre à une notificação de infração, ancrer la réconciliation sur l'EndToEndId, encaisser malgré les limites nocturnes et exploiter les statistiques de fraude du DICT.

Chapitre 1. Le DICT n'est pas un annuaire : c'est un quota.

Le DICT, Diretório de Identificadores de Contas Transacionais, traduit une chave Pix en coordonnées de compte. L'intégration qui casse en production ne casse presque jamais sur cette traduction, mais sur le rationnement. Le Banco Central do Brasil compte les consultations, utilisateur par utilisateur et participant par participant, et refuse le service quand le compteur tombe à zéro. Une équipe qui ignore ce mécanisme jusqu'à la mise en production l'apprend par un pic d'erreurs HTTP 429.

Ce que le DICT accepte de stocker, et en quelle quantité

  • Cinq chaves par conta transacional pour un titulaire inscrit au CPF, vingt pour un titulaire inscrit au CNPJ. Le plafond porte sur le compte, quel que soit le nombre de cotitulaires (Manual Operacional do DICT, version 8.4, Banco Central do Brasil).
  • Une chave, un compte. Le même identifiant ne peut jamais pointer deux comptes transactionnels à la fois.
  • La chave aleatória est produite par le DICT, pas choisie par l'utilisateur : c'est un UUID au format de la RFC 4122. Aucune personnalisation n'est possible.
  • Formats de stockage : CPF sur 11 chiffres, CNPJ sur 14 caractères alphanumériques, tous deux sans point ni tiret ; téléphone au standard E.164 ; adresse électronique sur 77 caractères au plus.
  • Le nom affiché au payeur vient de la Receita Federal. Pour une personne morale, le champ Name porte la razão social et le champ TradeName le nome fantasia, seulement s'il figure à l'inscription au CNPJ. Pour un microempreendedor individual, TradeName doit rester vide.

Chaque consultation transporte l'en-tête PI-PayerId. Il porte le CPF ou le CNPJ de l'utilisateur qui paiera, au format numérique nu, et doit rester identique pour toutes les consultations de cet utilisateur chez un participant donné. Le DICT s'en sert pour tenir deux indicateurs : les consultations qui n'ont produit aucun ordre de paiement, et les consultations portant sur des chaves non enregistrées. Le second coûte vingt fois le premier.

BaldeTaille maximaleDécrémentCréditRecharge temporelle
Utilisateur final personne physique100 fiches par balde, un balde pour téléphone et e-mail, un autre pour CPF, CNPJ et chave aleatória1 fiche par consultation valide, 20 fiches par consultation invalide+1 fiche quand la consultation est suivie d'un ordre de paiement reçu par le SPI2 fiches par minute, dans chaque balde
Utilisateur final personne morale1 000 fiches par balde, même découpage1 fiche par consultation valide, 20 fiches par consultation invalide+2 fiches par consultation suivie d'un ordre reçu au SPI20 fiches par minute, dans chaque balde
ParticipantDe 50 000 à 50 fiches selon la catégorie attribuée par le BCB1 fiche par consultation valide, 3 fiches par consultation invalide+1 fiche par consultation suivie d'un ordre reçu au SPISelon la catégorie
Le balde de fichas appliqué à l'opération getEntry (Manual Operacional do DICT v8.4, Banco Central do Brasil)
CatégorieTaille du baldeRecharge par minute
A50 00025 000
B40 00020 000
C30 00015 000
D16 0008 000
E5 0002 500
F500250
G25025
H502
Les huit catégories de participant : c'est le BCB qui classe, et il peut déclasser en cas de suspicion d'attaque de lecture
⚠️
Une chave inexistante coûte vingt fois une chave trouvée
L'exemple est celui du manuel lui-même. Un utilisateur personne physique dont le balde contient 5 fiches interroge une chave non enregistrée. Le DICT répond NOT FOUND en HTTP 404 et retire 20 fiches, portant le solde à −15. À raison de deux fiches par minute, cet utilisateur ne pourra plus consulter pendant huit minutes. Un balde vide fait répondre RATE LIMITING en HTTP 429, et une saisie libre de chave dans un formulaire, sans validation de format côté client, produit exactement ce résultat à grande échelle.
🔑
La parade est normée : checkKeys et le cache d'existence
Le manuel prévoit l'outil qui évite la pénalité. L'opération `checkKeys` filtre, dans un ensemble d'éléments candidats, ceux qui sont enregistrés au DICT ; elle est d'usage exclusivement interne au participant. Elle alimente un cache d'existence de chave Pix, que le participant consomme pour piloter ses baldes et pour préparer des paiements en masse. Les entrées issues des consultations d'initiation et des processus de portabilité ou de revendication se conservent trente jours. Le cache ne peut stocker que trois choses : le hash SHA-256 de la chave et les deux dates de mise à jour. Ni la chave en clair, ni les données du porteur, ni celles du compte.
🎯 Question éclair
Un formulaire laisse le client saisir une chave sans contrôle de format. Beaucoup de saisies ne correspondent à aucune chave enregistrée. Quel est l'effet direct au DICT ?