A PIX QR code from this generator is a static BR Code: a text string in the EMV format defined for Brazil's PIX system, carrying your PIX key, name, city, an optional amount, and a CRC16 checksum. Any bank app in Brazil that supports PIX can read it and open a pre-filled payment. The code is built entirely in your browser, and it is reusable, which is also its limit.
How do you make a PIX QR code?
- Enter your PIX key: an email address, phone number, CPF or CNPJ, or a random key from your bank.
- Enter the receiver name (up to 25 characters) and city (up to 15 characters). The form enforces the limits.
- Optionally enter an amount. Leave it empty for an open-amount code.
- Download the code and test it in a bank app, stopping at the confirmation screen.
For the key pagamentos@example.com.br, the name "Padaria Sol", the city "Sao Paulo", and R$ 18.50, the code contains this text:
00020126470014br.gov.bcb.pix0125pagamentos@example.com.br520400005303986540518.505802BR5911Padaria Sol6009Sao Paulo62070503***6304CED9
What is inside that string?
A BR Code is a chain of tag-length-value fields: a two-digit tag, a two-digit length, then the value. Reading the example left to right shows what this generator sets.
| Tag | Meaning | Value here |
|---|---|---|
| 00 | Payload format | 01 |
| 26 | Merchant account: PIX identifier and your key | br.gov.bcb.pix + your key |
| 52 | Merchant category code | 0000 |
| 53 | Currency | 986 (Brazilian real) |
| 54 | Amount | Present only if you entered one, always with two decimals |
| 58 / 59 / 60 | Country, name, city | BR, your name, your city |
| 62 | Additional data (transaction ID) | ***, meaning "no transaction ID" |
| 63 | CRC16 checksum | Four hex digits, computed over everything before it |
The checksum is what lets a bank app reject a mistyped or corrupted code. Because it is calculated in your browser from your exact input, editing any character by hand invalidates it.
Static or dynamic PIX: which do you actually need?
This is a static code. Every scan produces a payment to the same key, and the transaction ID is ***, so the bank has no way to tell one customer's payment from another's on the code alone. That suits a tip jar, a market stall, a donation sign, or a personal "pay me" card.
If you need to match each payment to an order or invoice, you need a dynamic PIX charge created through your bank or payment provider, with a unique transaction ID per sale. This generator cannot create one, because that requires a service that talks to your bank.
What should you type carefully?
- Use plain ASCII for name and city. The form's own placeholder writes "Sao Paulo" without the tilde. BR Code fields follow the EMV convention of simple characters, and bank apps are not guaranteed to handle accented letters the same way, so plain ASCII is the safer choice.
- Copy the key exactly. A wrong key sends money elsewhere. Scan your own code and read the receiver name the app shows.
- Keep the amount realistic. A fixed amount in a static code is one code per price.
How do you test it?
Scan with the app of your own bank and one other, and stop at the confirmation step. The name and city on screen should match your entries. Run the exported image through the QR validator, and check its size against the print size guide. Compare methods in how to accept QR code payments.
This article is general information, not financial or legal advice. PIX rules and fees are set by the Central Bank of Brazil and your financial institution and can change.