PIX
PIX er Brasiliens øjeblikkelige betalingsordning, drevet af Banco Central do Brasil (BACEN). BR Code QR-formatet er en EMVCo MPM-delmængde med Merchant Account Information (tag 26) der bærer en PIX-nøgle, CPF, CNPJ, e-mail, telefonnummer eller tilfældig EVP. PIX nåede sin første billion reais på under to år fra lanceringen (2020 → 2022) og er nu den dominerende detailbetalingsskinne i Brasilien.
Overordnet specifikation:EMVCo MPM v1.1. PIX reserverer handelskontotag
26; alt andet er nedarvet fra EMVCo. Kodning: TLV (Tag-Length-Value) med 2-cifrede tags, 2-cifrede længder og CRC16-CCITT-trailer.
BR Code-struktur, tag 26 (PIX Merchant Account Information)
Det PIX-specifikke indhold ligger i tag 26. Det er selv en indlejret TLV-struktur med disse undertags:
| Undertag | Navn | Længde | Noter |
|---|---|---|---|
00 | GUI, globalt unikt id | 14 | Fast værdi br.gov.bcb.pix. Identificerer ordningen som PIX. |
01 | PIX-nøgle | variabel | CPF (11 cifre), CNPJ (14 cifre), e-mail, telefon (+55DDPHONE) eller EVP (UUID-lignende tilfældig nøgle). |
02 | Yderligere info | variabel, ≤72 | Fritekstbesked til betaleren. Vises til betaleren i deres bankapp. |
25 | URL, dynamisk PIX | variabel | Bruges kun til dynamisk PIX: betalarens app henter den fulde payload fra denne URL ved scanning (beløb, forfaldsdato, udløb, rabat/bøde). Statisk PIX udelader tag 25 helt. |
PIX-nøgletyper
| Nøgletype | Format | Validering |
|---|---|---|
| CPF (personlig skat-id) | 11 cifre, ingen tegnsætning i QR-payload | Mod-11-kontrolsum på de sidste 2 cifre. Maske 123.456.789-09 → rå 12345678909. |
| CNPJ (virksomhedsskat-id) | 14 cifre, ingen tegnsætning | To mod-11-kontrolsummer. Maske 12.345.678/0001-95 → rå 12345678000195. |
| RFC 5321-kompatibel, maks 77 tegn | BACEN konverterer til små bogstaver ved registrering; QR-payload skal matche den registrerede store/lille bogstav-version. | |
| Telefon | E.164 med landekode +55, maks 14 tegn | Format: +55DDNNNNNNNNN, hvor DD er 2-cifret områdekode. Ingen mellemrum eller bindestreger. |
| EVP (tilfældig nøgle) | UUID v4-format, 36 tegn | Genereret server-side af betalarens bank ved registrering. Foretrukket for handlende, der ikke ønsker at eksponere CPF/CNPJ/e-mail/telefon. |
Statisk vs dynamisk PIX
- Statisk PIX (Point of Initiation
11). Alt kodet i QR: PIX-nøgle, handelsdrivendes navn, by, valgfrit fast beløb, valgfri reference. Betalarens app læser det direkte og autoriserer. Bedst til trykte klistermærker, fakturaer, vinduesplakater. Beløbet kan udelades (betaleren indtaster det) eller fastsættes (præcis opkrævning). - Dynamisk PIX (Point of Initiation
12). QR bærer en URL (undertag25). Betalarens app henter en JWS-signeret JSON-payload fra den URL med beløb, forfaldsdato, udløbsvindue og valgfrie regler for forsinkelsesgebyr/rabat. Krævet for faktureringsregninger med udløbsdatoer (boletos híbridos). Bruges også til PIX Cobrança (fakturering).
Kanonisk testvektor, statisk PIX med CPF-nøgle og fast beløb
CPF 12345678909, handelsdrivende LOJA TESTE i SAO PAULO, fast beløb R$10.00, ingen transaktionsreference:
00020126360014br.gov.bcb.pix0114123456789095204000053039865406010.005802BR5910LOJA TESTE6009SAO PAULO62070503***6304XXXX| Tag | Værdi | Betydning |
|---|---|---|
00 | 01 | Payload-formatindikator (altid 01) |
01 | 11 | Statisk startpunkt |
26 | 36 bytes indlejret TLV | PIX Merchant Account Information |
├─ 00 | br.gov.bcb.pix | GUI |
├─ 01 | 12345678909 | CPF-nøgle (11 cifre) |
52 | 0000 | MCC, ukendt / personlig |
53 | 986 | ISO 4217-valutakode for BRL |
54 | 10.00 | Fast transaktionsbeløb |
58 | BR | Landekode |
59 | LOJA TESTE | Handelsdrivendes navn (maks 25 tegn iflg. EMVCo) |
60 | SAO PAULO | Handelsdrivendes by (maks 15 tegn) |
62 | 7 bytes indlejret | Supplerende dataskabelon |
├─ 05 | *** | Referencemærke (pladsholder uden reference) |
63 | XXXX | CRC16-CCITT over alt forud (genberegn ved kodning) |
Almindelige faldgruber
- CPF/CNPJ-maskering. QR-payloaden bruger kun de umaskerede cifre (
12345678909, ikke123.456.789-09). Nogle kodegeneratorer efterlader fejlagtigt punktum og bindestreger, den resulterende QR fejler i enhver bankapp med "chave PIX inválida." - Tegnsæt betyder noget. BACEN-specifikationen siger ISO/IEC 8859-1 (Latin-1) til handelsdrivendes navn og by. Accentuerede tegn (
São Paulo) skal kodes i Latin-1, inden TLV-længden beregnes, ikke UTF-8. UTF-8-kodning blæser bytetallet op og ødelægger længdefeltet. - CRC-beregning. CRC16-CCITT (polynomium
0x1021, init0xFFFF, intet afsluttende XOR) dækker alt fra tag00til6304, herunder det bogstavelige tag+længde for CRC-feltet selv. Almindelig fejl: CRC beregnet over det forkerte interval, QR parses korrekt i nogle apps og fejler i andre. - Beløbsformat er streng, ikke tal. Tag
54er en streng:10.00, ikke1000. To decimaler påkrævet. Maks to decimaler, BRL har ingen undercent-nominaler. - Statisk PIX har ingen indbygget refusion. Når betalt er statisk PIX øjeblikkelig og endelig. Handlende skal håndtere refusioner out-of-band (en omvendt PIX fra handlende tilbage til betaleren). Vis dette tydeligt på trykte materialer.
- Klistermærke-overlay-svindel. Fysiske PIX QR-klistermærker ved kassedisken er blevet angrebet med overlejringssvindel, angribere sætter deres eget QR oven på handelsdrivendes. Udskift statiske QR-klistermærker jævnligt, laminer dem og vis den forventede PIX-nøgle som klartekst ved siden af klistermærket, så betaleren kan verificere.
- Investerings-/værdipapirrestriktion. Comissão de Valores Mobiliários (CVM) forbyder PIX til uregistreret investeringsopfordring. PIX QR på landingssider for tokens, "garanteret afkast"-produkter eller MLM-ordninger udløser CVM-håndhævelse.
- Dynamisk PIX kræver et live-endepunkt. Hvis tag
25-URL'en er nede, fejler betalingen ved scanning. Brug en vært du kontrollerer og hold den kørende i mindst QR-kodens trykte levetid.
Kompatibilitet med bankingapps
Enhver licenseret PIX-deltager (bank eller betalingsinstitution) understøtter BR Code i deres forbrugerapp. Bemærkelsesværdige implementeringer:
| App | Statisk | Dynamisk | Noter |
|---|---|---|---|
| Itaú, Bradesco, Santander, BB, Caixa | Ja | Ja | Top-5-banker. Fuld PIX-understøttelse inkl. Cobrança, agendado og devolução. |
| Nubank | Ja | Ja | Mest populære neobank i Brasilien. Rent PIX-interface. |
| Inter, C6 Bank, PicPay | Ja | Ja | Fuld PIX-understøttelse. |
| Mercado Pago | Ja | Ja | Betalingsinstitution; PIX er én af flere betalingsskinne i samme app. |
| Generisk iOS/Android-kamera | Nej | Nej | Native kameraapps fortolker ikke BR Code som betalingsintention. Brugeren skal først åbne bankingappen. |
Se også
- /pix-qr-code/, PIX-generator med CPF/CNPJ-validering og live BR Code-kodning.
- /standards/emvco/, den overordnede EMVCo MPM-specifikation.
- /standards/upi/, UPI Indien, endnu et EMVCo-afledt ordning med tag 26.
- /standards/, tilbage til standardindekset.