Skip to content

Blog

What Is a QR Code on a Receipt?

QR Code Types

Donatas Simkus Updated

2 receipts with QR codes side by side on a worktable
On this page

A QR code on a receipt is a link the shop printed for you, to a page it picked, such as a review page, a tip or a booking for your next visit. It can also be a tax record: in Saudi Arabia, for example, the code on an electronic invoice is made for the tax authority’s app, which checks the invoice.

Scan it with your phone camera and read the link before you open it. If you print these codes, use error correction level Q or H: in our test on drawn creases (nothing was printed), a 1 module crease broke a receipt code at level L, and a 2 module crease broke level M.

What the code on your receipt does

Hands holding a receipt and phone after scanning a QR code
  • A link the business chose. Tabology, a point of sale system, explains in its help how a venue adds a QR code to its receipts so customers can leave a review, add a tip or make a future booking, and the venue can point it at any web page.
  • A tax record. In Saudi Arabia, the tax authority ZATCA describes the QR code on electronic invoices as a code the buyer can scan with its VAT app for basic validation. ZATCA’s Simplified Guide to e-invoicing lists 5 fields: the seller’s name, the seller’s VAT registration number, the date and time, the VAT amount and the total with VAT. Since 1 January 2023, Phase 2 of e-invoicing has reached businesses in waves, and under it the code on a simplified tax invoice, the kind issued for a sale to a consumer, carries 9 fields. ZATCA’s security standard adds the invoice’s hash and 3 fields for its digital signature. A code like this is made for that app, so a camera may show you data and no link.

How to scan the QR code on a receipt

  1. Paper receipt: lay it flat in good light, open the camera, and hold the phone far enough back for the whole code to fit. Tap the link that appears.
  2. Read the link first. The phone shows where the code goes before it opens anything. Check the domain belongs to the shop you bought from.
  3. Digital receipt on the same phone: tap the link in the receipt if there is one. If there is only the code, take a screenshot and open it in the free QR code decoder, which reads it in your browser. Our guide on how to scan a QR code covers phones, computers and screenshots.
  4. If it will not scan: flatten the fold, add light and try a second phone. A faded or creased code may be past reading, and the test below shows how much damage each error correction level takes.

The test: a drawn crease and fading on a receipt code

Test QR code for a receipt link at error level H with a white crease 2 modules wide across its middle, which still reads

The code above has a drawn crease, 2 modules wide, through its middle and still read on both readers in every test. It opens this page.

Nothing was printed for this test. We made a code for a receipt style link, https://qrplify.com/blog/what-is-qr-code-on-receipt/?receipt=0412-20261010-0057, with the Python qrcode library at the 4 error correction levels, L, M, Q and H, then drew 5 conditions on each:

  • Fresh: black on white.
  • Faded to 3.5:1: the dark modules lightened to grey #888888.
  • Faded to 2.1:1: the dark modules lightened to grey #B4B4B4.
  • Crease 1: a white band 1 module tall across the middle of the code, as where a fold rubs the print off.
  • Crease 2: the same band, 2 modules tall.

Each code was read twice by 2 QR readers, Apple Vision (the barcode detector in Apple’s Vision framework, on a Mac) and the QR detector in OpenCV 4.14: once as the clean image file, then as 10 degraded copies, each at half size with a 1 pixel blur and random noise, the same rough stand-in for a camera image as in our test of 24 color pairs. A pass means the reader returned exactly the link.

Results

Levels L and MLevels Q and H
FreshPassPass
Faded to 3.5:1PassPass
Faded to 2.1:1Pass clean. Degraded copies on OpenCV: L 9 of 10, M 7 of 10Pass
Crease 1L failed on both readers, even as a clean file. M passed.Pass
Crease 2L and M failed on both readers, even as clean filesPass

A pass in the table means both readers read the clean file and all 10 degraded copies. Apple Vision read every faded copy at every level. The creases decided the result: error correction rebuilds missing parts of a code, and each level up rebuilds more. Q and H took a crease 2 modules wide on both readers. L failed with 1.

How big the code prints

Higher levels add modules, so the code grows. These sizes use Denso Wave’s method for a printed code: module size from the printer’s dots, plus a 4 module margin on every side. Thermal receipt printers lay the code down in dots; Star’s TSP143IV, for one, prints at 203 dpi, 8 dots per millimeter, and prints 72 mm wide on 80 mm paper. At 3 dots per module, each module is 0.375 mm. The short link is https://qrplify.com; the printed size includes the margin:

Level MLevel H
Short link, 19 characters12.4 mm, 25 modules a side13.9 mm, 29 modules a side
Receipt link, 79 characters16.9 mm, 37 modules a side21.4 mm, 49 modules a side

Even the largest fits 3 times across a 72 mm print width. A shorter link gives a smaller code at the same level.

Printing QR codes on receipts: 5 rules

Person measuring spacing around a QR code on a receipt
  1. Use error correction Q or H. Receipts get folded in pockets and wallets. In our simulated test, only Q and H read through a drawn 2 module crease, and Denso Wave suggests Q or H where a code may get dirty.
  2. Keep the link short. A shorter link means fewer modules, which keeps the code small at a high level.
  3. Keep the margin clear. Denso Wave asks for a margin 4 modules wide on all sides. Keep totals, barcodes and other text out of it.
  4. Say what the code does, in 1 line beside it: “Scan to leave a review” or “Scan for your digital receipt”. Tabology’s setup asks for that line too.
  5. Test a printed receipt. Print 1, scan it with 2 phones, then fold it through the code and scan again.
2 receipts with QR codes side by side on a worktable

A receipt can sit in a drawer long after the sale. If the page behind the code may move, print a dynamic QR code, which lets you change the destination after printing: a free account adds 1. For a page that will not change, a static code from the URL QR code generator needs no account and keeps working after you print it. More in static and dynamic codes compared and can you update a QR code link after printing?

Is it safe to scan a QR code on a receipt?

Scanning a code on its own almost never infects a phone, because the code only holds text, usually a link: the risk starts when the link is opened. The FBI’s 2022 notice on QR codes says QR codes are not malicious in nature, and that malicious codes “may also contain embedded malware”. The main risk it describes is a tampered code, for example a sticker over a printed one, that sends people to sites that take login and payment details or redirects a payment. Its advice: check the link after you scan, take care before you type a password or card details on a page a code opened, and get apps from your phone’s app store, never from a QR code. More in can scanning a QR code infect your phone?

FAQ: receipt QR codes

How do I make a QR code for an invoice?

Point a code at the invoice’s online page or payment link with the URL QR code generator, or at the invoice file with the PDF and file QR code generator. Where the law sets the code’s contents, as with ZATCA’s e-invoices in Saudi Arabia, the invoicing system has to build the code to the tax authority’s rules.

How do I scan a QR code that was sent to me?

Open the image, take a screenshot, and read it in the free QR code decoder or with your phone’s own screenshot scanning, as our scanning guide shows. A phone cannot scan its own screen with its camera.

What is the FBI warning about QR codes?

A January 2022 notice from the FBI’s Internet Crime Complaint Center says criminals replace real QR codes with tampered ones that open fake sites asking for login and financial details. It also warns of codes carrying malware, and tells people to check the link after scanning and to look for stickers over printed codes.

Get started

Unlimited static codes, free. And unlimited dynamic codes on a free account

No credit card. Free static codes never expire.