Ferramentas Pix
Calcular o CRC16 de um BR Code.
Cole o payload e veja o CRC-16/CCITT-FALSE calculado, comparado ao que está no código.
Códigos gerados são registrados no Pix Lojista. Leitura, validação e cálculo de CRC continuam locais. Entenda quais dados são registrados.
O QR está pronto. E quando o dinheiro cair?
O Pix Lojista organiza suas cobranças e mostra as vendas do dia. Sem taxa nossa, na conta que você já usa.
Criar minha lojaComo conferir uma implementação
Comece pelo vetor padrão do algoritmo: a string com os dígitos de um a nove deve produzir 29B1. Se ela já não bate, o problema é a variante escolhida, não o Pix. Depois teste com um payload completo, que exercita o detalhe de incluir o 6304 no cálculo.
As seis armadilhas
Não incluir o 6304, usar 0x0000 como valor inicial, aplicar um XOR final, escolher CRC-16/ARC ou MODBUS, gerar o hexadecimal em minúsculas e perder o zero à esquerda. Cada uma produz um código que parece correto na tela e é recusado pelo banco.
Perguntas frequentes
Qual variante de CRC o Pix usa?
CRC-16/CCITT-FALSE: polinômio 0x1021, valor inicial 0xFFFF, sem XOR final e sem reflexão de entrada ou de saída. Usar CRC-16/ARC ou MODBUS, ou inicial 0x0000, produz outro resultado e o código é recusado.
O cálculo inclui os caracteres 6304?
Inclui. O CRC é calculado sobre a string inteira já com os quatro caracteres que abrem o próprio campo 63, excluindo apenas os quatro dígitos do resultado. Esquecer isso é o erro mais comum.
O resultado é maiúsculo ou minúsculo?
Maiúsculo, com quatro dígitos e zero à esquerda quando necessário. Um CRC escrito como F12 em vez de 0F12 é recusado, e o hexadecimal minúsculo é aceito por alguns bancos e recusado por outros.
A ordem dos campos muda o CRC?
Muda. O CRC é calculado sobre a string final, então qualquer troca de ordem produz outro resultado. O manual do Banco Central alerta explicitamente para isso.
Posso calcular sem o campo 63 no fim?
Pode. Se o payload não terminar em 6304, acrescentamos esses quatro caracteres e devolvemos o CRC que ele deveria receber.