PIX
PIX is het Braziliaanse instantbetalingsschema, beheerd door de Banco Central do Brasil (BACEN). Het BR Code QR-formaat is een EMVCo MPM-subset met Merchant Account Information (tag 26) met een PIX-sleutel, een CPF, CNPJ, e-mailadres, telefoonnummer of willekeurige EVP. PIX verwerkte zijn eerste biljoen reais in minder dan twee jaar na de lancering (2020 → 2022) en is nu het dominante betalingsnetwerk voor de detailhandel in Brazilië.
Bovenliggende specificatie:EMVCo MPM v1.1. PIX reserveert handelaarsaccounttag
26; al het overige is geërfd van EMVCo. Codering: TLV (Tag-Length-Value) met 2-cijferige tags, 2-cijferige lengtes en CRC16-CCITT-trailer.
BR Code-structuur, tag 26 (PIX Merchant Account Information)
De PIX-specifieke inhoud bevindt zich in tag 26. Dit is zelf een geneste TLV-structuur met deze sub-tags:
| Sub-tag | Naam | Lengte | Opmerkingen |
|---|---|---|---|
00 | GUI, globaal uniek identificator | 14 | Vaste waarde br.gov.bcb.pix. Identificeert het schema als PIX. |
01 | PIX-sleutel | variabel | CPF (11 cijfers), CNPJ (14 cijfers), e-mail, telefoon (+55DDPHONE) of EVP (UUID-achtige willekeurige sleutel). |
02 | Aanvullende informatie | variabel, ≤72 | Vrije-tekst bericht voor betaler. Wordt weergegeven in de bankapp van de betaler. |
25 | URL, dynamisch PIX | variabel | Alleen gebruikt voor dynamisch PIX: de app van de betaler haalt de volledige payload op uit deze URL bij het scannen (bedrag, vervaldatum, verloopdatum, korting/boete). Statisch PIX laat tag 25 volledig weg. |
PIX-sleuteltypes
| Sleuteltype | Formaat | Validatie |
|---|---|---|
| CPF (persoonlijk belasting-ID) | 11 cijfers, geen leestekens in QR-payload | Mod-11-controlegetal op de laatste 2 cijfers. Masker 123.456.789-09 → ongemaskeerd 12345678909. |
| CNPJ (zakelijk belasting-ID) | 14 cijfers, geen leestekens | Twee mod-11-controlegetallen. Masker 12.345.678/0001-95 → ongemaskeerd 12345678000195. |
| RFC 5321-conform, max 77 tekens | BACEN converteert naar kleine letters bij registratie; QR-payload moet overeenkomen met het geregistreerde hoofdlettergebruik. | |
| Telefoon | E.164 met landcode +55, max 14 tekens | Formaat: +55DDNNNNNNNNN waarbij DD de 2-cijferige netnummercode is. Geen spaties of koppeltekens. |
| EVP (willekeurige sleutel) | UUID v4-formaat, 36 tekens | Gegenereerd aan de serverzijde door de bank van de betaler bij registratie. Aanbevolen voor handelaars die geen CPF/CNPJ/e-mail/telefoon willen vrijgeven. |
Statisch vs dynamisch PIX
- Statisch PIX (Point of Initiation
11). Alles gecodeerd in de QR: PIX-sleutel, naam handelaar, stad handelaar, optioneel vast bedrag, optionele referentie. De app van de betaler leest dit direct en autoriseert. Het beste voor gedrukte stickers, facturen, raamposters. Bedrag kan worden weggelaten (betaler typt het in) of worden vastgesteld (exacte kosten). - Dynamisch PIX (Point of Initiation
12). QR draagt een URL (sub-tag25). De app van de betaler haalt een JWS-ondertekende JSON-payload op van die URL met bedrag, vervaldatum, verloopvenster en optionele regels voor late vergoeding/korting. Vereist voor facturen met vervaldatums (boletos híbridos). Ook gebruikt voor PIX Cobrança (facturering).
Canonieke testvektor, statisch PIX met CPF-sleutel en vast bedrag
CPF 12345678909, handelaar LOJA TESTE in SAO PAULO, vast bedrag R$10.00, geen transactiereferentie:
00020126360014br.gov.bcb.pix0114123456789095204000053039865406010.005802BR5910LOJA TESTE6009SAO PAULO62070503***6304XXXX| Tag | Waarde | Betekenis |
|---|---|---|
00 | 01 | Payload-formaatindicator (altijd 01) |
01 | 11 | Statisch startpunt |
26 | 36 bytes genest TLV | PIX Merchant Account Information |
├─ 00 | br.gov.bcb.pix | GUI |
├─ 01 | 12345678909 | CPF-sleutel (11 cijfers) |
52 | 0000 | MCC, onbekend / persoonlijk |
53 | 986 | ISO 4217-valutacode voor BRL |
54 | 10.00 | Vast transactiebedrag |
58 | BR | Landcode |
59 | LOJA TESTE | Naam handelaar (max 25 tekens per EMVCo) |
60 | SAO PAULO | Stad handelaar (max 15 tekens) |
62 | 7 bytes genest | Aanvullende gegevenssjabloon |
├─ 05 | *** | Referentielabel (tijdelijke aanduiding zonder referentie) |
63 | XXXX | CRC16-CCITT over alles daarvoor (herbereken bij codering) |
Veelvoorkomende valkuilen
- CPF/CNPJ-maskering. De QR-payload gebruikt alleen de niet-gemaskeerde cijfers (
12345678909, niet123.456.789-09). Sommige codegeneratoren laten punten en koppeltekens per ongeluk staan, de resulterende QR mislukt in elke bankapp met "chave PIX inválida." - Tekenset is belangrijk. De BACEN-specificatie schrijft ISO/IEC 8859-1 (Latin-1) voor voor de naam en stad van de handelaar. Tekens met accenten (
São Paulo) moeten worden gecodeerd in Latin-1 voordat de TLV-lengte wordt berekend, niet in UTF-8. UTF-8-codering vergroot het aantal bytes en maakt het lengteveld ongeldig. - CRC-berekening. CRC16-CCITT (polynoom
0x1021, init0xFFFF, geen definitieve XOR) omvat alles van tag00tot en met6304, inclusief de letterlijke tag+lengte van het CRC-veld zelf. Veelvoorkomende fout: CRC berekend over het verkeerde bereik, QR wordt correct geparseerd in sommige apps en mislukt in andere. - Bedragformaat is een tekenreeks, geen getal. Tag
54is een tekenreeks:10.00, niet1000. Twee decimalen zijn verplicht. Maximaal twee decimalen, BRL heeft geen sub-centdenominaties. - Statisch PIX heeft geen ingebouwde terugbetaling. Eenmaal betaald is statisch PIX onmiddellijk en definitief. Handelaars moeten terugbetalingen buiten de band afhandelen (een omgekeerde PIX van de handelaar terug naar de betaler). Vermeld dit duidelijk op gedrukte materialen.
- Sticker-overlay-fraude. Fysieke PIX QR-stickers bij kassa's zijn aangevallen met overlay-fraude, aanvallers plakken hun eigen QR op die van de handelaar. Vervang statische QR-stickers regelmatig, lamineer ze en toon de verwachte PIX-sleutel als platte tekst naast de sticker zodat de betaler kan verifiëren.
- Beleggings-/effectenbeperking. De Comissão de Valores Mobiliários (CVM) verbiedt PIX voor niet-geregistreerde beleggingswerving. PIX QR op landingspagina's voor tokens, "gegarandeerd rendement"-producten of MLM-schema's leiden tot handhavingsmaatregelen van de CVM.
- Dynamisch PIX vereist een live-eindpunt. Als de tag
25-URL dood is, mislukt de betaling bij het scannen. Gebruik een host die u beheert en houd deze minimaal gedurende de gedrukte levensduur van de QR actief.
Compatibiliteit met bankapps
Elke gelicenseerde PIX-deelnemer (bank of betalingsinstelling) ondersteunt BR Code in zijn consumentenapp. Opmerkelijke implementaties:
| App | Statisch | Dynamisch | Opmerkingen |
|---|---|---|---|
| Itaú, Bradesco, Santander, BB, Caixa | Ja | Ja | Top 5 banken. Volledige PIX-ondersteuning inclusief Cobrança, agendado en devolução. |
| Nubank | Ja | Ja | Populairste neobank in Brazilië. Overzichtelijke PIX-UX. |
| Inter, C6 Bank, PicPay | Ja | Ja | Volledige PIX-ondersteuning. |
| Mercado Pago | Ja | Ja | Betalingsinstelling; PIX is een van meerdere betalingsnetwerken in dezelfde app. |
| Generieke iOS/Android-camera | Nee | Nee | Standaard camera-apps parseren BR Code niet als betalingsbedoeling. Gebruiker moet eerst de bankapp openen. |
Zie ook
- /pix-qr-code/, de PIX-generator met CPF/CNPJ-validatie en live BR Code-codering.
- /standards/emvco/, de bovenliggende EMVCo MPM-specificatie.
- /standards/upi/, UPI India, een ander van EMVCo afgeleid schema met tag 26.
- /standards/, terug naar de standaardenindex.