Um QR code EPC não contém um link. É uma transferência SEPA, escrita como um pequeno bloco de texto simples, e um app bancário que reconhece o formato o lê e preenche o formulário de transferência. Nenhum servidor é contatado, nada é consultado e nada sobre a leitura chega até você.
Esse único fato decide todo o resto sobre como esses códigos são usados. Você não consegue encurtar um, não consegue redirecionar um e não consegue contar as leituras, porque não há nenhuma requisição em lugar algum do fluxo. O padrão por trás é o EPC069-12 do European Payments Council, os códigos costumam ser chamados de GiroCode nos mercados de língua alemã, e vale entender o formato com precisão antes de imprimir milhares deles em faturas. Para o caso geral do que um código pode carregar, o que é um QR code trata da questão do payload.
O que o Payload Realmente Contém
O payload é uma sequência de linhas, em ordem fixa, cada uma um elemento separado. Um parser lê a linha 1, espera BCD, lê a linha 4, espera SCT e desiste se qualquer uma faltar.
| Linha | Conteúdo | Limite |
|---|---|---|
| Tag de serviço | BCD | fixo, 3 caracteres |
| Versão | 001 ou 002 | 002 torna o BIC opcional |
| Conjunto de caracteres | 1 para UTF-8, até 8 | um dígito |
| Identificação | SCT | fixo, 3 caracteres |
| BIC | identificador do banco do beneficiário | 11 caracteres, muitas vezes omitido |
| Nome do beneficiário | o titular da conta | 70 caracteres |
| IBAN | conta do beneficiário | 34 caracteres |
| Valor | EUR seguido do valor | 0.01 a 999999999.99, em EUR |
| Código de finalidade | finalidade ISO, raramente usado | 4 caracteres |
| Referência estruturada | referência do credor, ou | 35 caracteres |
| Texto não estruturado | remessa em texto livre, em vez da anterior | 140 caracteres |
| Beneficiário para o originador | observação mostrada ao pagador | 70 caracteres |
Duas regras costumam pegar as pessoas. A referência estruturada e o texto não estruturado são mutuamente exclusivos: preencha um e deixe o outro vazio. E o valor é opcional, o que é a escolha certa para um código de doação em que o pagador decide, e a escolha errada para uma fatura em que você quer um valor exato já preenchido.
O bloco inteiro é limitado a 331 bytes, e os elementos são separados por uma quebra de linha (line feed) ou CRLF, sem separador depois do último. Os 331 bytes contam bytes UTF-8, então nomes com acentos usam mais do que o número de caracteres. Nome, IBAN, BIC e a referência estruturada são marcados como fixos, ou seja, o app do pagador não deve permitir editá-los. As diretrizes EPC069-12, versão 3.1 de 19 de março de 2024 (acesso em 2026-10-25; a tabela de campos acima foi conferida com elas) também fixam o nível de correção de erros em M e limitam o símbolo à versão 13 (69 módulos por lado). O próprio payload de exemplo do documento tem 96 bytes e gera um código de versão 6, com 41 módulos. Se você for montar isso em código, a documentação da biblioteca Segno (acesso em 2026-10-25) mostra a ordem dos campos, e o helper dela fixa o nível de erro em M e a versão em 13 ou menos, de acordo com a especificação.
Por que Você Não Consegue Encurtar nem Rastrear
Um QR code rastreado funciona codificando uma URL que você controla. A leitura abre essa URL, o seu redirecionamento responde, você conta a requisição e o visitante chega onde você estiver apontando o link naquele momento. QR codes dinâmicos versus estáticos trata do mecanismo por completo.
Nada disso se aplica aqui, e não há como contornar. O app do banco não é um navegador. Ele interpreta texto, reconhece o formato e abre um formulário de pagamento localmente no dispositivo. Não existe requisição HTTP para interceptar, então:
- Não existe contagem de leituras em lugar nenhum. Nem na sua ferramenta, nem no banco.
- Nada pode ser redirecionado. Um IBAN errado significa reimpressão.
- Se você envolver o payload em um link curto, ele quebra, porque o parser vê
httpsonde esperavaBCD.
O lado do pagamento e o lado da medição são dois códigos diferentes. Se o layout tem espaço para apenas um, o código de pagamento vence. Eu colocaria o código de pagamento primeiro e o link rastreado depois, sempre.
O que dá para medir é tudo o que está ao redor. Se uma correspondência traz uma fatura com um código de pagamento, coloque na carta um link curto rastreado à parte, para o portal do cliente, os termos ou a página de suporte, e leia o engajamento a partir dele. Os recursos de QR code do Elido cobrem a metade rastreável da folha, e o código de pagamento continua exatamente como o padrão exige.
Onde Funciona e Onde Não Funciona
O suporte vive em apps bancários individuais, e é por isso que as listas de países exageram. O documento do EPC é explicitamente informativo, e implementá-lo é opcional para os bancos. Teste antes de se comprometer com uma tiragem.
Dois vizinhos são confundidos com ele. O QR-bill suíço é uma especificação diferente, com uma cruz suíça no meio, e apps da zona do euro não o leem como pagamento. Um link de pagamento de um processador de cartões é apenas uma URL em um QR com um checkout hospedado no final, e é rastreado como qualquer link web.
Para a questão mais ampla do que um negócio regulado de pagamentos ou crédito pode colocar diante dos clientes, encurtadores de URL para fintech trata das partes em que um link está envolvido.
Dá para Criar um com o Elido?
Não como recurso dedicado. Conferido no código em 2026-10-25: a ferramenta gratuita de gerador de QR code tem seis tipos de conteúdo (URL, texto, Wi-Fi, vCard, e-mail, SMS), e nenhum é do tipo EPC ou pagamento. O designer de QR do painel aceita um campo de conteúdo de uma única linha, então não consegue guardar um payload de várias linhas.
A alternativa é o tipo Texto da ferramenta gratuita, que tem uma caixa de várias linhas e repassa o seu texto sem alterações. Cole as doze linhas, mantenha a correção de erros em M (o padrão da ferramenta) e baixe o PNG ou SVG. Dois cuidados. Não há validação, então um IBAN errado ou uma quebra de linha extra no final geram um código que parece correto e falha no app do banco. E é um código estático, sem rastreamento, que é exatamente o que um código de pagamento deve ser. Um tipo EPC de verdade, com verificação de IBAN, está no nosso backlog.
Como Produzir um Sem Arrependimento
Seis verificações, na ordem em que mais economizam dinheiro.
- Valide o IBAN antes de gerar, não depois de imprimir. Um teste de checksum não custa nada, e uma reimpressão custa uma tiragem.
- Decida a questão do valor com critério. Fixo para faturas, vazio para cartazes de doação em que qualquer valor deve ser possível.
- Prefira a referência estruturada ao texto livre. Ela é mais curta, é conciliada automaticamente na sua contabilidade e mantém o payload pequeno.
- Teste em pelo menos três apps bancários, nas duas plataformas de celular. Os parsers diferem no rigor com que tratam os campos opcionais.
- Dimensione o código impresso para a distância de onde será lido, exatamente como com qualquer outro código. Qual deve ser o tamanho de um QR code traz a aritmética.
- Use acabamento fosco. Verniz brilhante sob luz de escritório causa reflexo e leituras que falham.
O Problema do Adesivo
Existe um vetor de fraude real, e ele é físico, não digital. Um código de pagamento estático impresso em uma fatura, em um parquímetro, na placa de uma barraca de feira ou em um cartaz de caridade pode ser coberto por um adesivo com outro IBAN. Nada no código resiste a isso, porque o payload é o papel, e ele não verifica nada.
As mitigações são igualmente físicas. Imprima o código dentro do layout da fatura, onde uma etiqueta seria óbvia, em vez de em um adesivo. Mostre em texto, ao lado do código, o nome do beneficiário e os últimos dígitos do IBAN, para que o pagador possa comparar. E, nas instruções de confirmação do pagamento, oriente as pessoas lendo o nome que o app do banco exibe antes de confirmar, porque essa tela é o único lugar em que a troca fica visível. QR codes são seguros e o que é quishing de verdade trata do padrão de ataque mais amplo, em grande parte aplicável aos códigos de link que você imprime em outros lugares da mesma página.
A parte tranquilizadora é que um pagamento ainda precisa de uma pessoa para confirmá-lo em um app bancário autenticado. O código preenche um formulário e nunca movimenta dinheiro. Para saber como um banco deve governar os outros códigos que imprime ao redor de um código de pagamento, veja QR codes para bancos.
Para o fluxo impresso em torno de qualquer código, veja uma campanha de QR code do zero. O guia de QR codes na documentação trata do tipo rastreável.
Relacionados no Blog
Perguntas frequentes
O que é um QR code EPC?
Um QR code que codifica os dados de uma transferência SEPA (SEPA credit transfer) como texto simples, para que um app bancário possa lê-lo e preencher o formulário de transferência. Foi padronizado pelo European Payments Council nas diretrizes EPC069-12 e também é conhecido como GiroCode. O payload é uma sequência fixa de linhas que começa com a tag de serviço BCD e não contém nenhum endereço web.
Quais países aceitam pagamentos por GiroCode?
O suporte está no app do banco, não no país. O EPC diz que o esquema é opcional para os bancos, e a Wikipédia cita Alemanha, Áustria, Bélgica, Finlândia, Países Baixos, Luxemburgo, Estônia, Letônia, Lituânia e Itália como lugares onde os códigos são de uso comum (acesso em 2026-10-25). Não testamos apps individualmente, então teste o seu. Fora da zona do euro, o código não faz sentido. A Suíça usa o próprio padrão QR-bill, que é parecido e não é compatível.
Um QR code EPC pode ser dinâmico ou rastreável?
Não. Os dados do pagamento estão dentro do padrão impresso, e o celular os decodifica offline, sem contatar nenhum servidor, então não há nada para redirecionar nem para contar. Se você precisa mudar o valor ou a referência, gera um código novo. Qualquer coisa vendida a você como QR de pagamento dinâmico é um link para uma página de pagamento, que é outro produto.
O que acontece se eu colocar um link curto em um QR code EPC?
O app do banco não consegue interpretá-lo e mostra um erro ou passa a tratar o código como uma URL comum. O parser espera que a primeira linha seja BCD e a quarta seja SCT; uma URL não corresponde a nenhuma das duas. QR codes de pagamento e QR codes de link são dois códigos diferentes que só compartilham o formato do símbolo.
Qual o tamanho máximo do payload?
331 bytes, o que limita o QR à versão 13 com nível de correção de erros M nas diretrizes do EPC. Na prática, o que o enche é o texto de remessa, então uma referência longa em texto livre é o campo que faz um código estourar o limite. Mantenha a referência estruturada e curta, e o código fica esparso o bastante para ser lido em uma fatura impressa.
QR codes de pagamento são seguros em faturas impressas?
O código em si não carrega conteúdo executável, e o pagador confirma a transferência no app do banco, que mostra o nome do beneficiário e o IBAN antes de qualquer valor sair. O risco real é físico: um adesivo colado sobre o código impresso que desvia o pagamento para outra conta. Imprima o código dentro do layout da fatura, não em uma etiqueta, e oriente os pagadores a conferir o nome na tela de confirmação.
Experimente Elido
Cole uma URL, obtenha um link curto
Sem cadastro. O link vive 30 dias. Cadastre-se para mantê-lo para sempre.
É necessária uma conta grátis. O plano grátis inclui 25 links no total. Já tem uma conta? Entrar
