Shopify

Fix the EAN-13 Check Digit Error on Shopify Labels

Getting "Incorrect EAN-13 check digit provided" when printing Shopify barcode labels? Here's what the error actually means and the right fix for your setup.

B Barcodeman Team
· · 5 min read

The “Incorrect EAN-13 check digit provided” error on your Shopify labels means the 13-digit code you entered isn’t a valid EAN-13 barcode — the last digit of EAN-13 is a check digit calculated from the first 12, not a digit you get to pick. The fix for the EAN-13 check digit error on Shopify depends on where your barcodes come from: real GS1 GTINs, internal codes, or codes bound for a retail marketplace — three scenarios, three different paths forward.

This guide walks through what the error actually means, how to identify which scenario you’re in, and how to change the format in Barcodeman if switching to Code 128 is the right move.

What the EAN-13 check digit error actually means

EAN-13 isn’t just “thirteen digits.” It’s a GS1 retail barcode standard with strict mathematical rules. The thirteenth digit is a checksum — computed from the first twelve digits using a specific formula. Scanners validate this checksum to detect misprints. If the number you supplied doesn’t pass the check, the label can’t generate.

Shopify itself doesn’t validate the barcode field. You can paste any string into a product’s Barcode field and Shopify saves it. The validation happens later, at print time, when your label app has to actually encode the barcode into bars.

Barcodeman is strict about this on purpose. Retail systems that validate GTINs — Amazon, Walmart, grocers’ receiving scanners, most modern POS — will reject a barcode with a bad check digit. Catching the mismatch at print time is annoying, but it’s the correct behavior.

So when you see Incorrect EAN-13 check digit provided, the problem is almost always the data, not the app.

Three scenarios — which one is you?

Most merchants fall into one of these three buckets. Find yours first, then apply the matching fix.

Scenario A: You have real GS1 GTINs

Real GTINs come from GS1 directly or from a supplier who purchased them. They look like a 12- or 13-digit number on a product datasheet or an Amazon listing feed.

What to check:

  1. The barcode field in Shopify contains all 12 or 13 digits, including the supplier’s check digit. A short string (11 digits or fewer) triggers the related EAN13 must be 12 or 13 digits error.
  2. No extra spaces, dashes, or hidden characters from copy-paste.
  3. Leading zeros weren’t stripped by Excel or Google Sheets. A 13-digit GTIN starting with 0 can silently become 12 digits — or shorter — in a spreadsheet round-trip.

What the fix looks like: if the digits are right, keep the EAN-13 format in your label template. It will render cleanly. If you see EAN13 must be 12 or 13 digits, the data is too short — paste the full value back in.

Scenario B: You use internal codes, not GS1

Plenty of merchants invent 12- or 13-digit barcodes for internal inventory tracking. That’s fine — but those codes are not valid EAN-13s because their check digits are random.

The fix: switch your label template’s barcode format from EAN-13 to Code 128.

Code 128 accepts any alphanumeric characters, has no fixed length, and no check digit. It scans everywhere a retail POS, handheld scanner, or warehouse system supports. For in-store, internal, and non-marketplace use, Code 128 is the right default.

Visually, a Code 128 barcode sitting on a product label looks nearly identical to an EAN-13 at a glance. Customers and staff don’t care. Scanners don’t care. You just stop seeing the error.

Scenario C: You need EAN-13 for a marketplace

Amazon, Walmart, and Google Shopping will reject invented codes. They validate against GS1’s database. “My supplier didn’t give me one” or “I just made one up” won’t pass.

Your options:

  1. Buy GS1 membership or single-use GTINs. GS1 sells annual memberships (which include a block of prefixes) and one-off GTINs for merchants who only need a handful. This is the correct long-term path if you sell into multiple retail channels.
  2. Use the marketplace’s own product ID scheme. Amazon issues FNSKUs. Walmart has internal supplier IDs. These bypass GS1 entirely but only work on that marketplace.

Barcodeman prints whatever valid GTIN you paste into Shopify — it doesn’t issue GS1 codes on your behalf, and no label app can. The GTIN has to exist first in GS1’s global registry before any scanner will verify it downstream.

How to change the barcode format in Barcodeman

If you landed in Scenario B (most merchants do), here’s the thirty-second fix:

  1. Open the label template in Barcodeman
  2. Click the barcode element on the canvas
  3. In the right panel, find the barcode type dropdown (currently set to EAN-13)
  4. Change it to Code 128
  5. Save the template
  6. Reprint

Your product data doesn’t change. Only the label template’s encoding changes. Every product already in your print queue will regenerate correctly on the next print.

For the full reference on what each format supports — CODE128, EAN-13, UPC-A, UPC-E, EAN-8, CODE39, ISBN, GS1-128 — see the barcode format guide.

Other errors with the same root cause

If you’ve seen any of these, the fix is the same family: wrong barcode format for the data you have.

Error messageWhat it means
Incorrect EAN-13 check digit providedYour 13 digits don’t compute. Switch to Code 128 or supply a real GTIN.
EAN13 must be 12 or 13 digitsThe barcode field has fewer than 12 characters. Paste the full GTIN.
Incorrect EAN-8 check digit providedSame as EAN-13, for the 8-digit variant. Same fix: switch format or supply a valid EAN-8.
UPC-E must have number system 0 or 1Your UPC-E doesn’t start with 0 or 1. The UPC-E spec requires it.
ISBN-13 must be 15 or 17 characters including dashesISBN format expects dashes in specific positions. If you’re not selling books, switch to Code 128.
AIs must start with opening parenthesisGS1-128 requires Application Identifiers wrapped in parentheses. Only use GS1-128 if your supply chain requires it.

For the full troubleshooting reference, see errors when generating labels.

Frequently asked questions

Does Barcodeman generate valid EAN-13 check digits for me?

Barcodeman prints the barcode value you supply. If you want a valid EAN-13, the 13 digits need to already be valid when they enter Shopify. The app validates but doesn’t auto-fix — silently appending a check digit would mean the barcode printed on your label no longer matches what Shopify stores in the Barcode field, and your inventory reconciliation breaks. A clean error is safer than a silent data rewrite.

Can I use Code 128 for in-store POS scanning?

Yes. Code 128 scans on virtually every modern POS scanner, every major thermal printer brand (Zebra, Brother, DYMO, Rollo), and every mainstream mobile barcode scanning SDK. Shopify POS reads Code 128 fine.

Do I need to buy GS1 GTINs for my Shopify store?

Only if you sell into channels that require them (Amazon, Walmart, Google Shopping, brick-and-mortar retail chains). For a DTC Shopify store selling only on your own website, internal Code 128 codes are plenty.

Why does Shopify accept the code but Barcodeman rejects it?

Shopify’s Barcode field is just a text input — it stores whatever you type. There’s no validation that what you entered is a real EAN-13. Barcodeman validates at print time because the barcode has to actually work when scanned.

I switched to Code 128 — will labels I already printed still scan?

Yes. The labels you already printed encode whatever format they were printed with. The format change only affects new prints. Existing labels in circulation are unaffected.

What format should I use by default?

Code 128 unless you have a specific reason to use something else. If you sell retail through Amazon / Walmart / GS1-participating chains, use EAN-13 or UPC-A with real GTINs. For everything else — internal inventory, DTC, in-store — Code 128 is the safe default.

Start printing cleanly

If you’re not already using Barcodeman and you’re hitting barcode format issues with your current setup, install it from the Shopify App Store. The Free plan prints up to 100 labels per month, with every supported format — Code 128, EAN-13, UPC-A, UPC-E, EAN-8, Code 39, ISBN, GS1-128 — available from day one.

Already on Barcodeman? Swap the template’s barcode format to Code 128, save, and the error will stop. Then read the barcode format guide to decide which format fits each label type you print.