Back to blog
PrimentraPrimentra
·July 22, 2026·8 min read

GTIN management: the barcode that belonged to two products

Home/Blog/GTIN management: the barcode that belonged to two products
ONE PRODUCT · THREE PACKAGING LEVELS · THREE NUMBERSEACH1 unit00871234500017unique in catalogCASE24 each10871234500014!taken · retired 2017PALLET40 cases20871234500011unique in catalogthe number outlives the product

The forklift driver scans an inbound case and the WMS books in twenty-four units of chrome polish. The pallet is dish soap. The label is correct, the scanner read it cleanly, and the supplier shipped exactly what was ordered. The problem is a row in your item master: the case code on that box is still attached to a product you stopped buying in 2017, from the years when a barcode number was allowed a second life.

Most teams treat barcodes as a packaging detail, something the label printer and the till sort out between themselves. But the GTIN, the number under the bars, is a product identifier that other companies assign, share, retire and occasionally resurrect. That makes it master data of an unusually fragile kind: an attribute you do not fully control, wired into every scan at goods-in, every till transaction and every marketplace listing you own. When it is wrong, it is wrong at machine speed, and nobody typed anything.

One number, four formats, one field

GTIN is the umbrella term for the numbers most people still call UPC or EAN. A UPC-A barcode carries a 12-digit GTIN, an EAN-13 carries 13, small packs use 8, and cases and pallets usually carry 14, where the first digit marks the packaging level. It is one numbering system at different widths, and the same product can legitimately appear in different systems at different lengths. The 12-digit 036000291452 and the 13-digit 0036000291452 are the same number.

GS1, the organisation that runs the system, has given the same advice for years: store every GTIN as 14 digits, zero-padded, in a single field. Almost nobody does. The ERP keeps 13, the ecommerce platform keeps 12, an integration trims or pads somewhere in the middle, and matching records across systems turns into string surgery. This is how one physical product enters the catalog twice, once per format, and every stock count, price and listing splits between the twins.

Spreadsheets make it worse. Excel strips the leading zero the moment a GTIN column is opened as a number, and shows the longer codes in scientific notation, so one careless save later the file going back into the import carries different identifiers than the one that came out. The last digit of every GTIN is a check digit computed from the others, and it exists so a corrupted code fails loudly. It only helps if something recomputes it, and a spreadsheet column does not. Validating length, digits and checksum at the point of entry is the cheapest data quality rule you will ever deploy.

When the number has to change

GS1 publishes allocation rules for when a product change forces a new GTIN, and they are stricter than most item masters assume.

What changed
Verdict
Formulation or recipe changes
New GTIN
Declared net content changes
New GTIN
Dimensions or gross weight move more than 20%
New GTIN
Brand name changes
New GTIN
Each packaging level: each, case, pallet
Own GTIN per level
Minor artwork tweak, price change
Keep the number

The formulation rule is the one with teeth. When a manufacturer reformulates and keeps the old GTIN, every retailer with allergen declarations, ingredient lists or nutrition data keyed to that number is now publishing the old product's facts against the new product's contents. People with allergies read those declarations. A new GTIN is not bureaucracy. It is the signal that tells ten thousand downstream systems their cached copy of the product is stale.

The packaging level rule leads straight into unit of measure territory. If the case carries its own GTIN, your item master needs the case as a governed record with a conversion factor linking it to the each, not a note on the base item. The factors are one half of that problem. The GTIN is the identifier half, and they fail together: a case code matched to the each record books in 24 units as 1.

And one rule changed recently enough to still cause trouble. Since January 2019, a GTIN may never be reused for a different product. Before that, a number could be reassigned roughly four years after the old product left the market, which is exactly how a chrome polish from 2017 and a dish soap from 2023 end up sharing one. The standard now says the number belongs to the dead product forever. Your item master should agree: retire products, keep the rows.

The barcodes that were never global

Not every EAN-13 in your catalog is globally unique, and this one surprises people. Numbers beginning 20 through 29 are restricted circulation numbers, reserved for internal use, mostly store-packed and variable weight items: the ham the deli counter wraps and weighs. They are unique inside the company that issued them and meaningless one street away.

Two retail estates that merge discover this in the first week. Both used the 21 prefix for weighed items, so one number is smoked ham on one side of the network and gouda on the other, and the tills disagree until someone renumbers an entire category. The same collision happens quietly whenever an internal code escapes its scope: printed on a case that reaches a trading partner, or pasted into a marketplace field that expected a licensed GTIN.

Marketplaces have stopped being polite about it. Amazon validates GTINs against the GS1 registry and suppresses listings whose numbers are not licensed to the brand on the label. Codes bought from cheap prefix resellers, recycled numbers and internal store codes all fail that check, even though a till accepts them happily. If listings are part of your revenue, the provenance of the number is now part of the product record.

What governing GTINs actually means

None of this needs exotic tooling. It needs the GTIN treated as a governed attribute of the product instead of a string on a label, with a handful of rules enforced where the data is born.

Store one format: GTIN-14, zero-padded, one field. Validate on entry: numeric, valid length, checksum correct. Enforce uniqueness across the whole catalog, retired items included, so a resurrected number is caught the day it arrives instead of at goods-in. Give every packaging level its own record with its own GTIN, linked to the base item. And make GTIN assignment a required step in new item setup, cleared before the first order, not patched after the first delivery.

Then put an audit trail behind the field. A GTIN that changes is either a legitimate relabel or a data error, and both are worth a name and a timestamp. What none of this fixes is the supplier who mislabels a pallet; that case still arrives. The difference is what happens next. A governed item master rejects the scan because the code belongs to a retired product, and someone walks over and looks, instead of twenty-four units of chrome polish going into stock for a picker to hunt on Thursday.

Common questions

What is the difference between a GTIN, a UPC and an EAN?

They are the same numbering system at different lengths. A UPC-A barcode carries a 12-digit GTIN, an EAN-13 carries 13 digits, and case codes usually carry 14, where the first digit marks the packaging level. Pad the shorter forms with leading zeros and you get the same number. GS1 advises storing everything as 14 digits in one field, which quietly removes a whole class of matching bugs.

When does a product legally need a new GTIN?

When the formulation changes, when the declared net content changes, when dimensions or gross weight move more than 20 percent, when the brand changes, and at every packaging level. The formulation rule is the one with teeth: keep the old number through a recipe change and every retailer publishing allergen data keyed to that number is now describing the wrong product.

Can a barcode number be reused?

Not since January 2019. Before that a GTIN could be reassigned roughly four years after the old product left the market, so numbers from that era may have had two lives, and old item masters remember the first one. The current rule is permanent retirement, and your catalog should mirror it: retire the record, keep the row.

Why did a marketplace reject a GTIN that scans fine in store?

Scanning proves the checksum, not the provenance. Amazon and other marketplaces validate GTINs against the GS1 registry and suppress listings whose numbers are not licensed to the brand on the label. Codes from cheap prefix resellers, recycled numbers and internal store codes all fail that check even though a till accepts them happily.

Give the number one owner

Primentra governs product master data on your own SQL Server: a typed GTIN attribute with validation on entry, uniqueness across the catalog, approval workflows in front of changes, and an audit trail of who changed which number when. Downstream systems read integration views, so the WMS and the webshop see the same identifier. It deploys in a day and costs €7,500 per year flat.

Start free trial →Try the demo →

More from the blog

New item setup: the pallet that arrived before the item number did8 min readProduct classification master data: why your biggest spend category is Miscellaneous8 min readMultilingual master data: the translation that stopped tracking the product8 min read

Ready to migrate from Microsoft MDS?

Join the waitlist and be the first to try Primentra. All features included.

Download Free TrialTry DemoCompare MDM tools
GTIN management: the barcode that belonged to two products | Primentra