Inventory & traceability · The complete guide

GS1-128

TL;DR

GS1-128 is the linear barcode standard that encodes multiple Application Identifiers (GTIN, batch/lot, expiry, serial, quantity, SSCC, country of origin, customer PO) in a single symbol, using Code 128 as the underlying symbology plus the GS1 AI structure and the FNC1 function character that tells a scanner 'this is GS1-encoded.' One scan returns a structured object — which product, which lot, when it expires, how many — instead of an opaque string the receiving system has to parse with bespoke logic. This is the workhorse of regulated inventory across pharma, food, supplements, cosmetics and medical device because it is universally readable, self-describing, carries enough fields per scan to drive goods-in / putaway / dispense / pack / ship without re-keying, and aligns with every major traceability regime (FSMA 204 in food, DSCSA in US pharma, EU FMD 2011/62/EU in EU pharma, UDI in medical device). This page covers what GS1-128 actually is, the FNC1 mechanic that separates GS1-128 from plain Code 128, the AIs you actually use in regulated operations, how license-plate inventory works on top of GS1-128, the GS1-128 vs GS1 DataMatrix decision, the ISO/IEC 15416 print-quality grading regulators and retailers check, the 6-clause regulated overlay, the KPI suite for a healthy GS1-128 programme, the 8-step V5 Ultimate implementation from label-print to consume, and the eight quiet failures that turn a 'GS1-128' programme into a Code-128 programme nobody downstream can use.

Reviewed · By V5 Ultimate compliance team· 3,700 words · ~17 min read

01What GS1-128 actually is

GS1-128 is a barcode standard, not a barcode symbology. It uses Code 128 as the underlying symbology (the way bars and spaces encode characters) and adds two things: the GS1 Application Identifier (AI) structure that gives meaning to each field, and a special FNC1 function character placed immediately after the start character to mark the symbol as GS1-encoded.

Each AI is a 2-, 3- or 4-digit prefix that tells the scanner what the next field means: AI 01 is GTIN (product), AI 10 is batch/lot, AI 17 is expiry, AI 21 is serial, AI 37 is unit count, AI 00 is the SSCC pallet ID, AI 422 is country of origin, AI 400 is customer PO. A single GS1-128 symbol can concatenate multiple AIs, with FNC1 used as the field separator after any variable-length AI.

The result is a self-describing label: a single scan returns a structured object {gtin, lot, expiryDate, quantity, sscc, ...} that downstream systems can consume without bespoke parsing. Compare that to plain Code 128, which is just a string the receiving system has to parse with custom logic and which breaks every time a supplier changes their label format.

02GS1-128 vs Code 128 — the FNC1 mechanic

Every GS1-128 barcode is a Code 128 barcode — but the reverse is not true. The distinction matters because mis-printed 'GS1-128' barcodes that are actually plain Code 128 are one of the most common reasons receiving systems reject pallets.

  • Code 128 is the underlying symbology (ISO/IEC 15417) — bars and spaces that encode characters.
  • GS1-128 adds the AI structure plus FNC1 in the first position after the start character, telling the scanner 'this is GS1-encoded.'
  • FNC1 is also used as the field separator after a variable-length AI (e.g. AI 10 lot must be terminated by FNC1 if any other AI follows in the same symbol).
  • A GS1-128-aware scanner transmits the AIM identifier ]C1 in front of the data so your software can detect GS1 encoding and split into fields automatically.
  • A scanner reading a Code 128 that lacks FNC1 transmits ]C0 — your software then has no structural way to know which characters mean what.

03The AIs you actually use in regulated operations

The GS1 AI directory has hundreds of entries. The operating subset for regulated inventory is small — the table below covers ~95% of real-world GS1-128 labels.

AIMeaningFormatNotes
00SSCC — Serial Shipping Container Code18 numeric (fixed)Pallet/case unique identifier. Usually printed on its own line on the logistic label.
01GTIN — product identifier14 numeric (fixed)Allocated from your GS1 company prefix. Same GTIN on every unit of the SKU.
10Batch / lot numberVariable up to 20 alphanumericTerminated by FNC1 if any AI follows.
11Production dateYYMMDD (fixed)Day of physical production.
13Packaging dateYYMMDD (fixed)When packing happened — often different from production.
15Best before dateYYMMDD (fixed)Food/non-pharma quality date.
17Expiration dateYYMMDD (fixed)Regulatory expiry — used by FEFO logic downstream.
21Serial numberVariable up to 20 alphanumericUnit-level — DSCSA / FMD serialisation.
240Additional product identificationVariable up to 30 alphanumericManufacturer's internal part number when GTIN alone is not enough.
310nNet weight (kg)6 numeric + decimal indicatorn = decimal place position (0–6).
37Count of items in a logistic unitVariable up to 8 numericEaches per case/pallet.
400Customer purchase order numberVariable up to 30 alphanumericPairs the shipment to the customer's PO without re-keying.
422Country of origin3 numeric (ISO 3166-1)Used for FSMA 204 + customs.
7003Expiration date and timeYYMMDDHHMMPharma cold-chain when the hour matters.

04License-plate inventory on top of GS1-128

A license plate is a single inventory identifier — usually a pallet or a tote — that carries every fact downstream systems need. Without license plates, every move requires re-entry of lot/expiry/quantity. With them, one scan tells the WMS exactly what is on the pallet and where it should go.

GS1-128 is the format because it is universally readable, self-describing, and the SSCC (AI 00) makes the license plate globally unique across firms (so the receiver's WMS recognises the same pallet your shipper created). The typical logistic label carries:

  • SSCC on its own (AI 00) — large, top of the label, the dominant scan target.
  • Content GS1-128 underneath (AI 01 GTIN + AI 10 batch + AI 17 expiry + AI 37 count) — one scan returns the structured content of the pallet.
  • Human-readable text alongside every barcode so the operator can verify without a scanner.
  • Optional GS1 DataMatrix as a 2D backup when the label has space constraints or when receivers prefer 2D imaging.

05GS1-128 vs GS1 DataMatrix — which to use when

DimensionGS1-128GS1 DataMatrix
Symbology typeLinear (1D) — bars and spacesMatrix (2D) — square pattern of dark/light modules
Reading deviceLaser or imagingImaging only (camera-based)
Data capacity (typical)Up to ~48 characters comfortably; 80 maxUp to 2,335 characters
Footprint at the same dataWide (linear length grows linearly)Compact (~⅓ the area of GS1-128 at typical pharma payload)
Best forLogistic labels (pallet, case), retail outer packaging, receiving labels at the dockSmall unit packs (pharma carton, medical-device label, surgical-instrument direct-part-marking)
Regulatory fitDSCSA case-level, FSMA 204 logistic labels, retail SSCC pallets, EU FMD case-levelDSCSA unit-level, EU FMD unit-level (2011/62/EU + 2016/161), UDI unit-level, surgical-instrument DPM
Print-quality grade scaleISO/IEC 15416 (A–F)ISO/IEC 15415 (A–F)

The decision rule we use: linear GS1-128 for case + pallet (logistic units) because the laser scanners at most receiving docks read it fastest and the label has room. GS1 DataMatrix at unit level (carton, vial, device) because the payload is larger (serial + lot + GTIN + expiry in DSCSA / FMD) and the unit is too small for a linear barcode. The two coexist on the same regulated product.

07The regulated overlay — where GS1-128 is operationally required

RegimeClauseGS1-128 role
FDA — DSCSATitle II of Drug Quality and Security Act + 21 USC 360eeeCase-level GS1-128 with GTIN + lot + expiry + serial (unit-level on GS1 DataMatrix). Stable since November 2023; full interoperable EPCIS exchange phase ongoing.
EU — Falsified Medicines Directive2011/62/EU + Delegated Regulation 2016/161GS1 DataMatrix at unit + GS1-128 at homogeneous shipper/case. National repository upload required.
FDA — UDI21 CFR Part 801 Subpart B + ISO/IEC 15459-2Issuing agencies are GS1, HIBCC, ICCBBA. GS1 path uses GTIN (AI 01) + lot (AI 10) + expiry (AI 17) + serial (AI 21) where applicable.
FDA — FSMA 20421 CFR Part 1 Subpart SGS1-128 is not mandated by name, but the Traceability Lot Code (TLC) + lot + quantity + production date are practically captured on GS1-128 logistic labels across the food supply chain.
EU GMP — Annex 16QP releaseGS1-128 case labels support batch traceability across the supply chain that the QP must certify.
ISO 22005 — Traceability in the feed and food chain§5 (identification + lot)GS1-128 with AI 01 + AI 10 + AI 17 is the de facto compliant identification format.

08GS1-128 programme KPIs

KPITargetWhy it matters
First-scan success rate at receiving≥ 99.5%Below this, supplier labels are forcing re-key — defeats the point of GS1-128.
Print-quality grade trend (ISO 15416)Median ≥ C, no grade D/FLeading indicator of print-head failure and customer rejection.
AI completeness per outbound label100% of required AIs presentRequired AIs per customer programme (e.g. retail SSCC + GTIN + lot + count).
FNC1 correctness on outbound100%FNC1 mis-placement is the silent failure that breaks downstream parsers.
SSCC uniqueness over rolling 10 years100%SSCC must not be reused within at least 10 years per GS1 General Specifications.
EDI 856 ASN match rate≥ 99.5% of outbound SSCCs reconcile against the ASNCustomer chargebacks for ASN mismatch are the typical cost driver.
GS1 company-prefix scope coverage100% of issued GTINs and SSCCs within allocated prefixIssuing GTINs/SSCCs outside your allocated prefix invalidates the label.

09How V5 Ultimate ships GS1-128

  1. GS1 company prefix configured at tenant level — V5 refuses to print a GTIN or SSCC outside the allocated prefix.
  2. Per-label template configured per use case (receiving license plate / pallet logistic label / case label / unit label) with the AIs needed for that label, FNC1 placement validated at template-save time.
  3. Print agent (tools/print-agent) writes ZPL to ZPL-II / Zebra / Datamax printers with FNC1 emitted correctly; preview rendered in-browser so the operator can verify before print.
  4. Scan-side parser ingests both ]C1 (GS1-encoded) and ]C0 (plain Code 128) — for ]C0 incoming we attempt a best-effort parse and log a supplier-label-quality finding so we can chase the supplier; for ]C1 we get the structured object directly.
  5. License-plate inventory uses SSCC (AI 00) as the primary identifier through goods-in → putaway → dispense → pack → ship; one scan at each step returns GTIN + lot + expiry + count.
  6. Outbound EDI 856 ASN auto-generated with SSCC references that match the printed logistic labels — receiver reconciles the pallet in one scan at their dock.
  7. Print-quality verifier integration (optional Honeywell / Cognex / Microscan / Axicon verifier) — grade trended per print head per shift, declining grade auto-opens a maintenance task.
  8. Mobile-safe label preview at ≤390px CSS width — the operator on iPhone sees the same label preview as on a 24-inch screen, no horizontal scroll.

10Eight quiet GS1-128 failures

  1. FNC1 missing in the first position — barcode scans as plain Code 128 (]C0); downstream parsers reject or mis-parse.
  2. Variable-length AI not terminated by FNC1 — AI 10 lot followed by AI 17 expiry without separator; AI 10 absorbs the next field's digits and you get garbage.
  3. Date AI in wrong format — YYYY-MM-DD or MM/DD/YY instead of YYMMDD; symbol structurally invalid.
  4. Print quality below grade C — scans on the verifier in QA but fails at the retailer's dock; chargeback.
  5. Custom in-house AI ranges — non-standard AIs break interoperability with every external partner.
  6. Issuing a GTIN you don't own — the GTIN must be allocated from your GS1 company prefix; using a number outside your prefix invalidates the label and is in some jurisdictions actionable.
  7. Re-using an SSCC within 10 years — violates GS1 General Specifications; receiver's WMS treats your pallet as a duplicate of a historical pallet.
  8. Missing or violated quiet zone — label designed too tight; symbol decodes inconsistently across reading angles.

11Where GS1-128 shows up in regulated operations

  • Inbound from any major food, pharma or supplement supplier — receiving scans the GS1-128 on the pallet; SSCC reconciles to the EDI 856 ASN.
  • WMS license plates — one barcode per pallet through the entire warehouse lifecycle from goods-in to ship.
  • Pharma case-level — DSCSA in US, FMD in EU. Unit-level rides on GS1 DataMatrix; case-level on GS1-128.
  • Retail and grocery outbound — SSCC on every pallet, matched to EDI 856 ASN. Walmart / Tesco / Carrefour / Ahold-Delhaize compliance programmes are GS1-128-based.
  • FSMA 204 traceability — Traceability Lot Code, lot, quantity, production date carried on the GS1-128 logistic label.
  • ISO 22005 food traceability and BRCGS Issue 9 — GS1-128 is the practical implementation of the identification + lot capture clauses.

Frequently asked questions

Q.Do I need a GS1 company prefix?+

Yes — to issue GTINs and SSCCs that are valid across the supply chain you need a registered GS1 company prefix. In-house numbering only works inside your own four walls and fails the moment a customer or regulator scans your label.

Q.Can a single GS1-128 barcode hold all my AIs?+

Yes within length limits — Code 128 supports up to about 48 characters comfortably and 80 maximum. Typical content labels carry GTIN + batch + expiry + quantity in one symbol. SSCC usually goes on its own to maximise readability at the dock; for very wide payloads (DSCSA case label with multiple serials) consider GS1 DataMatrix instead.

Q.Is GS1-128 the same as GS1 DataMatrix?+

No. GS1-128 is a linear (1D) barcode. GS1 DataMatrix is a 2D matrix code using the same AI structure. DSCSA and EU FMD at unit level, and most UDI unit-level applications, use DataMatrix because of size constraints. The two use the same AI directory, which is what makes them complementary — your kiosk and WMS treat them as the same data model, just decoded from different symbologies.

Q.How do I tell if a printed barcode is GS1-128 or just Code 128?+

Scan with a GS1-aware scanner: GS1-128 transmits with the AIM identifier ]C1 prefix; plain Code 128 transmits with ]C0. If you see ]C0 the FNC1 is missing or mis-placed and downstream parsing will fail.

Q.How often should we verify print quality?+

At minimum per shift per print head with an ISO/IEC 15426-compliant verifier; trend the grade. Declining grade is the leading indicator of print-head failure and customer chargeback. V5 trends grade and opens a maintenance task when median grade falls below C.

Q.Can I re-use an SSCC?+

GS1 General Specifications require an SSCC not be reused within at least 10 years (some sectors longer). Re-use breaks receiver-side WMS reconciliation because the same SSCC may still be in their historical pallet tables.

Q.Does V5 Ultimate replace our label-design software?+

Not for catalogue / consumer-facing label artwork — that lives in your design tool (Illustrator / NiceLabel / BarTender). For operational GS1-128 production (license plates, pallet logistic labels, case labels, kiosk receipt labels) V5 owns the template, the AI completeness validation, the print agent and the print-quality trending. The two coexist on the same product.

Primary sources

Further reading

Explore this topic

GS1-128 sits inside this topic cluster in our glossary. Every neighbour is one click away.

Identification, traceability & EDI
13 related entries

GS1 identifiers, barcodes, ASNs and the rules that require lot-level traceability.

See GS1-128 working on a real shop floor

V5 Ultimate ships with the GS1-128 controls already wired in — audit trail, e-signatures, validation evidence. Free trial, no credit card, onboard in days, not months.

Language