Pix copia e cola decoder and validator

Find out what is inside a Pix code before paying or before printing: key, recipient, amount, identifier, code type and CRC check, field by field.

Paste the full text, from 000201 to the 4 CRC characters. Nothing is sent.

What is a Pix copia e cola decoder?

A Pix copia e cola decoder is a tool that reads the text of a Pix QR code (the BR Code payload) and splits it into the fields defined by the Central Bank of Brazil (BCB): format indicator, initiation method, account block with the Pix key, category, currency, amount, country, name, city, transaction identifier and CRC. It also recalculates the CRC16 to tell you whether the code is intact. Everything runs in your browser; the pasted text is not sent anywhere.

How to use it

  1. Copy the Pix copia e cola (copy-and-paste code) you received, or extract the text from a QR code with your camera or a generic reader.
  2. Paste it in the field above and click Decode. Line breaks are ignored; spaces inside the name are preserved.
  3. Read the result: CRC status, whether it is a Pix code (GUI br.gov.bcb.pix), static or dynamic, key and key type, name, city, amount, txid and the full TLV tree.

What each field means

IDFieldValue in a static code
00Payload Format Indicator01, always
01Point of Initiation Methodomitted or 11 (reusable); 12 = single use
26Merchant Account Informationsubfield 00 = br.gov.bcb.pix, 01 = key, 02 = optional description
52Merchant Category Code0000 when there is no category
53Transaction Currency986 = Brazilian real (ISO 4217)
54Transaction Amountoptional; decimal point, up to 2 places, e.g. 25.90
58Country CodeBR
59Merchant Namerecipient name, up to 25 ASCII characters
60Merchant Citycity, up to 15 ASCII characters
62Additional Data Fieldsubfield 05 = txid (up to 25 alphanumeric characters) or ***
63CRCCRC16-CCITT (polynomial 0x1021, initial 0xFFFF) of everything before it, including 6304

Worked example

Click "Use the Central Bank example" to load the code from the official manual. The result shows a valid CRC (1D3D), Pix scheme, reusable static type, random key 123e4567-e12b-12d1-a456-426655440000, name Fulano de Tal, city BRASILIA, amount not set and txid ***. Change the last character to anything else and decode again: the CRC becomes invalid, which is exactly what the payer's app would do.

Static, single-use static and dynamic

TypeHow to recognise itWho can generate it
Reusable staticField 01 absent or 11; key in 26-01Anyone, including this site
Single-use staticField 01 = 12; key in 26-01Anyone; the app may refuse reuse
DynamicField 01 = 12 and PSP URL in 26-25Only the account's bank or PSP, via API, with a signed payload

Common uses

Limits of this tool

The decoder validates the structure and the CRC. It does not know whether the key is registered, whether the account exists, whether a dynamic code has already been paid or whether the payload URL is active, because none of that is in the text and none of those lookups is possible outside a Pix participant institution. To find out whether a key has a valid format and whether the CPF or CNPJ check digits match, use the Pix key validator. To create your own code, use the Pix QR code generator.

References

Central Bank of Brazil (BCB), Manual de Padrões para Iniciação do Pix; EMVCo, EMV QR Code Specification for Payment Systems, Merchant Presented Mode (TLV structure and CRC).

Questions about the decoder

What does a valid CRC mean?

That the last four characters match the CRC16-CCITT calculated over the rest of the code, in other words the text was not truncated or altered after it was generated. It does not mean the key exists or that the recipient is who they claim to be.

Does the decoder ask the bank who owns the key?

No. The DICT lookup (the Central Bank's key directory) is done only by the payer's app, authenticated with the institution. This site reads only what is written in the code; to see the name linked to a key, start a payment in your app and check the confirmation screen without completing it.

How do I know whether a code is dynamic?

A dynamic code has, in field 26, subfield 25 with the payload URL (something like qrcodepix.banco.com.br/…) instead of the key in subfield 01. The decoder shows the URL when there is one. The content of the charge (final amount, due date, status) lives at that URL and only the payer's app fetches it.

Can I decode a QR code from an image?

This page takes text. To extract the text from an image, open the QR with your camera or a generic QR reader and copy the result; then paste it here.

What is the TLV tree?

The representation of each field as ID, length and value, with the subfields of 26 and 62 indented. It helps developers check lengths and find the exact field that is wrong in a code the app rejects.

Why does the app reject a code that shows as valid here?

The most common causes: a deleted or non-existent key, an amount above your limit, a name or city with non-ASCII characters, or a dynamic code whose payload has expired. The decoder detects structural problems, not registration problems.