The first time most people meet a GS1 label is when they sign a contract with Lidl, Tesco or Kaufland - and only then they read in the contract that without proper logistic labels the pallets will be turned back at the gate. The deal is signed, the goods are ready, the truck booked, and in the last week before delivery it turns out you need a thermal transfer printer, a GS1 prefix and someone who knows what SSCC means. This isn't a fictional scenario - we've been through it with dozens of customers. The text below collects the things we usually have to explain in the first days of such a project.
What GS1 is and why it exists
GS1 (formerly EAN/UCC) is a global non-profit that since the late 1970s has maintained product and logistic-unit identification standards. The country prefix 590 indicates Poland, 400-440 Germany, 0-1 the United States and Canada. But the country prefix doesn't mean the product was made in that country - it means the company that registered the GTIN has its registered office there.
GS1 manages three main number types: GTIN (identifies a product), GLN (identifies a location - warehouse, store, office) and SSCC (identifies a logistic unit - pallet, container, master pack). All three are necessary for legal labelling in B2B trade with large retailers.
Retailers demand GS1 because the standard lets them scan and automatically post receipts without manual counting. They scan the pallet, their system reads the SSCC, finds the supplier's ASN in the database and matches them. Mismatch = rejection. That's the real reason their procedures are this rigid.
SSCC - 18 digits identifying a pallet
SSCC (Serial Shipping Container Code) is an 18-digit unique number for a logistic unit. Structure:
- 1 digit - extension digit (usually 3, sometimes 4 for outer packaging)
- 7-9 digits - GS1 company prefix (length depends on the GS1 contract)
- 9-7 digits - sequential serial number assigned by the producer
- 1 digit - check digit (modulo 10)
Always 18 digits in total. Example: (00)590123456712345670. Important - SSCC must be unique for at least 12 months. After that you can theoretically reuse it, but in practice we keep SSCC history for 24-36 months because of returns and recalls.
GS1-128 and Application Identifiers
GS1-128 is the name of the 1D barcode used on logistic labels. Underneath it's a regular Code-128, but with an agreed data structure. Each fragment is preceded by an AI - Application Identifier - telling what comes next. The most important AIs:
- (00) - SSCC, 18 digits
- (01) - GTIN, 14 digits (extended prefix for master packs)
- (10) - batch number, up to 20 alphanumeric characters
- (11) - production date, YYMMDD
- (13) - packaging date, YYMMDD
- (15) - best-before date, YYMMDD
- (17) - expiry date, YYMMDD
- (21) - serial number, up to 20 characters
- (30) - variable count, up to 8 digits
- (310n) - net weight in kg with n decimal places
- (37) - count of items inside a master pack
An example string (00)590123456712345670(01)05901234123457(10)A5478X(17)260930(37)24 means: a pallet with SSCC 590...670, containing a product with GTIN 05901234123457, batch A5478X, valid until 30 September 2026, in a 24-piece master pack. The scanner reads it in one shot.
GS1 logistic label - layout
A standard GS1 logistic label is A5 or A6 and is split into three blocks read top to bottom:
- Top block - free-form data: sender and receiver name, address, commercial data, goods description. Read by humans, not the scanner.
- Middle block - structured human-readable data: GTIN, quantity, batch, expiry date, SSCC. Printed in legible font in a described format (e.g. "GTIN: 05901234123457").
- Bottom block - GS1-128 barcodes: one or several barcodes with the relevant AIs. SSCC always alone at the very bottom, as the largest barcode, readable from a distance.
The SSCC at the bottom must be at least 50 mm tall and should sit on an undamaged part of the pallet. From our experience - we always print two labels and stick them to both short sides of the pallet at 90-110 cm height. That way the forklift driver sees the label from any direction.
Print format - what works and what doesn't
Standard logistic label sizes:
- A6 (105x148 mm) - minimum, used for smaller pallets and master packs
- A5 (148x210 mm) - the standard for a full-size EUR pallet
- 4x6 inch (102x152 mm) - the Anglo-Saxon format, found in exports
Direct thermal vs thermal transfer:
- Direct thermal - no ribbon, the paper reacts to heat. Cheaper, but the label fades under UV in a few weeks and rubs off on contact. Only fit for the internal warehouse, on short journeys.
- Thermal transfer - wax, wax-resin or pure resin ribbon. The label is UV, dust and abrasion resistant, sometimes solvent resistant too. The standard for shipping logistic labels. For GS1 labels going to retailers, always thermal transfer, preferably resin ribbon.
Printer resolution: 203 dpi minimum for SSCC (0.5 mm bars, readable at 2-3 m), 300 dpi for a full label with longer GS1-128 strings. 600 dpi is overkill and slows printing too.
Retailer requirements - what they actually want
Despite the common GS1 standard, every retailer has its own guidebook with small modifications. What we usually meet:
- Lidl - very formal requirements. The label has to follow their exact layout (they publish a template), SSCC in their country prefix. Mismatch in the check digit = rejection. Their auditors can return a pallet just for poor print quality.
- Tesco - more flexible, accepts a standard GS1 label. ASN required for most product groups. Penalties for bad labels are charged on a statistical basis, not per single pallet.
- Carrefour - similar to Tesco. Standard GS1, ASN required, penalties calculated per period.
- Kaufland - heavily focused on ASN and time slots. The GS1 label is only a part - the full requirement is ASN + GS1 + EPAL pallet matching the document.
Before the first delivery each retailer requires sample labels for approval. The process takes one or two weeks, sometimes a month. Without approval there's no point shipping - the goods usually come back.
What happens when the label is wrong
Consequences are very tangible:
- Pallet returned - the goods come back to the supplier at supplier's cost. Plus storage cost in the retailer's warehouse for the days it was "stuck at the gate".
- Contractual penalty - typically EUR 15-100 per pallet, sometimes a percentage of value. The contract usually says "for each violation of logistic standards".
- Supplier blacklist - after several incidents the buyer drops the supplier. For a small company this often ends the trading relationship.
- Lateness penalties - if the pallet bounces back, the goods arrive late, the retailer has empty shelves, the buyer gets penalised by HQ. All of that flows back to the supplier.
That's why the first delivery to a new retailer is always stressful. As a standard we run a "dry test" with the customer - we print labels, verify with a scanner, sometimes ask the local GS1 organisation for formal verification.
Validation before shipping
Every label is worth checking before it lands on a pallet. Three validation levels:
- Working scanner - the warehouse terminal tries to read it. Minimum test, only says "the code reads", says nothing about quality.
- Code verifier (e.g. REA Verifier, Axicon) - dedicated device that grades the code per ISO 15416. A-F grade, A is best. Retailers require minimum C, some B. Verifier price: EUR 1500-3500, but one is enough per company.
- Validation in the WMS - a properly configured WMS checks SSCC check digit, AI format, field length on its own. In Weaver WMS we do this before sending the label to the printer - if anything is off, the label doesn't go out.
The first batch of any new label (e.g. after a layout change, after retooling the printer) should always go through a verifier. Without that the risk of all 500 printed labels being broken is very real.
SSCC generation - who is the source of truth
SSCC is generated by the supplier's internal system. The sequence is:
- The company registers with GS1, gets a prefix (e.g. 5901234)
- Supplier's system has a counter of consecutive SSCCs (e.g. 0000001, 0000002...)
- When closing a pallet, the system takes prefix + next number + extension digit + check digit
- Generates the SSCC, prints the label, stores the link between SSCC and pallet content
Important - the counter must not repeat for at least 12 months, better 24. In Weaver WMS the SSCC counter is centralised per customer and never assigns the same number twice. Once a number is generated it goes to a log even if the pallet was deleted or the label reprinted - for a new label we take a new SSCC, the old one never comes back.
Hardware and software - approximate prices
What you actually need to start:
- Thermal transfer printer Zebra ZT231 / Honeywell PD45 / TSC TTP-345 - EUR 1000-1700. Standard desktop printer, 203 or 300 dpi, 6-8 inch/s speed. For A5 that's 4-6 labels/min, enough for 150-200 pallets a day.
- Industrial printer Zebra ZT411 / Honeywell PX940 - EUR 2700-5000. More robust, up to 300+ pallets a day, integrated verifier (PX940). Worth it for a warehouse with 500+ peak pallets.
- Resin ribbon and labels - around EUR 0.03-0.06 per A5 label including ribbon. At 200 pallets/day that's EUR 12-25 daily.
- BarTender / NiceLabel - EUR 350-1000 per company licence (depending on edition). Provides label editor, database integration, printing from any source.
- Verification scanner - if you don't want an ISO verifier, a good 2D imager (Honeywell Granit, Zebra DS3678) is enough at EUR 350-700. Reads everything you print, fits everyday tests.
- Mobile terminal application - a WMS that understands GS1-128 and SSCC. Without it the operators will type pallet IDs by hand, which kills half the benefit of the labels.
Total starting budget: EUR 1800-3500 for a small company with one printer. Plus the GS1 fee, plus WMS configuration - in our experience the whole one-time investment fits into EUR 5500-9000.
Common mistakes
- Wrong check digit in SSCC - typically a bug in the generating script. Retailers catch it instantly, the pallet bounces.
- Date format other than YYMMDD - e.g. 30.09.2026 instead of 260930. AI (17) requires a strict format, even one dash breaks the read.
- Printing the label on stretched film - the code "stretches" and the modules don't match. Label goes on the pallet before wrapping, never after.
- Quiet zone too small - the margin around the code. For GS1-128, minimum 10 times the narrowest bar width (around 5 mm). Without it the scanner can't catch the start/stop.
- Label on a hidden side of the pallet - the forklift driver has to see the label. If it's at the very bottom or on a narrow side hidden from the aisle, it might as well not exist.
How Weaver WMS automates GS1
The whole process we described, in Weaver WMS goes like this:
- Operator closes picking - clicks "close pallet"
- System grabs the next number from the SSCC counter, computes the check digit
- Builds the GS1-128 string with SSCC, content GTIN, batch, expiry date, quantity
- Sends it to the thermal transfer printer in ZPL/EPL (Zebra) or Fingerprint (Honeywell) format
- The printer ejects the label, the operator sticks it on the pallet
- The system stores the SSCC-to-content link and sends an ASN to the retailer (if required)
The operator doesn't know and doesn't have to know GS1-128 or Application Identifiers. They click one button, they get a finished label. But on the WMS side everything is checked - format, length, check digit, SSCC uniqueness. If you swap one retailer for another with a different label layout, the template changes and the data logic stays.
GS1 isn't complicated if the WMS takes it on its shoulders. It only becomes complicated when someone tries to do it manually in Excel or with templates burned into the printer. Looking at 17 years on the market, the most common opening to a Weaver implementation conversation is: "we just landed a new retailer and we don't know how to print labels in their format". It's not a hard problem, but it does need real infrastructure - and you cannot build that infrastructure in Excel.