Why do my discount code barcodes keep failing to scan at POS?

Long discount codes can turn into unreliable, hard-to-scan barcodes at checkout. Here's why, and how to fix it without giving up on barcode discounts altogether.

discountsposbarcodesretail

What's going on

A merchant sets up a discount code, prints it as a barcode for in-store use, and finds that staff can't reliably scan it at the POS terminal. The scanner either doesn't read it at all, misreads characters, or takes several attempts. The instinct is to blame Shopify for imposing some invisible length limit on discount codes, but that's usually not what's happening.

The real issue sits between the code and the barcode. Long or mixed-case alphanumeric strings, when rendered as a traditional 1D barcode in a less space-efficient format, produce a wide, dense pattern that's genuinely harder for scanners, particularly older or cheaper hardware, to read cleanly. Add a low-resolution printer, a small label, or dim lighting, and even a moderately long code can become unreliable at checkout, frustrating staff and slowing down the line.

Why it happens

Shopify's discount code field itself is generous; codes can run well past what any in-store barcode would ever need, so the platform isn't the bottleneck. The constraint comes from print physics and barcode format: 1D barcode formats encode each character as a set of bars, and less space-efficient formats need noticeably more width per character than denser alternatives. A 15 to 20 character discount code can end up as a barcode too wide to fit a standard label or too fine to scan reliably.

On top of that, POS scanning happens over more than one path: a device camera reading a code visually, or a dedicated hardware scanner reading a printed 1D barcode, and these don't have identical tolerances for density, contrast, or lighting. A code and barcode combination that works on one setup can fail on another, which is why this tends to show up inconsistently across locations or devices rather than as a hard, predictable limit.

4 ways to fix it

1

Switch to a QR code instead of a 1D barcode

Shopify lets you generate a QR code for any code-based discount, downloadable from the discount's page in Admin, which you can print on shelf talkers, flyers, or hand cards. Staff scan it with the POS camera or a 2D scanner and the code applies instantly, and customers can scan it themselves to pull the code up online. Because a QR code encodes a URL rather than raw characters the way a 1D barcode does, code length stops being a printing or scanning problem. This only works for code-based discounts, not automatic discounts, since those have no code to scan.

2

Shorten the code itself

Nothing about Shopify's discount code field forces long strings; the platform accepts far more characters than any barcode needs, so the practical limit comes from your barcode format and printer, not from Shopify. Stick to 6 to 10 uppercase letters and digits, such as SAVE10FALL rather than a long generated string, avoid easily confused characters like O and 0 or I and 1, and skip special characters. Shorter, cleaner codes produce narrower, less dense barcodes that scan reliably on the first pass.

3

Use a more space-efficient barcode symbology

If you're generating your own barcodes for discount codes rather than using Shopify's QR option, the barcode format matters as much as the code length. Some common 1D symbologies, like Code 39, need noticeably more width per character than others, like Code 128, so the same code can print too wide or too dense to scan reliably depending on which format your barcode generator uses. Check what your barcode app or printer defaults to and switch to a denser, alphanumeric-friendly format if you have the option.

4

Test on your actual in-store hardware before rolling codes out

POS camera scanning through a phone or tablet and dedicated laser or CCD scanners don't tolerate barcode density, print resolution, or lighting the same way. A code that scans cleanly on one device can fail on an older paired scanner or a low-resolution receipt printer. Print a small batch, test the exact codes and exact hardware you'll use in-store, and only commit to a code length and format once it's proven on that hardware.

Bottom line

Shopify doesn't cap discount codes at a length that would explain scanning failures; the real bottleneck is almost always the barcode format, print size, or scanner hardware. Try Shopify's native QR code option for discounts first, since it sidesteps the barcode-length problem entirely. If you need a traditional 1D barcode, keep codes short and alphanumeric, favor a denser barcode format, and test on your real in-store scanners before printing a full batch. This is mostly a print and hardware tuning problem rather than something an app needs to solve.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.