Todo Pix Copia e Cola é um texto no padrão BR Code, o formato EMV de QR Code adotado pelo Banco Central. Esse texto é o payload do Pix, e ele sempre começa com 000201: o campo 00, de tamanho 02, com valor 01, que é a versão do formato. Daí para frente, cada pedaço do código diz quem recebe, quanto, em que moeda, e termina num código de verificação, o CRC16.
Este guia lê o código campo a campo. Para gerar e pagar no dia a dia, veja o que é Pix Copia e Cola. Para escolher entre os dois tipos, veja Pix estático ou dinâmico.
O que é o payload do Pix (BR Code)
O QR Code Pix e o Copia e Cola carregam o mesmo texto. A imagem do QR é só esse texto desenhado; o Copia e Cola é o texto para colar no app. O padrão está no Manual de Padrões para Iniciação do Pix (BCB).
O código não carrega senha nem número de conta. No estático, a chave Pix aparece em texto no código: se for CPF, telefone ou e-mail, ela fica legível para quem tem o código.
Como ler o código: ID, tamanho e valor
O BR Code usa TLV: 2 dígitos de ID, 2 dígitos de tamanho e depois o valor com aquele tamanho. Exemplo estático (fictício) quebrado em linhas:
00 02 01
26 45
00 14 br.gov.bcb.pix
01 23 financeiro@loja.example
52 04 0000
53 03 986
54 05 49.90
58 02 BR
59 12 LOJA EXEMPLO
60 09 SAO PAULO
62 14
05 10 PEDIDO1234
63 04 CDD3Payload completo:
00020126450014br.gov.bcb.pix0123financeiro@loja.example520400005303986540549.905802BR5912LOJA EXEMPLO6009SAO PAULO62140510PEDIDO12346304CDD3Os campos do BR Code
| ID | Campo | O que guarda |
|---|---|---|
00 |
Versão do payload | Sempre 01 |
01 |
Forma de iniciação (opcional) | 12 = QR para um pagamento só; 11 = pode ser pago mais de uma vez |
26 |
Conta do recebedor | 00 = br.gov.bcb.pix, mais a chave Pix (01) no estático ou a URL da cobrança (25) no dinâmico; pode ter descrição (02) |
52 |
Categoria do comerciante | 0000 quando não informado |
53 |
Moeda | 986 = real |
54 |
Valor | Quando o valor vem no próprio código |
58 |
País | BR |
59 |
Nome do recebedor | Nome e cidade têm tamanho máximo definido pelo padrão EMV; acentos e caracteres especiais podem fazer o app recusar o código |
60 |
Cidade do recebedor | Mesma regra de tamanho e caracteres |
62 |
Dados adicionais | O 05 guarda o identificador da transação (txid) ou *** quando não é usado |
63 |
CRC16 | 4 caracteres hexadecimais |
O nome que o app do banco mostra ao pagador vem do cadastro da chave no Banco Central, não só do campo 59.
Payload estático x dinâmico
No estático, o campo 26 traz a chave Pix; o valor pode vir no campo 54; o txid, se houver, vai no 62-05 (ou *** quando não é usado).
No dinâmico, o campo 26 traz a URL da cobrança no subcampo 25; o app consulta essa URL para obter valor, recebedor e identificador. Em geral o campo 01 vem como 12 (uso único). Exemplo dinâmico (fictício):
00020101021226760014br.gov.bcb.pix2554pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca255204000053039865802BR5912LOJA EXEMPLO6009SAO PAULO62070503***6304FEA4Quem define estático ou dinâmico é o conteúdo do campo 26 (chave × URL), não o campo 01 sozinho. Guia: Pix estático ou dinâmico.
O CRC16 no final
Os 4 últimos caracteres são o CRC16: uma soma de verificação. Se alguém altera o código (por exemplo, troca 49.90 por 59.90 sem recalcular), o CRC deixa de bater e o app do banco recusa.
Algoritmo: CRC-16/CCITT-FALSE, polinômio 0x1021, valor inicial 0xFFFF, calculado sobre todo o texto incluindo 6304. O resultado sai em 4 caracteres hexadecimais maiúsculos. Teste padrão: 123456789 → 29B1.
def crc16(s: str) -> str:
c = 0xFFFF
for b in s.encode("utf-8"):
c ^= b << 8
for _ in range(8):
c = ((c << 1) ^ 0x1021) & 0xFFFF if c & 0x8000 else (c << 1) & 0xFFFF
return f"{c:04X}"
assert crc16("123456789") == "29B1"
estatico = "00020126450014br.gov.bcb.pix0123financeiro@loja.example520400005303986540549.905802BR5912LOJA EXEMPLO6009SAO PAULO62140510PEDIDO12346304"
dinamico = "00020101021226760014br.gov.bcb.pix2554pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca255204000053039865802BR5912LOJA EXEMPLO6009SAO PAULO62070503***6304"
assert crc16(estatico) == "CDD3"
assert crc16(dinamico) == "FEA4"Erros comuns ao montar o payload na mão
- Contar o tamanho errado (conte caracteres do valor; acento em UTF-8 ocupa mais de um byte e quebra a conta)
- Acento ou caractere especial em nome ou cidade
- Calcular o CRC sem incluir o
6304 - CRC em minúsculas ou com menos de 4 dígitos (complete com zero à esquerda)
- Reaproveitar um QR dinâmico de outro pedido ou já pago
- Editar o valor depois de gerar o código
Preciso montar o payload?
Para cobrar, não. Na AbacatePay, a resposta da cobrança Pix já traz o brCode (o texto do Copia e Cola) e o brCodeBase64 (a imagem do QR Code em PNG, pronta para um <img>), além da validade em expiresAt. Você mostra os dois na tela e não calcula CRC nenhum.
{
"id": "pix_char_01EXAMPLE",
"status": "PENDING",
"brCode": "000201…",
"brCodeBase64": "data:image/png;base64,iVBORw0KGgo…",
"expiresAt": "2026-11-12T14:00:00.000Z"
}Guias e produtos: como gerar QR Code Pix via API, API Pix, /desenvolvedores, documentação do Pix. Pix a R$ 0,80 por cobrança paga, com saldo na hora. Produto: receber Pix.
Receba Pix com QR Code e Copia e Cola prontos: fale com o time.
Depois do pagamento: endToEndId e webhook
Quando o Pix liquida, ele ganha um identificador próprio no Banco Central, o endToEndId do Pix. A confirmação da cobrança chega por webhook (/api/webhooks); o guia de baixa automática está em confirmar pagamento Pix automaticamente.
Perguntas frequentes
O que significa 000201 no Pix?
É o campo 00, de tamanho 02, com valor 01: a versão do formato. Todo BR Code começa assim.
Qual a diferença entre BR Code e QR Code Pix?
O BR Code é o texto. O QR Code é a imagem desse texto. O Copia e Cola é o mesmo texto para colar no app do banco.
Dá para editar o valor de um Pix Copia e Cola?
Mudar qualquer caractere invalida o CRC16 e o app recusa. No dinâmico, o valor nem está no texto: vem da URL da cobrança. Para outro valor, gere outra cobrança.
Por que o banco diz que o código Pix é inválido?
CRC errado, tamanho de campo errado, caractere não aceito, código cortado ao copiar ou cobrança dinâmica expirada ou já paga.
O que é o CRC16 no final do Pix Copia e Cola?
São os 4 últimos caracteres: uma verificação calculada sobre todo o texto (incluindo 6304) com CRC-16/CCITT-FALSE. Serve para o app detectar código alterado ou corrompido.
Preciso gerar o payload na mão para integrar Pix?
Não. Pela API da AbacatePay, o brCode e o brCodeBase64 vêm prontos na resposta. Guia: como gerar QR Code Pix via API.
Receba Pix com QR Code e Copia e Cola prontos: fale com o time.
Leia também: endToEndId do Pix · o que é Pix Copia e Cola · Pix estático ou dinâmico · como gerar QR Code Pix via API · confirmar pagamento Pix automaticamente · API Pix · receber Pix · /desenvolvedores