Перейти к содержимому

EMV QR

Международный стандарт EMVCo для платёжных QR-кодов; задаёт структуру полей, контрольную сумму и форматы для merchant-presented и consumer-presented QR.

EMV QR — семейство спецификаций организации EMVCo (объединяет Visa, Mastercard, UnionPay, Amex, Discover, JCB), определяющих формат платёжных QR-кодов. Документ «EMV QR Code Specification for Payment Systems» описывает два режима: Merchant-Presented Mode (MPM) — продавец показывает QR, покупатель сканирует; и Consumer-Presented Mode (CPM) — покупатель предъявляет QR из приложения, терминал сканирует. Оба режима используют TLV-подобную структуру (Tag-Length-Value) с числовыми идентификаторами полей.

Структура MPM-кода

Полезная нагрузка MPM-кода — строка ASCII с полями фиксированного формата. Каждое поле кодируется как двузначный ID + двузначная длина + значение. Обязательные поля включают: ID 00 (Payload Format Indicator, значение «01»), ID 01 (Point of Initiation Method: «11» статический, «12» динамический), идентификаторы платёжных систем в диапазоне ID 02–51, ID 52 (Merchant Category Code, MCC по ISO 18245), ID 53 (Transaction Currency по ISO 4217), ID 58 (Country Code по ISO 3166-1), ID 59 (Merchant Name), ID 60 (Merchant City) и ID 63 — четырёхсимвольная контрольная сумма CRC-16/CCITT-FALSE всей строки, включая «6304» без значения суммы.

  • Статический QR (ID 01 = «11») — сумма вводится покупателем; один код для всех транзакций.
  • Динамический QR (ID 01 = «12») — сумма зашита в код; генерируется под каждую транзакцию.
  • ID 54 — опциональная сумма транзакции (Transaction Amount).

Применение в России и СБП

В России стандарт EMV QR лёг в основу QR-платежей Системы быстрых платежей (СБП) Банка России. Национальная платёжная карта (НСПК) адаптировала MPM-спецификацию, добавив идентификатор платёжной системы «ru.nspk» в поле диапазона 02–51. Банки-участники СБП обязаны поддерживать как статические (для малого бизнеса), так и динамические (для торгового эквайринга) QR-коды СБП. Формат также применяется в Mir Pay при оплате через QR.

Интеграция EMV QR в кассовое ПО строится по единому принципу: генерация строки с полями по спецификации, вычисление CRC-16, кодирование в QR-код по ISO/IEC 18004 с уровнем коррекции M или выше. Важно понимать, что EMV QR описывает содержимое, тогда как ISO/IEC 18004 описывает физическую структуру матричного кода — они работают в паре и не заменяют друг друга. Подробнее о том, как подключить QR-оплату для бизнеса, читайте в статье «QR-код для оплаты через СБП: инструкция для бизнеса».

Чтобы создать платёжный QR-код по стандарту EMV, воспользуйтесь нашим генератором: создать QR для оплаты.

Частые вопросы

Чем EMV QR отличается от обычного QR-кода?

Обычный QR-код — это просто способ хранения произвольного текста или URL в матричном символе. EMV QR — это стандарт содержимого: строго определённая структура полей (ID+длина+значение), обязательная CRC-16 контрольная сумма и фиксированные идентификаторы платёжных систем. Банковское приложение умеет читать именно EMV QR, проверять контрольную сумму и автоматически заполнять реквизиты платежа — случайный текст или ссылка так не сработают.

Что такое статический и динамический EMV QR?

Статический EMV QR (Point of Initiation Method = «11») — один код на все транзакции. Сумму вводит покупатель вручную в момент оплаты. Подходит для небольших точек без кассового ПО. Динамический EMV QR (значение «12») — код генерируется под каждую транзакцию и содержит конкретную сумму (поле ID 54). Используется в торговом эквайринге: кассовая система формирует код, покупатель сканирует и подтверждает уже заполненный платёж.

Как проверить корректность EMV QR?

Последние четыре символа строки — контрольная сумма CRC-16/CCITT-FALSE (поле ID 63). Алгоритм считается от всей строки, включая «6304» (ID+длина поля 63), но без самого значения CRC. Проверить можно программно: декодировать QR в строку, отрезать последние четыре символа, пересчитать CRC-16 от остатка строки с «6304» и сравнить результат с отрезанными символами. Несовпадение означает повреждение или некорректную генерацию кода.