A single pallet can carry five different barcodes: the manufacturer's product code, the code on the shipping case, a label with lot and expiration date, the pallet label and, on the rack, the location label. Each has a different function. When a code is used outside its function, for example a product code with no lot where traceability is required, the problem is detected in an audit or a recall.
For companies moving goods between the US and Mexico, the same symbols apply on both sides of the border: UPC-A dominates US retail, EAN-13 dominates Mexican retail, and both encode a GTIN issued through GS1.
The three families
| Code | Type | What it holds | Typical warehouse use |
|---|---|---|---|
| UPC-A | Linear, GS1 | 12-digit GTIN | Consumer products sold in the US and Canada |
| EAN-13 | Linear, GS1 | 13-digit GTIN | Consumer products sold in Mexico and most other countries |
| ITF-14 | Linear, GS1 | 14-digit GTIN | Shipping cases, printed directly on corrugate |
| Code 128 | Linear, open use | Letters and numbers | Locations, internal pallets, documents |
| GS1-128 | Linear, GS1 | Several data fields with Application Identifiers | Cases and pallets with lot, expiration, serial and SSCC |
| GS1 DataMatrix | 2D, GS1 | The same data in a small area | Healthcare, small parts, packaging with lot and serial |
| QR with GS1 Digital Link | 2D, GS1 | A web link that contains the GTIN and other data | Consumer products that also carry online information |
Product codes: UPC-A and EAN-13
They identify only the item. Two units of the same product from different lots carry exactly the same UPC. They are a prerequisite for selling through retail chains and marketplaces, and their number, the GTIN, is assigned by the brand owner from the company prefix licensed by GS1. The GS1 General Specifications assign a different GTIN to each packaging level: each, inner pack and case.
Internal codes: Code 128
Codes read only inside your warehouse (location A-05-03-2, pallet LP00001234, an outbound document) do not require a trade standard. Code 128 encodes letters and numbers compactly and any scanner reads it.
Codes with data: GS1-128 and 2D codes
When a label must carry more data than the product identification, GS1 defines Application Identifiers: numbers in parentheses that announce which field follows. The most used in a warehouse are (01) GTIN, (10) lot, (17) expiration date, (21) serial number and (00) SSCC, the code for a logistic unit such as a pallet. A GS1-128 with (01), (17) and (10) gives the scanner the product, expiration and lot in a single read.
2D codes carry the same data in less space. GS1 US coordinates the Sunrise 2027 goal for US retail point-of-sale systems to read 2D barcodes, and GS1 Mexico promotes the same transition to QR with GS1 Digital Link and GS1 DataMatrix. For the warehouse, the recommendation is to buy imaging (2D) scanners, not laser-only ones.
Which code fits each label
- Product sold to retailers or online: UPC-A for the US or EAN-13 for Mexico, with a GS1 GTIN. Do not invent your own codes for retail.
- Product with lot or expiration: besides the product code, a GS1-128 or 2D label on the case with lot and expiration. If the supplier's label already includes it, read it at receiving.
- Location: Code 128 with the location code and human-readable text underneath.
- Pallet: Code 128 with your internal code or, if your customer requires it, GS1-128 with an SSCC.
- Document: Code 128 with the document number, to open the task with one scan.
Common mistakes
- Treating the product code as if it identified the lot. With a UPC alone, the system does not record which lot shipped.
- Printing codes too small or with low contrast. The scanner fails and the person must enter the code by hand.
- Location labels placed too high to be read. For upper levels, use larger labels or place them on the lower beam with a reference to the level above.
- Laser-only scanners in an operation that will receive 2D codes.
- No human-readable text. When a code does not scan, staff need the text to enter it.
How Chainlink handles it
In Chainlink WMS, each product records the barcode read on the floor (EAN-13, UPC-A, Code 128 or another). When a GS1-128 label is scanned, the app takes the GTIN, expiration date, lot and serial number when the label carries them and, if a field the product requires is missing, asks for it. Label templates are designed by type (product, location, pallet), with a barcode or QR code and variables such as item code, lot or expiration date, with a preview, and they print from the web or the handheld on Zebra printers. The app reads with the scanner on Zebra and Honeywell handhelds or with a phone camera.
Frequently asked questions
What is the difference between UPC or EAN-13 and GS1-128?
UPC-A and EAN-13 identify the product with its GTIN at the point of sale. GS1-128 can carry several fields at once, such as GTIN, lot, expiration date or SSCC, and is used on cases and pallets in the supply chain.
Can Code 128 be used for products?
For internal use, yes. To sell through retail chains or marketplaces, the product needs a GS1 GTIN encoded as UPC-A or EAN-13.
Are 2D scanners necessary?
If you receive, or will receive, products with GS1 DataMatrix or QR codes, yes. Imaging scanners also read linear codes, so they cover both needs.
Share this article: LinkedIn