Pix QR code generator
A Pix code carries your Pix key in the BR Code format every Brazilian bank app reads. Scanning it inside a bank app fills in the payment, and Pix settles in seconds, at any hour, including weekends.
It is the standard way to be paid in Brazil, and a printed code at a counter is as normal there as a card terminal.
What should it do
Request a payment through Brazilian Pix.
Content
Design
BR Code is EMV, with a checksum at the end
The payload is not a URL. It is a string of tag-length-value fields from the EMV QR standard: each field is a two-digit tag, a two-digit length, then the value. The Pix details sit inside a merchant account field identified by br.gov.bcb.pix, alongside the payee name, city and country.
The last field is a CRC-16 checksum calculated over everything before it, including its own tag and length header. A single wrong character anywhere makes the checksum fail and the whole code is rejected — which is a feature, because the alternative is a payment silently going to the wrong place.
Any of the four key types works
A Pix key can be a CPF or CNPJ, an email address, a phone number, or a random key issued by your bank. Any of them can go in the code, and all route to the same account.
The random key is the one to print. It reveals nothing about you — where a CPF or a phone number in a code on a shop wall is a personal identifier anyone can photograph and use elsewhere. Banks issue random keys free and you can hold several.
Name, city and the length limits
The payee name is capped at 25 characters and the city at 15, and both are conventionally uppercase. These are EMV limits rather than Pix ones, and a long trading name simply has to be shortened — the code shows what fits.
The transaction identifier is optional and limited to 25 characters. Left empty it is encoded as three asterisks, the convention meaning "no identifier", which is what a static counter code normally carries.
Static and dynamic Pix are different things
What this generates is a static Pix code: your key, optionally an amount, printed once and reusable forever. It is right for a counter, a market stall, a donation sign.
A dynamic Pix code is issued per transaction by a payment provider, carries a URL to a payload the bank fetches, and can hold an expiry, a due date and a unique identifier that makes reconciliation automatic. If you are invoicing rather than taking counter payments, that is what you want, and it comes from your bank or provider rather than a generator.
Common questions
- Which Pix key should I put in the code?
- A random key issued by your bank, if you have one. A CPF, email or phone number works identically but is a personal identifier that anyone can photograph off a printed code and use elsewhere. Random keys are free and you can hold several.
- What is the difference between static and dynamic Pix codes?
- A static code is your key printed once and reusable forever, which suits a counter or donation sign. A dynamic code is issued per transaction by a provider and can carry an expiry, a due date and a unique identifier that makes reconciliation automatic.
- Why is my Pix code rejected by the bank app?
- Almost always the CRC-16 checksum. It covers the whole payload including its own header, so a single altered character makes the code invalid. Codes edited by hand after generation fail for this reason.
- Why is the payee name cut short?
- The EMV format caps the name at 25 characters and the city at 15. Those are limits of the underlying standard rather than Pix, so a long trading name has to be shortened to fit.
- Do I have to include an amount?
- No. Leave it out and the payer types what they owe, which is what a counter or donation code normally does. Include one when the sum is fixed, accepting that the printed code is then only valid for that amount.
Other generators
- UPI QR code generatorCreate a UPI QR code that works with GPay, PhonePe, Paytm and any UPI app. Add an amount or let the payer choose. Free and print-ready.
- SEPA transfer QR code generatorCreate an EPC QR code that pre-fills a European bank transfer with your IBAN, name and amount. Free, no account, print-ready.
- Crypto payment QR code generatorCreate a payment request QR code for Bitcoin, Ethereum or USDT, with an optional amount. Free, no account, print-ready.