PIX
PIX, бразильская схема мгновенных платежей, управляемая Banco Central do Brasil (BACEN). Формат QR BR Code является подмножеством EMVCo MPM с информацией о торговом счёте (тег 26), несущей ключ PIX, CPF, CNPJ, email, номер телефона или случайный EVP. PIX обработал первый триллион реалов менее чем за два года с момента запуска (2020 → 2022) и стал доминирующей розничной платёжной сетью в Бразилии.
Родительская спецификация:EMVCo MPM v1.1. PIX резервирует тег торгового счёта
26; всё остальное наследуется от EMVCo. Кодировка: TLV (тег-длина-значение) с 2-значными тегами, 2-значными длинами и трейлером CRC16-CCITT.
Структура BR Code, тег 26 (PIX Merchant Account Information)
Контент, специфичный для PIX, находится в теге 26. Он сам по себе является вложенной структурой TLV со следующими подтегами:
| Подтег | Название | Длина | Примечания |
|---|---|---|---|
00 | GUI, глобальный уникальный идентификатор | 14 | Фиксированное значение br.gov.bcb.pix. Идентифицирует схему как PIX. |
01 | Ключ PIX | переменная | CPF (11 цифр), CNPJ (14 цифр), email, телефон (+55DDPHONE) или EVP (случайный ключ в формате UUID). |
02 | Дополнительная информация | переменная, ≤72 | Свободный текст сообщения для плательщика. Отображается плательщику в его банковском приложении. |
25 | URL, динамический PIX | переменная | Используется только для динамического PIX: приложение плательщика загружает полный payload по этому URL при сканировании (сумма, срок оплаты, истечение, скидка/штраф). Статический PIX полностью опускает тег 25. |
Типы ключей PIX
| Тип ключа | Формат | Проверка |
|---|---|---|
| CPF (личный налоговый ID) | 11 цифр, без знаков пунктуации в payload QR | Контрольная сумма Mod-11 на последних 2 цифрах. Маска 123.456.789-09 → сырые 12345678909. |
| CNPJ (корпоративный налоговый ID) | 14 цифр, без пунктуации | Две контрольные суммы mod-11. Маска 12.345.678/0001-95 → сырые 12345678000195. |
| Совместимый с RFC 5321, макс 77 символов | BACEN приводит к нижнему регистру при регистрации; payload QR должен совпадать с зарегистрированным регистром. | |
| Телефон | E.164 с кодом страны +55, макс 14 символов | Формат: +55DDNNNNNNNNN, где DD, 2-значный код города. Без пробелов и дефисов. |
| EVP (случайный ключ) | Формат UUID v4, 36 символов | Генерируется на стороне сервера банком плательщика при регистрации. Рекомендуется для продавцов, не желающих раскрывать CPF/CNPJ/email/телефон. |
Статический и динамический PIX
- Статический PIX (Point of Initiation
11). Всё закодировано в QR: ключ PIX, название продавца, город продавца, необязательная фиксированная сумма, необязательная ссылка. Приложение плательщика считывает напрямую и авторизует. Лучше всего подходит для печатных наклеек, счетов-фактур, оконных плакатов. Сумму можно опустить (плательщик вводит) или зафиксировать (точная оплата). - Динамический PIX (Point of Initiation
12). QR несёт URL (подтег25). Приложение плательщика при сканировании загружает с этого URL JSON-payload, подписанный JWS, содержащий сумму, срок оплаты, окно истечения и необязательные правила штрафа за просрочку/скидки. Обязателен для счетов с датами истечения (boletos híbridos). Также используется для PIX Cobrança (выставление счетов).
Канонический тестовый вектор, статический PIX с ключом CPF и фиксированной суммой
CPF 12345678909, продавец LOJA TESTE в SAO PAULO, фиксированная сумма R$10.00, без ссылки на транзакцию:
00020126360014br.gov.bcb.pix0114123456789095204000053039865406010.005802BR5910LOJA TESTE6009SAO PAULO62070503***6304XXXX| Тег | Значение | Смысл |
|---|---|---|
00 | 01 | Индикатор формата payload (всегда 01) |
01 | 11 | Статическая точка инициации |
26 | 36 байт вложенного TLV | PIX Merchant Account Information |
├─ 00 | br.gov.bcb.pix | GUI |
├─ 01 | 12345678909 | Ключ CPF (11 цифр) |
52 | 0000 | MCC, неизвестно / личное |
53 | 986 | Код валюты ISO 4217 для BRL |
54 | 10.00 | Фиксированная сумма транзакции |
58 | BR | Код страны |
59 | LOJA TESTE | Название продавца (макс 25 символов по EMVCo) |
60 | SAO PAULO | Город продавца (макс 15 символов) |
62 | 7 байт вложенных | Шаблон дополнительных данных |
├─ 05 | *** | Метка ссылки (заполнитель без ссылки) |
63 | XXXX | CRC16-CCITT по всему предшествующему (пересчитать при кодировании) |
Типичные ошибки
- Маскирование CPF/CNPJ. Payload QR использует только немаскированные цифры (
12345678909, а не123.456.789-09). Некоторые генераторы кода оставляют точки и дефисы по ошибке, полученный QR отказывает в каждом банковском приложении с ошибкой "chave PIX inválida." - Набор символов имеет значение. Спецификация BACEN требует ISO/IEC 8859-1 (Latin-1) для названия продавца и города. Символы с диакритическими знаками (
São Paulo) должны быть закодированы в Latin-1 перед вычислением длины TLV, не в UTF-8. Кодировка UTF-8 увеличивает количество байт и ломает поле длины. - Вычисление CRC. CRC16-CCITT (полином
0x1021, init0xFFFF, без финального XOR) охватывает всё от тега00до6304, включая буквальный тег+длину самого поля CRC. Распространённая ошибка: CRC вычислен для неправильного диапазона, QR корректно парсится в одних приложениях и не работает в других. - Формат суммы, строка, не число. Тег
54, строка:10.00, а не1000. Требуются два знака после запятой. Максимум два десятичных знака, BRL не имеет номиналов меньше сентаво. - Статический PIX не имеет встроенного возврата средств. После оплаты статический PIX мгновенен и окончателен. Продавцы должны обрабатывать возвраты вне полосы (обратный PIX от продавца к плательщику). Чётко укажите это на печатных материалах.
- Мошенничество с наклейками-оверлеями. Физические PIX QR-наклейки у касс подвергались атакам с наложением, злоумышленники приклеивают свой QR поверх QR продавца. Регулярно заменяйте статические QR-наклейки, ламинируйте их и отображайте ожидаемый ключ PIX открытым текстом рядом с наклейкой, чтобы плательщик мог проверить.
- Ограничения на инвестиции/ценные бумаги. Comissão de Valores Mobiliários (CVM) запрещает PIX для незарегистрированного привлечения инвестиций. PIX QR на целевых страницах для токенов, продуктов с "гарантированной доходностью" или MLM-схем вызывает правоприменительные меры CVM.
- Динамический PIX требует активного конечного сервиса. Если URL тега
25недоступен, платёж не проходит при сканировании. Используйте хост под своим контролем и поддерживайте его работу как минимум в течение срока жизни напечатанного QR.
Совместимость с банковскими приложениями
Каждый лицензированный участник PIX (банк или платёжная организация) поддерживает BR Code в своём потребительском приложении. Основные реализации:
| Приложение | Статический | Динамический | Примечания |
|---|---|---|---|
| Itaú, Bradesco, Santander, BB, Caixa | Да | Да | Топ-5 банков. Полная поддержка PIX включая Cobrança, agendado и devolução. |
| Nubank | Да | Да | Самый популярный необанк в Бразилии. Чистый UX для PIX. |
| Inter, C6 Bank, PicPay | Да | Да | Полная поддержка PIX. |
| Mercado Pago | Да | Да | Платёжная организация; PIX, одна из нескольких платёжных сетей в одном приложении. |
| Стандартная камера iOS/Android | Нет | Нет | Нативные приложения камеры не распознают BR Code как платёжное намерение. Пользователь должен сначала открыть банковское приложение. |
Смотрите также
- /pix-qr-code/, генератор PIX с проверкой CPF/CNPJ и живым кодированием BR Code.
- /standards/emvco/, родительская спецификация EMVCo MPM.
- /standards/upi/, UPI Индия, ещё одна схема на основе EMVCo с тегом 26.
- /standards/, назад к индексу стандартов.