Tag 01, Ponto de Iniciação
11 = QR estático (reutilizável; você digita o valor).12 = QR dinâmico (uso único; valor preenchido pelo PDV do comerciante).
Standards · EMVCo merchant payment QR
O QR na mesa de um restaurante, em um parquímetro ou em uma banca de feira quase sempre usa o formato TLV da EMVCo. Ele carrega o nome do comerciante, cidade, país, moeda, valor opcional e um checksum CRC-16 que falha se o payload foi alterado. O ataque de troca de etiqueta — cobrir o QR de um comerciante real com o QR do atacante — é a fraude de QR mais comum no mundo. Decodificar o QR antes de pagar mostra para quem você está pagando de fato.
O padrão é a Especificação de QR Code EMVCo, publicada pelo mesmo consórcio EMVCo que definiu os cartões com chip e senha. Dois tipos compartilham a maior parte do formato:
Quase todos os esquemas de pagamento instantâneo de cada país são construídos sobre o EMVCo MPM com algumas tags específicas do país adicionadas:
O formato é texto Tag-Length-Value, sem criptografia, decodificável por qualquer leitor QR. A identidade do comerciante é codificada em texto simples e é o que o aplicativo da sua carteira exibe.
Todo payload EMVCo começa com 000201 (Indicador de Formato de Payload). O que se segue é uma sequência de registros TLV: tag de dois caracteres, comprimento de dois dígitos, valor desse comprimento, repetido.
11 = QR estático (reutilizável; você digita o valor).12 = QR dinâmico (uso único; valor preenchido pelo PDV do comerciante).
Identificador do destinatário específico do país: chave Pix (CPF / CNPJ / e-mail / telefone / UUID EVP), Endereço Virtual de Pagamento UPI, telefone ou ID nacional PromptPay, etc.
Categoria de 4 dígitos ISO 18245. 5812 = restaurante, 5411 = supermercado, 7011 = hospedagem, 5541 = posto de gasolina, etc.
Código numérico ISO 4217. 840 = USD, 978 = EUR, 826 = GBP, 986 = BRL (real brasileiro), 356 = INR (rúpia indiana).
Opcional. Presente em QRs dinâmicos (o comerciante preencheu), ausente em QRs estáticos (você digita o valor).
Opcional. 55 indica se deve aparecer um prompt de gorjeta; 56 / 57 carregam uma taxa de conveniência fixa ou percentual.
Código de país ISO 3166-1 alpha-2. Útil quando aplicativos de pagamento suportam transferência transfronteiriça.
Até 25 caracteres. Este é o campo que seu aplicativo de carteira exibe como "você está pagando ___". O comerciante controla totalmente o que vai aqui. Um atacante que cria uma troca de etiqueta coloca qualquer string que quiser.
Até 15 caracteres. Onde o comerciante está localizado.
Opcional, mas útil para detecção de fraude: um comerciante dos EUA cujo CEP não corresponde à cidade é um sinal de alerta.
Sub-TLV. Contém: número de fatura, número de celular, rótulo de loja, número de fidelidade, rótulo de referência, rótulo de cliente, rótulo de terminal, finalidade da transação.
CRC-16/CCITT-FALSE sobre tudo que precede (incluindo o cabeçalho "6304" do próprio TLV do CRC). Se não corresponder, o QR foi alterado ou corrompido.
A técnica é deprimentemente simples:
O comerciante só percebe quando a conciliação do dia mostra que o faturamento está abaixo. O cliente não percebe porque a carteira exibe "você pagou " — e o atacante pode colocar o nome real do comerciante na tag 59. Ou algo próximo ("Pizzaria do Zé 2", "Pizzaria Zé"), variações sutis que um cliente ocupado não percebe.
A fraude foi documentada em todos os países onde os pagamentos móveis são prevalentes: Brasil (troca de etiqueta Pix em parquímetros), Índia (troca de etiqueta UPI em postos de gasolina), China (troca de etiqueta WeChat Pay em vitrines), Singapura (PayNow em hawker centres), Reino Unido (troca de QR em caixas de doação), EUA (parquímetros em Austin, San Francisco, LA).
O que nosso scanner mostra:
Pistas físicas para inspecionar antes de escanear:
Nosso analisador reconhece a tag do país e rotula o veredicto com o nome do esquema local quando aplicável. Cobre atualmente 54 países, incluindo todos os principais sistemas de pagamento instantâneo. Veja o hub de padrões para a lista completa com detalhes por esquema.
Envie o QR para o nosso scanner. O veredicto mostra comerciante, cidade, país, valor, moeda e se o checksum CRC é válido. Leva alguns segundos. Pode poupar o custo de um jantar — ou o orçamento de estacionamento de um mês inteiro.