The mistakes that get your GS1-128 labels rejected by retailers
Why a distribution center rejects a pallet: a malformed or duplicated SSCC, wrong Application Identifiers (AI), an unreadable or badly placed label, and an ASN that doesn't match what arrived. How to check each one before the truck leaves.

The pallet arrives at the chain’s distribution center. The operator runs the scanner over the label and it doesn’t beep. He tries another angle. Nothing. He calls the supervisor, who picks the cheapest option available to him: set the pallet aside and move on to the next supplier.
From that moment on, everything that happens is your cost. The truck waits, or leaves without unloading. Someone on your team spends the morning on the phone. And if the chain applies chargebacks for non-compliance, the deduction shows up weeks later, when nobody remembers which pallet it was.
Here’s the uncomfortable part: almost no rejection happens because the goods are wrong. It happens because the label — or the message that travels with it — was wrong. And it’s always the same five mistakes.
First, what a GS1-128 label actually is
The GS1-128 logistics label goes on the pallet or carton so the receiver knows what’s inside without opening it. Its heart is the SSCC-18: a unique 18-digit serial that identifies that pallet and no other one in the world (we explain it in depth here).
Around the SSCC, the label can carry more data — batch, expiry date, GTIN of the contents, quantity — and each field travels preceded by an AI (Application Identifier): a prefix in parentheses that tells the scanner what the following digits mean. The AI (00) announces an SSCC; (10) a batch; (02) the GTIN of the contents. Without the AI, digits are just digits.
The label isn’t printed decoration: it’s a structured message another machine is going to read without asking you anything.
Mistake 1: a malformed SSCC
The SSCC has 18 digits and the last one is a check digit calculated from the other 17. It exists precisely so that a typo or a dirty read doesn’t slip through unnoticed.
Where it breaks: the check digit is miscalculated (or someone drops in any digit “because nobody checks it anyway” — the scanner does check it); a GS1 company prefix that doesn’t belong to your company is used (the prefix comes from joining GS1, and inventing one makes your pallet collide with someone else’s); or the serial is padded inconsistently and the total length doesn’t come to 18.
How to check it: scan your own labels with a reader before dispatch. If what you generated and what you read back match digit for digit, that mistake is closed.
Mistake 2: a duplicated SSCC
The quietest one and the most expensive. The SSCC is serial: every new logistics unit carries a new number that is never reused. When two pallets arrive with the same SSCC, the receiver’s system would have to decide which one is the real one — and it doesn’t decide: it rejects.
It almost always comes from the same cause: the counter doesn’t live in one single place. Someone reprints a damaged label reusing the number, two print stations each keep their own counter, or the counter reset when the system was reinstalled.
How to check it: the counter must come from one single source, and a reprint must generate a new number. If your process lets two people print at the same time from different files, you already have the problem.
Mistake 3: wrong or incomplete AIs
Here the rejection isn’t about being unreadable, it’s about being incomprehensible. Typical cases:
- Putting the data in without its AI, or with the AI of something else. A batch announced as if it were a date means nothing to the receiver.
- Wrong length. Several AIs have a fixed length; a date in a different format breaks the reading of the rest of the string.
- Omitting a field the customer requires. Every chain publishes its labeling guide with the AIs that are mandatory at its DC. If the retailer asks for batch and expiry and you print only the SSCC, the label is valid under the standard and rejectable at that customer.
How to check it: ask the customer for their labeling guide in writing and compare it line by line against a real label. Not against the template: against the one that came out of the printer.
Mistake 4: a label the scanner can’t read
The content can be perfect and it can still fail at the dock.
- Faint printing or a dirty print head. The bars thin out and contrast drops below what the reader needs.
- Invaded quiet zone. The code needs a blank margin on either side. Text, a logo or the edge of the label pushed into it makes the code unreadable.
- Label in the wrong place. GS1 defines the height and which faces of the pallet to use — normally two adjacent faces — so the forklift operator can read without getting down.
- Wrinkled stretch film over the top, a folded corner, a label across an edge. A curved code doesn’t read.
How to check it: the cheapest check in the world is a handheld reader at the outbound dock. If your own pallet won’t read in your own warehouse, it won’t read at the customer’s DC.
Mistake 5: an ASN that doesn’t match what arrived
This one isn’t a label error, but it produces the same rejection. The label and the advance ship notice (the ASN, or EDI 856) are two halves of the same statement: the ASN declares what each pallet carries; the label lets that be verified with a scan.
When they don’t match, the receiver assumes you’re the one who got it wrong: a pallet shipped that wasn’t on the ASN (or one was left behind that was); the contents changed after the notice was generated and nobody regenerated it; or the notice went out after the truck arrived, when it’s too late to help prepare receiving.
How to check it: the rule is simple — the ASN is generated from the final shipment, not from the order, and it goes out when the truck goes out. If your process allows editing the load after sending the notice, you have a discrepancy waiting to happen.
The short list, to tape up on the dock
| Check | Question | If it fails |
|---|---|---|
| Valid SSCC | 18 digits, correct check digit, your own prefix? | Rejection at scan |
| Unique SSCC | Has this number never been used, at any station? | Rejection as duplicate |
| Complete AIs | Are all the ones this customer requires present? | Rejection for missing data |
| Readability | Does it scan, on two faces, without maneuvering? | Manual count or rejection |
| Consistent ASN | Does the notice describe what actually went on the truck? | Discrepancy and chargeback |
None of the five requires new technology to check. All five require somebody to check them every single time — which is exactly what a manual process cannot sustain at scale.
When the label is generated from the real shipment data, with the SSCC serialized in one single place and the AIs each customer requires, the check stops being a ritual and becomes a consequence. That’s how we solve it in Kontext Labels; and if you’d rather first understand the full hierarchy of codes, start with the three warehouse labels. Questions about your own case? Get in touch.