Turn a Pix key into a QR code and a copy-and-paste code, right in your browser.
A Pix QR code is not an image with a secret inside: it is a short line of text, called BR Code, drawn as a QR. That text follows the EMV® QR Code standard adopted by the Banco Central do Brasil, and it is the same string banking apps call "Pix copia e cola" — scanning and pasting send the bank identical information, which is why this tool always gives you both, side by side.
The BR Code is a sequence of fields written as ID (2 digits) + length (2 digits) + value. Field 00 marks the format, field 26 carries the Pix data — the identifier BR.GOV.BCB.PIX plus your key — 53 the currency (986, the Brazilian real), 54 the amount when there is one, 58 the country, 59 the receiver name, 60 the city and 62 an optional identifier. The last field, 63, is a CRC16 checksum over the whole payload: change one character anywhere and the code stops being valid, which is what keeps a corrupted paste from becoming a wrong payment. Names and cities are cut to the 25 and 15 characters the standard allows, and accents are removed because the payload is ASCII.
What comes out is a static QR code: it never expires, it can be paid many times, and it fits a stall sign or an invoice. Two honest limits. The tool checks the format of the key — the check digits of a CPF or CNPJ, the shape of an email, phone or random key — but it cannot ask any bank whether that key exists or who owns it; only the payer's app resolves the key and shows the real receiver name, so confirm that name and test a new code with a small amount first. And a static code reports nothing back to you: to know who paid what, use the optional identifier or a payment provider. Everything here runs in JavaScript on your device: your Pix key is typed, validated and drawn in the browser and never travels anywhere.
Every field is ID (2) + length (2) + value, in ascending order of ID. Field 63 is a CRC16/CCITT-FALSE: polynomial 0x1021, initial value 0xFFFF, no reflection, computed over the entire payload already ending in "6304" and written as four uppercase hexadecimal digits.
No. The key, the name and the amount are read, validated and turned into a QR code by JavaScript running on your device. Nothing is sent to Vai.la or to any other server, nothing is stored, and no one else sees the code you generate.
Yes. It follows the BR Code standard published by the Banco Central, which every Pix-enabled app reads. If an app refuses the code, the usual cause is a key not registered at any bank.
Yes, and it is the most common choice. Leave the amount empty and the payer types how much to send — useful for tips and donations. Fill it in and the value comes pre-filled in the payer's app.
It never expires and can be paid as many times as you want. This is a static Pix code, the kind printed on a sign at a shop counter. Codes that expire or are tied to one payment are dynamic, issued by a bank.
The tool refuses keys with an invalid format — a CPF or CNPJ with wrong check digits, a malformed email, a phone without the area code or an invalid random key. It cannot tell whether a well-formed key is yours, so read the summary under the code and confirm the name the payer's app displays.
Because the EMV standard requires both fields in every payload. They are labels: the money is routed by the Pix key, not by the name. Name is capped at 25 characters and city at 15, both without accents, so long entries are shortened here.
Vai.la creates short links and QR Codes with click tracking, for free.
Vai.la is not responsible for how the tools are used or for decisions made based on their results.