How a Pix QR code works
The code holds a BR Code: the text format defined by the Banco Central do Brasil for Pix, built on the EMV standard for merchant-presented QR codes. Every item is written as an id, a two-digit length and the value. The merchant account block carries the identifier br.gov.bcb.pix and your Pix key; then come the merchant category 0000, the currency 986 for the real, the optional amount, the country BR, your name (up to 25 letters), your city (up to 15) and the transaction id. A CRC-16 checksum closes the string, so a damaged or edited code is rejected by the bank app rather than paid to the wrong person.
This is a static code, the same kind a bank gives you to print at the till. It does not call an API or a payment service, so the transaction id is set to *** when you leave it empty, exactly as the Banco Central manual shows for static codes. If you type one (letters and digits, up to 25), it travels with the payment and appears in your statement, which helps with reconciliation.
The payer opens their bank or wallet app (Nubank, Itaú, Bradesco, Caixa, PicPay, Mercado Pago and every other Pix participant), chooses Pix and scans. The app looks up the key in the central directory and shows the account holder's registered name, not the name in the code, so the payer can confirm who receives the money. With an amount in the code it is filled in; without one, the payer types it. The same string is also the Pix copia e cola text shown under the form, which you can paste into a message.
Where it helps
- A street vendor or market stall prints a code with no amount, so each customer scans and types what they owe.
- A small shop puts a code with a fixed price next to a product, for example a R$ 25.00 lunch plate.
- A condominium or club sends a code with the monthly fee and a transaction id such as COTA2026MAR, so payments are easy to match.
- A church, school fair or charity shows a donation code on a poster or on the screen of a live stream.
Tips before you print
- Phone keys must start with +55, for example +5511912345678. Eleven plain digits are read as a CPF, which is a different key.
- Keep the name and city short and without accents. The standard allows 25 and 15 characters, and accents are removed for you; bank apps show the name registered with the key anyway.
- Test the code with your own bank app before printing. The app shows the registered name of the key holder; if it is not yours, the key has a typo.
- For prices that change, leave the amount empty and write the price next to the code. A code with an amount has to be regenerated every time the price changes.