← Back to blog

Every GTIN Passed the Check Digit. The Retailer Rejected It Anyway.

gtin verificationgtin validationgs1check digitproduct dataretailer submission

Every GTIN in the file passed the check-digit test. The brand ran them through a free calculator, saw green across the board, and submitted the item setup. Walmart rejected it anyway. The check digit was never the thing standing between the brand and an approved item. It was the easiest test to pass and the least informative one to pass.

Most GTIN verification stops at the check digit because that is the part with a clean mathematical answer. A GS1 mod-10 check digit confirms that the digits of a GTIN-8, 12, 13, or 14 are internally consistent, so a scanner can trust it decoded the number correctly. That is a real and necessary check. It is also silent on almost everything a retailer's portal actually rejects.

What a valid check digit proves, and what it hides

The check digit answers one question: are these digits self-consistent? It cannot see whether the number is the right number, whether it collides with another item, or whether it fits the retailer's rules. Those are different questions, and they are the ones that fail.

| A valid check digit proves | It says nothing about | |---|---| | The digits are internally consistent (mod-10) | Whether the GTIN duplicates another item in your catalog | | The number decodes correctly at the scanner | Whether the case GTIN-14 maps to the unit GTIN beneath it | | The length is a valid GTIN length | Whether the retailer's portal requires a different length or format | | | Whether the company prefix is consistent across your items |

A brand can hold a catalog of GTINs that every calculator calls valid and that Walmart Item 360, Costco, and 1WorldSync all reject, because those systems check the second column and the calculator only checks the first.

The four failures that pass the math

Duplicates are the most common. Two items share a GTIN, usually because a SKU was cloned in the ERP and the barcode came along with it. Both pass the check digit. The retailer's system, which expects one GTIN to mean one item, flags a collision the moment the second item appears.

Packaging-hierarchy breaks are the most expensive. A case is assigned a GTIN-14 that does not correctly reference the unit GTIN inside it, or a unit ships with no case-level GTIN at all, an orphan. The digits are valid. The relationship is broken, and the retailer that scans the case cannot resolve what is inside it.

Company-prefix inconsistency is the quietest. GTINs built on mixed or unlicensed prefixes pass the math but signal a data-entry error or an unmigrated acquisition, and they surface later as ownership disputes in the GS1 registry.

Format mismatches are the most avoidable. A retailer's portal wants a 14-digit case code and receives a 12-digit unit code, or the reverse. Valid number, wrong context, rejected setup. None of these four is a check-digit failure, which is exactly why check-digit verification never catches them.

Verification is worth doing when it names the cost

Knowing a GTIN is invalid is not useful on its own. Knowing which retailer will reject it, what that rejection will cost, and which fix to make first is what turns a validation pass into a work list. A rejected item setup is not a clerical event. It is a delayed launch: the buyer approved the item, but the purchase order cannot flow until the data clears, and the product data defects that drive rejections also drive the chargebacks once the item is finally live, where a single wrong attribute can cost hundreds of dollars per shipment repeated across every order.

Verification that scores a catalog for submission readiness, weighted by how severely each issue blocks the specific retailer, tells the brand where to spend its limited data-cleanup hours: the Critical issues that block submission first, the Warnings that will cause chargebacks next, the Info-level best practices last. That is the difference between "some of these are invalid" and "fix these six before you submit to Walmart, and here is what each one is costing you." The validator that runs this against your catalog is here, with retailer-specific checklists for Walmart Item 360, Costco, UNFI, KeHE, Whole Foods, and 1WorldSync.

The barcode is correct. The data around it is not.

A GTIN is twelve or fourteen digits that only mean something in relation to everything else: the item they identify, the case they roll up into, the prefix that owns them, the portal that receives them. Check-digit verification confirms the digits and stops. Real verification checks the relationships, because the relationships are where retailers reject and where the same wrong item data quietly propagates through the data pool to every customer at once. The number can be perfectly valid and completely unready.

Send me your GTIN list

Send me your product list with its GTINs, unit and case. I will run it against the check digit and against what Walmart, Costco, and the distributors actually require, flag the duplicates and the broken case hierarchies, and give you a ranked fix list before your next submission rejects. Thirty minutes.