Como gerar um PIX QR Code estático com segurança
O QR estático é só um texto com a sua chave, montado por você e sem registro no banco. Isso o torna simples e barato, mas deixa a conferência por sua conta. Veja os campos, os limites que importam, um teste de 1 centavo antes de divulgar e os riscos de trocar ou adulterar o código.
O que é o QR estático
Um PIX QR Code estático é a imagem de um texto no padrão BR Code (o mesmo do "copia e cola") que carrega a sua chave Pix e, opcionalmente, valor, identificador e uma mensagem. Segundo o Manual de Padrões para Iniciação do Pix, ele pode ser criado diretamente por você ou por um software, e a criação do QR estático não faz parte da API Pix: o banco não registra o código, não o valida e não sabe que ele existe até alguém pagar. Por isso, quem gera é responsável por gerar certo e por conferir.
No QR dinâmico acontece o contrário. O código traz uma URL e o aplicativo do pagador consulta o banco do recebedor para obter valor, beneficiário e situação da cobrança. Valor e txid dentro de um QR dinâmico devem ser ignorados pelo pagador, pois valem os dados obtidos pela URL. Dinâmico serve para cobranças com valor e prazo controlados pelo banco ou pelo sistema de cobrança; estático serve para um código que você mesmo monta e reutiliza.
Os campos do BR Code, um a um
Cada campo tem o formato ID (2 dígitos), tamanho (2 dígitos), valor. Para o QR estático, os que importam são:
- 00, versão: fixo em
01. - 01, método de iniciação: o Manual do BR Code define que o valor
12significa que o código só pode ser usado uma vez. O gerador do Me Ajuda Flow grava11, o código reutilizável. - 26, conta do recebedor: contém o subcampo 00 (
br.gov.bcb.pix), o 01 (a chave, de 1 a 77 caracteres) e, opcionalmente, o 02 (mensagem ao pagador). - 52 e 53: categoria do comércio (
0000quando não informada) e moeda (986, real). - 54, valor: opcional, de 1 a 13 caracteres, com ponto decimal (exemplos do manual:
0,1.00,123.99). - 58, 59 e 60: país (
BR), nome do recebedor (1 a 25 caracteres) e cidade (1 a 15 caracteres). - 62, subcampo 05, txid: de 1 a 25 caracteres. Se você não usar identificador, o valor deve ser
***. - 63, CRC16: sempre o último, com 4 caracteres, calculado sobre todo o texto anterior incluindo o
6304.
Os subcampos do campo 26 (chave e mensagem) dividem um espaço de 99 caracteres. Quanto maior a chave, menos sobra para a mensagem. Com uma chave aleatória de 36 caracteres, o gerador do Me Ajuda Flow aceita no máximo 37 caracteres de mensagem; com 100 caracteres, ele recusa e informa o limite.
Valor fixo ou livre
A decisão depende do uso do QR, e o Manual de Padrões para Iniciação do Pix trata os dois casos:
- Sem valor (livre). O pagador digita. Serve para um QR impresso e permanente, como doação, caixa de loja ou cartão de visita. Risco: o pagador pode digitar um valor errado e nada no código impede isso.
- Com valor fixo. O pagador vê o valor já preenchido. Serve para uma cobrança específica, como o pedido 42 de R$ 150,00. Risco: se o QR for reaproveitado, qualquer pessoa pode pagar o mesmo valor de novo,, pois o código em si não registra que já foi pago.
Regra prática: QR impresso e permanente, sem valor; QR de uma cobrança, com valor e com txid próprio. Se precisar de garantia de uso único ou de prazo de validade, o caminho é a cobrança dinâmica, não um estático com truques.
Nome, cidade e txid
O nome (campo 59) e a cidade (campo 60) são exigidos pelo padrão, mas, conforme nota do Manual de Padrões para Iniciação do Pix, o nome apresentado ao pagador é o retornado pela consulta à chave no DICT, e o do QR é ignorado. Mesmo assim, respeite os limites de 25 e 15 caracteres, senão aplicativos e bibliotecas podem recusar o código.
Exemplo real, gerado com o código do Me Ajuda Flow: nome Padaria Pão Quente e Cia Ltda e cidade São Bernardo do Campo. O gerador tirou os acentos, passou para maiúsculas e cortou nos limites, e o resultado foi PADARIA PAO QUENTE E CIA (24 caracteres) e SAO BERNARDO DO (15 caracteres). Repare no corte da cidade: ela termina em "DO", pela contagem de caracteres. Como a cidade é mero dado do código, isso não impede o pagamento, mas, se preferir, abrevie você mesmo (por exemplo, S B DO CAMPO).
O txid aceita só letras maiúsculas, minúsculas e dígitos, até 25 caracteres. Um identificador como PED-0042 é recusado pelo gerador por causa do hífen; PED0042 passa. O manual explica por que o txid importa: ele é retransmitido pelo banco do pagador e permite ao recebedor casar o Pix recebido com a cobrança, e os Pix com txid podem ser consultados pela API Pix. O mesmo manual avisa que o banco do recebedor não tem como impedir que um txid se repita em QR estático. Repetir o txid é desejável em um QR fixo sem valor e deve ser evitado em um QR gerado para cada venda. Quem garante isso é você.
Exemplo completo com valor e txid
Dados fictícios: chave [email protected], valor 150,00 e txid PED0042. O gerador monta este código de 164 caracteres:
00020101021126470014br.gov.bcb.pix0125financeiro@exemplo.com.br5204000053039865406150.005802BR5924PADARIA PAO QUENTE E CIA6015SAO BERNARDO DO62110507PED004263047BEB
Lendo: o campo 5406150.00 é o valor, 5924 declara 24 caracteres de nome, 62110507PED0042 traz o txid e 63047BEB é o CRC16. Passando esse texto no decodificador, o resultado é estático, chave [email protected], valor 150.00, txid PED0042 e nenhum aviso. Observe que o valor foi escrito com vírgula na entrada e saiu com ponto no código, que é o formato exigido.
Sem valor nem txid, com uma chave aleatória, o código fica mais curto (143 caracteres): ...5802BR5913FULANO DE TAL6008BRASILIA62070503***6304A5E2. O *** indica que não há identificador.
Como conferir o código gerado
- Decodifique o texto. Cole o código na ferramenta de PIX copia e cola. O CRC deve constar como conferido e não deve haver avisos.
- Releia a chave, caractere por caractere. É o dado que define para onde o dinheiro vai. Compare com a chave cadastrada no seu banco.
- Confira o tipo. O decodificador deve mostrar "estático". Se mostrar uma URL, o código é dinâmico.
- Leia o QR com o celular e confirme que o aplicativo mostra o nome correto do recebedor, que vem da consulta à chave, e não do código.
- Faça o teste de valor baixo, descrito abaixo.
Teste com valor baixo antes de divulgar
O valor mínimo do campo 54 aceito pelo gerador é 0.01: digitando 0,01, sai 5404 mais 0.01 no código. Uma sequência segura:
- Gere o QR final, exatamente como será impresso ou enviado, com o mesmo valor, txid e nome.
- Para o teste, gere uma versão com
0,01e pague de uma conta diferente da conta do recebedor. - Veja no extrato do recebedor se o Pix caiu na conta certa e se o identificador aparece quando o seu banco o exibe.
- Só então publique ou imprima o QR definitivo. Se o definitivo tiver outro valor, repita a conferência no decodificador, pois a mudança de um caractere altera o CRC.
O teste de centavo não substitui a conferência: ele prova que a chave existe e recebe, não que o resto do código está como você quer.
Riscos: troca de chave e QR adulterado
O CRC16 detecta erro de cópia, mas não protege contra fraude. Quem altera a chave e recalcula o CRC produz um código perfeitamente válido. Teste real: no código de R$ 150,00 acima, troquei a chave por [email protected] sem recalcular o CRC e o decodificador acusou o erro (informado 7BEB, calculado 239C). Depois recalculei o CRC sobre o texto adulterado e o decodificador passou a aceitá-lo sem nenhum aviso, mostrando a chave falsa. Ou seja, o único sinal de adulteração é a própria chave, e ela só aparece se alguém olhar.
- QR impresso: o golpe clássico é colar outro QR por cima do seu, em balcão, cartaz ou etiqueta. Confira os pontos de afixação periodicamente, proteja o QR (por exemplo, impresso em material difícil de cobrir sem deixar marca) e oriente o pagador a conferir o nome do recebedor na tela de confirmação antes de pagar.
- Código enviado por mensagem: quem recebe o texto não tem como saber se foi editado no caminho. Envie o código por um canal confiável e, se possível, informe também o nome do recebedor para comparação.
- Sua chave, seu risco: se você trocar ou excluir a chave no banco, todo QR já impresso com ela deixa de funcionar. Atualize o material antes de mudar a chave.
- Geradores de terceiros: quem gera o código vê a sua chave e o valor. Use ferramentas que rodem no seu navegador ou sistemas que você controla, e decodifique o resultado antes de usar.
Checklist de geração
- Chave conferida com o cadastro do banco.
- Valor com ponto e duas casas, ou em branco, de acordo com o uso.
- Nome até 25 e cidade até 15 caracteres, em maiúsculas e sem acento.
- txid só com letras e números, até 25 caracteres, ou
***. - CRC conferido e sem avisos no decodificador.
- Teste de R$ 0,01 de outra conta, com verificação no extrato.
- Nome do recebedor conferido na tela do aplicativo ao ler o QR.
Os limites e formatos acima seguem os manuais do Banco Central listados nas fontes. Regras de cada banco, como limites por transação e horários, devem ser confirmadas com a sua instituição.
Gere e confira com as ferramentas
Para montar o código e o QR já com os limites aplicados, use o gerador de PIX QR Code do Me Ajuda Flow, e confira o resultado no decodificador de PIX. Se for gerar para um CPF ou CNPJ como chave, valide o número antes na ferramenta de CPF e CNPJ.