PIX
PIX to brazylijski system płatności natychmiastowych prowadzony przez Banco Central do Brasil (BACEN). Format BR Code QR to podzbiór EMVCo MPM z Merchant Account Information (tag 26) niosącym klucz PIX, CPF, CNPJ, e-mail, numer telefonu lub losowy EVP. PIX rozliczył pierwszy bilion reali w mniej niż dwa lata od uruchomienia (2020 → 2022) i stał się dominującą detaliczną szyną płatniczą w Brazylii.
Nadrzędna specyfikacja:EMVCo MPM v1.1. PIX rezerwuje tag konta sprzedawcy
26; wszystko inne dziedziczy z EMVCo. Kodowanie: TLV (Tag-Length-Value) z 2-cyfrowymi tagami, 2-cyfrowymi długościami i trailera CRC16-CCITT.
Struktura BR Code, tag 26 (PIX Merchant Account Information)
Zawartość specyficzna dla PIX znajduje się w tagu 26. Jest to zagnieżdżona struktura TLV z następującymi podtagami:
| Podtag | Nazwa | Długość | Uwagi |
|---|---|---|---|
00 | GUI, globalny unikatowy identyfikator | 14 | Stała wartość br.gov.bcb.pix. Identyfikuje schemat jako PIX. |
01 | Klucz PIX | zmienna | CPF (11 cyfr), CNPJ (14 cyfr), e-mail, telefon (+55DDPHONE) lub EVP (losowy klucz w formacie UUID). |
02 | Informacje dodatkowe | zmienna, ≤72 | Dowolna wiadomość tekstowa dla płatnika. Wyświetlana płatnikowi w aplikacji bankowej. |
25 | URL, dynamiczny PIX | zmienna | Używane tylko dla dynamicznego PIX: aplikacja płatnika pobiera z tego URL pełny ładunek przy skanowaniu (kwota, termin płatności, wygaśnięcie, rabat/kara). Statyczny PIX całkowicie pomija tag 25. |
Typy kluczy PIX
| Typ klucza | Format | Weryfikacja |
|---|---|---|
| CPF (indywidualny NIP) | 11 cyfr, brak znaków interpunkcyjnych w ładunku QR | Suma kontrolna Mod-11 na ostatnich 2 cyfrach. Maska 123.456.789-09 → surowe 12345678909. |
| CNPJ (firmowy NIP) | 14 cyfr, bez interpunkcji | Dwie sumy kontrolne mod-11. Maska 12.345.678/0001-95 → surowe 12345678000195. |
| Zgodny z RFC 5321, maks 77 znaków | BACEN konwertuje na małe litery podczas rejestracji; ładunek QR musi odpowiadać zarejestrowanej wielkości liter. | |
| Telefon | E.164 z kodem kraju +55, maks 14 znaków | Format: +55DDNNNNNNNNN, gdzie DD to 2-cyfrowy kod kierunkowy. Bez spacji i myślników. |
| EVP (losowy klucz) | Format UUID v4, 36 znaków | Generowany po stronie serwera przez bank płatnika podczas rejestracji. Zalecany dla sprzedawców, którzy nie chcą ujawniać CPF/CNPJ/e-maila/telefonu. |
Statyczny a dynamiczny PIX
- Statyczny PIX (Point of Initiation
11). Wszystko zakodowane w QR: klucz PIX, nazwa sprzedawcy, miasto sprzedawcy, opcjonalna stała kwota, opcjonalne odniesienie. Aplikacja płatnika odczytuje bezpośrednio i autoryzuje. Najlepszy do drukowanych naklejek, faktur, plakatów okiennych. Kwotę można pominąć (płatnik wpisuje) lub ustalić (dokładna opłata). - Dynamiczny PIX (Point of Initiation
12). QR niesie URL (podtag25). Aplikacja płatnika pobiera z tego URL podpisany JWS ładunek JSON z kwotą, terminem płatności, oknem wygaśnięcia i opcjonalnymi zasadami opłaty za zwłokę/rabatu przy skanowaniu. Wymagany dla faktur z datami wygaśnięcia (boletos híbridos). Używany również dla PIX Cobrança (fakturowanie).
Kanoniczny wektor testowy, statyczny PIX z kluczem CPF i stałą kwotą
CPF 12345678909, sprzedawca LOJA TESTE w SAO PAULO, stała kwota R$10.00, brak odniesienia do transakcji:
00020126360014br.gov.bcb.pix0114123456789095204000053039865406010.005802BR5910LOJA TESTE6009SAO PAULO62070503***6304XXXX| Tag | Wartość | Znaczenie |
|---|---|---|
00 | 01 | Wskaźnik formatu ładunku (zawsze 01) |
01 | 11 | Statyczny punkt inicjacji |
26 | 36 bajtów zagnieżdżonego TLV | PIX Merchant Account Information |
├─ 00 | br.gov.bcb.pix | GUI |
├─ 01 | 12345678909 | Klucz CPF (11 cyfr) |
52 | 0000 | MCC, nieznany / osobisty |
53 | 986 | Kod waluty ISO 4217 dla BRL |
54 | 10.00 | Stała kwota transakcji |
58 | BR | Kod kraju |
59 | LOJA TESTE | Nazwa sprzedawcy (maks 25 znaków wg EMVCo) |
60 | SAO PAULO | Miasto sprzedawcy (maks 15 znaków) |
62 | 7 bajtów zagnieżdżonych | Szablon danych dodatkowych |
├─ 05 | *** | Etykieta referencyjna (zastępnik bez odniesienia) |
63 | XXXX | CRC16-CCITT nad wszystkim wcześniejszym (przelicz przy kodowaniu) |
Typowe pułapki
- Maskowanie CPF/CNPJ. Ładunek QR używa tylko niemaskowanych cyfr (
12345678909, nie123.456.789-09). Niektóre generatory kodu pozostawiają kropki i myślniki przez pomyłkę, wynikowy QR kończy się niepowodzeniem w każdej aplikacji bankowej z komunikatem "chave PIX inválida." - Zestaw znaków ma znaczenie. Specyfikacja BACEN wymaga ISO/IEC 8859-1 (Latin-1) dla nazwy sprzedawcy i miasta. Znaki z akcentami (
São Paulo) muszą być zakodowane w Latin-1 przed obliczeniem długości TLV, nie w UTF-8. Kodowanie UTF-8 zwiększa liczbę bajtów i niszczy pole długości. - Obliczanie CRC. CRC16-CCITT (wielomian
0x1021, init0xFFFF, brak końcowego XOR) obejmuje wszystko od tagu00do6304, łącznie z dosłownym tagiem+długością samego pola CRC. Typowy błąd: CRC obliczony nad złym zakresem, QR jest poprawnie parsowany w niektórych aplikacjach i zawodzi w innych. - Format kwoty to ciąg znaków, nie liczba. Tag
54to ciąg:10.00, nie1000. Wymagane są dwa miejsca dziesiętne. Maks dwa dziesiętne, BRL nie ma nominałów poniżej centa. - Statyczny PIX nie ma wbudowanego zwrotu środków. Po zapłaceniu statyczny PIX jest natychmiastowy i ostateczny. Sprzedawcy muszą obsługiwać zwroty poza kanałem (odwrotny PIX od sprzedawcy z powrotem do płatnika). Wyświetl to wyraźnie na drukowanych materiałach.
- Oszustwo naklejkami nakładkowymi. Fizyczne naklejki PIX QR przy kasach były atakowane przez nakładkowe oszustwa, atakujący przyklejają własny QR na QR sprzedawcy. Regularnie wymieniaj statyczne naklejki QR, laminuj je i wyświetlaj oczekiwany klucz PIX jako zwykły tekst obok naklejki, aby płatnik mógł to zweryfikować.
- Ograniczenie inwestycyjne/papierów wartościowych. Comissão de Valores Mobiliários (CVM) zabrania PIX w niezarejestrowanych ofertach inwestycyjnych. PIX QR na stronach docelowych dla tokenów, produktów "gwarantowanego zwrotu" lub schematów MLM wywołuje działania egzekucyjne CVM.
- Dynamiczny PIX wymaga aktywnego punktu końcowego. Jeśli URL tagu
25jest martwy, płatność kończy się niepowodzeniem przy skanowaniu. Używaj hosta, który kontrolujesz, i utrzymuj go w działaniu przez co najmniej drukowany okres życia QR.
Kompatybilność aplikacji bankowych
Każdy licencjonowany uczestnik PIX (bank lub instytucja płatnicza) obsługuje BR Code w swojej aplikacji konsumenckiej. Godne uwagi implementacje:
| Aplikacja | Statyczny | Dynamiczny | Uwagi |
|---|---|---|---|
| Itaú, Bradesco, Santander, BB, Caixa | Tak | Tak | Top-5 banków. Pełna obsługa PIX, w tym Cobrança, agendado i devolução. |
| Nubank | Tak | Tak | Najpopularniejszy neobank w Brazylii. Przejrzysty UX PIX. |
| Inter, C6 Bank, PicPay | Tak | Tak | Pełna obsługa PIX. |
| Mercado Pago | Tak | Tak | Instytucja płatnicza; PIX jest jedną z kilku szyn płatniczych w tej samej aplikacji. |
| Ogólna kamera iOS/Android | Nie | Nie | Natywne aplikacje aparatu nie analizują BR Code jako zamiar płatności. Użytkownik musi najpierw otworzyć aplikację bankową. |
Zobacz też
- /pix-qr-code/, generator PIX z walidacją CPF/CNPJ i kodowaniem BR Code na żywo.
- /standards/emvco/, nadrzędna specyfikacja EMVCo MPM.
- /standards/upi/, UPI Indie, inny schemat wywodzący się z EMVCo z tagiem 26.
- /standards/, powrót do indeksu standardów.