Make a Printable QR Code From Your Pix Code
Copy the Pix Copia e Cola string out of your bank app, paste it in, and style the code. Export it print-ready for a counter sign, a delivery bag, or an invoice.
Opens in Google Maps. Coordinates work too - "37.4224, -122.0841".
The code opens your business's "Write a review" form. Paste the Place ID, or a Google Maps link that carries one.
A UPI link carries no checksum, so a mistyped ID produces a code that scans perfectly and pays somebody else. Paste the ID from your payment app rather than typing it, and send yourself one rupee before printing.
Paste it exactly as copied. KoloQR does not assemble the payload - it encodes the one your bank issued, and checks it before you print it.
SVG, PNG, JPG • Max 2 MB
What Is a Pix QR Code?
A Pix QR code is a QR code that stores a BR Code - the payment string defined by the Banco Central do Brasil for Pix, written in the EMVCo merchant-presented format. Scanning it in a Brazilian bank app opens a transfer already addressed to the receiver, and often with the amount already filled in. The same string, shown as text instead of as a pattern, is what Brazilians call Pix Copia e Cola.

Static and Dynamic Pix Codes Behave Differently
Pix defines two kinds of QR code, and only one of them belongs on something printed:
- Static (QR Estático) - the whole payment sits inside the string: your Pix key, your name, your city, optionally an amount. It never expires, works offline for the scanner, and can be paid any number of times. This is the one to print.
- Dynamic (QR Dinâmico) - the string holds a link to a payload your payment provider hosts. The payer's app fetches the details at scan time, so the amount and the due date can be set per transaction - and the code can expire.
- Copia e Cola - not a third kind. It is the same string in plain text, for pasting into a bank app instead of scanning. If you have the text, you have everything the code contains.
Print a static Pix code and it keeps working for years; print a dynamic one and you have printed a link with an expiry date on it. Dynamic codes belong on a screen - a checkout page, a WhatsApp message, a delivered invoice - where a fresh one is generated for each payment. A market stall, a counter sign or a delivery bag wants the static kind, and wants it built from a key that is not going to move.
KoloQR Encodes the String Your Bank Issued
A Pix BR Code is not free text. It is a sequence of length-prefixed fields - the Pix key under the identifier br.gov.bcb.pix, currency 986 for the real, country BR, your name, your city - and it closes with a CRC16 checksum calculated over everything before it. Change one character and the checksum no longer matches, and the payer's app rejects the code rather than paying the wrong person. That is why KoloQR does not assemble a Pix payload from a key: your bank app already issues a valid one, and the safe thing to do with it is copy it, not rebuild it. Open the Pix section of your bank app, choose to receive by QR code, and take the Copia e Cola text it shows you. Paste that string into KoloQR and you get a code that encodes exactly what your bank produced, styled and exported at the size and quality a printer needs - which is the part the bank app does not do.
Generate QR Code
Where Pix QR Codes Are Used
Pix reaches places a card terminal never did, which is most of where these codes end up:
- 1
Pick the Pix Key You Want to Print
A Pix key can be your CPF, CNPJ, phone number, email, or a random key. For anything printed, use a random key: it identifies the account without publishing your document number or your phone on a sign in the street.
- 2
Generate the Static Code in Your Bank App
In the Pix section, choose to receive by QR code and pick the static option. Set an amount if the sign is for one fixed price; leave it blank if the payer decides. Then copy the Copia e Cola text.
- 3
Paste the String and Design the Code
Choose the Pix type in KoloQR and paste the payload exactly as copied - no trimming, no line breaks. KoloQR recomputes the checksum and reads the payload back, so the name, the city and the amount shown under the field are the ones the payer will see. Then style the code, and keep contrast high; this is a code scanned outdoors by someone in a hurry.
- 4
Pay Yourself One Real Before Printing
Scan the finished code with a real bank app and go to the confirmation screen. Check the name and the city shown are yours, send one real, and only then export SVG or PDF for print.

Which File Format Should You Download?
KoloQR exports your Pix QR code in three formats. Pick by where it will be seen:
- PNG for invoices sent by email or WhatsApp, and for a code shown on a screen at one fixed size.
- SVG for counter signs, laminated cards, and adhesive labels - anything a printer scales without softening the edges.
- PDF for handing to a gráfica, or for a price card you print and laminate yourself.
A Pix payload is long. A static BR Code with a random key, a name and a city usually runs past 100 characters, which is several symbol versions denser than a short link - more modules in the same square, each one smaller. Two things follow. Print it larger than you would print a URL code, and keep the merchant name short: those fields are capped at 25 characters for the name and 15 for the city, and every character you do not use is a slightly coarser, slightly more forgiving pattern.
Generate QR CodeBest Practices for Pix QR Codes
A printed payment code is the most attacked object in this entire collection, so half of this list is about the sign rather than the pattern:
Use a Random Key on Anything Public
A random key exposes nothing. A CPF or phone key printed on a street-facing sign publishes a document number or a number people can call, and neither is recoverable once it is on a hundred flyers.
Print Your Name Beside the Code
The payer's app shows who is being paid before they confirm. Printing the same name next to the code turns that screen into a check the customer can actually make.
Print Static Codes, Show Dynamic Ones
Dynamic codes carry an expiry and depend on a hosted payload. Anything laminated, stuck down, or sent to a printer should be static.
Watch for Stickers Placed Over Yours
Covering a real payment code with a fraudulent one is the standard attack on unattended signage. Use tamper-evident laminate, and check your own signs at the start of every day.
Preset the Amount Where There Is One
A code per price removes the mistyped total and the argument about which of the two people got it wrong. A code with no amount belongs on a tip jar, not on a menu.
Keep the Merchant Name and City Short
25 characters for the name, 15 for the city. Staying under both keeps the payload shorter, which keeps the printed pattern coarser and easier to scan.
Reprint When You Move the Key
Pix keys are portable between banks and can be deleted outright. A printed code built on a key you no longer hold is a sign that quietly stops taking money.
Make It Bigger Than You Think
Pix payloads are dense and the codes are scanned outdoors, at arm's length, often in bright sun. Roughly a tenth of the reading distance is the floor, not the target.
Keep the Modules Dark on Light
Inverted or low-contrast payment codes fail in exactly the light where money is most often handed over. Dark on light, always, and four modules of clear quiet zone on every side.
Test With a Real Payment, Not a Scanner App
A generic scanner tells you the string decoded. Only a bank app tells you the checksum passed, the key resolved, and the name on the confirmation screen is yours.
Why Your Pix QR Code Isn't Working
A Pix code fails in front of a customer holding a phone, so these are worth checking before the sign goes up rather than after.
The Bank App Says the Code Is Invalid
- Cause
- The payload was altered after the bank issued it - a trimmed space, a line break introduced by copy-paste, or a character lost in a spreadsheet. The BR Code's closing CRC16 checksum no longer matches the rest of the string.
- Fix
- Copy the Copia e Cola text again straight from the bank app and paste it without editing anything. Do not retype it, and do not let a word processor near it.
A Generic Scanner Reads It but No Payment Starts
- Cause
- That is expected. A phone's native camera sees a long string of digits and letters, not a payment - the BR Code is only meaningful to an app that speaks Pix.
- Fix
- Test with a Brazilian bank app's Pix scanner. If it opens a transfer addressed to you, the code is fine, whatever the camera app did with it.
The Code Worked and Now It Doesn't
- Cause
- Either the Pix key behind it was deleted or ported to another institution, or the printed code was dynamic and its payload has expired.
- Fix
- Confirm the key is still registered to your account, and check whether you printed a static or a dynamic code. Reprint from a static code built on a key you intend to keep.
Someone Reports Paying the Wrong Person
- Cause
- A fraudulent sticker was placed over the printed code - the standard attack on unattended payment signage anywhere in the world.
- Fix
- Remove the sign, replace it with a laminated one carrying your name beside the code, and tell customers to check the name on the confirmation screen before sending. Report the fraud to your bank: Pix has a special return mechanism for reported fraud, though it is not a card chargeback and it does not always recover the money.
Still not sure whether the fault is the file or the print? Drop the exported image into the QR code scanner - if it decodes on a desktop and not on paper, the fault entered after the file.
Questions? Answered
A Pix QR code stores a BR Code - the Banco Central do Brasil's payment string, written in the EMVCo format. Scanning it in a Brazilian bank app opens a transfer already addressed to the receiver, often with the amount filled in.
No. A Pix payload ends in a checksum the payer's bank validates, so it has to come from a source Pix trusts. Generate it in your bank app, copy the Copia e Cola string, and use KoloQR to encode, style and print that exact string.
Pix Copia e Cola is the BR Code shown as text instead of as a QR code, so it can be pasted into a bank app. The text and the code carry identical data - if you have one, you can produce the other.
Static. A static code holds the payment details in the pattern, never expires, and can be paid any number of times. A dynamic code points at a hosted payload that can expire, which is not a property you want laminated to a counter.
A random key. It identifies your account without publishing your CPF, your phone number or your email on a sign anyone can photograph. Keys are free to create and you can hold several.
Yes. Your bank app offers an amount field when generating a static code, and the payer sees it already filled in. Leave it blank for tips and donations, where the payer decides what to send.
A static one does not - it works as long as the Pix key behind it stays registered to your account. A dynamic one can expire, because the details live in a payload your provider hosts rather than in the pattern.
A BR Code is not a link, so a native camera has nothing to open and usually just shows the raw string - unlike a UPI code, which is a URI a phone can act on. That is not a fault in the code. Test it with a bank app's Pix scanner instead.
Yes, and they are set by each bank rather than by the code. Lower limits at night are common. A printed code cannot raise them, so a customer paying a large amount may need to adjust the limit in their own app first.
About a tenth of the reading distance, so roughly 10 cm for a sign read from a metre away. Pix payloads are denser than a link, so err generously - the print size calculator works it out from your own distance and payload.
Keep Exploring
Pages that pick up where this one leaves off - the same setting, the same kind of code, or the next thing worth deciding.
Retail Stores
Product details, stock and review links on shelf labels, shop windows and checkout signs.
Barbershops
Window bookings, one code per chair for rebooking, reviews and Instagram - with sizes in cm and finishes that survive hairspray and station lights.
PayPal QR Code
Take a payment from a printed code by sending the scan to your PayPal.me link.
PromptPay QR Code
Encode the PromptPay payload your Thai bank app issued as a code you can style and print.
PayNow QR Code
Encode the PayNow payload your Singapore bank app issued as a code you can style and print.
QR Code Print Size Calculator
Turn a scanning distance, a payload and a material into a minimum width in millimetres, with the module size and quiet zone behind it.
Why KoloQR?
- Create QR codes for websites, menus, Wi-Fi, PDFs, and business cards
- Customize colors, logos, and unique shapes
- Download high-quality PNG and SVG files
- Built for both print and digital
