GS1 Fundamentals

GS1 Overview

GS1 is a not-for-profit whose origins go back to the first retail applications of barcodes.  Since then they've evolved into a neutral standards-body that works globally to help businesses agree on standards for the purposes of improving supply chains - primarily in the areas of identifying things/places, capturing data with technology such as barcodes, and sharing data between organizations.  More can be found on their about page.

GS1 uses the viewpoint of standards being utilized by many partners within the context of the supply chain.  This viewpoint is reflected in who is intended to own an identity and how data is intended to be shared.  The Global Trade Item Number (GTIN) standard forms the basis of many of these standards and the viewpoint is expressed in that those who own a product's brand or produced the product are the ones that own its identity and are responsible for defining the attributes to be used globally.  This viewpoint is expressed in how many of the standards in GS1 are constructed and intended to be used, and it's important to note as there are many different standards associated with various products or processes that may be useful to various stakeholders and not all of them take this producer/owner viewpoint.  e.g. standards aimed at regulating a market might take the viewpoint that items are identified according to a central authority rather than those who created it.

GS1 Terms

Company Prefix

The company prefix is a number assigned to an organization by GS1 that’s globally unique.   It prefixes all GS1 identifiers assigned by an organization.  The length of the company prefix is variable and influences the number of available identifiers an organization may assign in a standard.  An organization licenses one or more company prefixes from GS1 on a yearly basis – initial charges range from a couple hundred dollars to over ten thousand.  Renewal rates every year thereafter are significantly reduced.  Without a valid and current company prefix, an organization can not participate in creating any GS1 identifiers.

Data Carriers and Data Structures

GS1 draws a distinction between those identifiers or string of identifiers which uniquely identify an item (data structure) and those devices such as bar/optical codes, and EPC/RFID tags which encode and carry those ids (data carriers).  For the purposes of this document and OpenLMIS, less emphasis is given to the consideration is given to data carriers in favor of the data structures as their are many bar and QR code readers on the market that read these carriers and which would then present the data structure / ID to OpenLMIS.


  • Data Structures: GTIN, SSIC, GLN, ASN, etc
  • Data Carriers:  UPC-A, ITF-14, Data Bar, GL128, RFID, EPC, etc

Global Trade Item Number (GTIN)

A global trade item number (GTIN) is the basis of much of the GS1 system of standards.  GTIN’s are used to uniquely identify a brand owner's / manufacturer's product.  Items identified could be physical items like t-shirts or services such as surgical procedures. 

It’s important to note that the organization that assigns or creates a GTIN is the one that owns the brand, holds the IP, or produced the item.  The company prefix of that organization is in the start of every GTIN.  Items should have only this one GTIN associated with it - if another organization tried to also identify the same item, not only would we have multiple identifiers for the same global item, likely the attributes defined by the second organization wouldn't be as accurate as the brand/manufacturer owner.  If an item is packaged or used in the production of a new item, the item would retain its own GTIN and the new item would have a new GTIN assigned by its producer that represents the newly built product.  E.g. a car part with a GTIN would be used in the assembly of a car, where the car itself would also have a GTIN. The most obvious application in the OpenLMIS space is the creation of kits as a kit is constructed of many heterogeneous products and it would be ordered and invoiced uniquely and regularly.  i.e. a kit is ordered and invoiced, it's not simply a shipment.

It’s also important to note that a GTIN is composed of only 3 numbers, the first the company prefix, second is the item number which is the identifier the organization assigned to the item, and last is a single checksum digit which can be used to verify the GTIN was read correctly (e.g. from a barcode).  What’s not encoded here is anything about the item – no name, manufacturer, description, measurements, production date, etc.  GS1 strongly discourages organizations from assigning any logic to the assignment of identifiers as it typically leads to wasted space in the organization’s licensed allocation.  The take-away here is that without cross-referencing this item with another system, such as GDSN, one can’t know anything about the item from the GTIN alone, aside from uniqueness and identifier validity.  Even parsing and validating the company prefix is discouraged.

The number of items that an organization can identify with GTIN’s is limited to the length of the company prefix licensed to them and the type of GTIN being used. 

Common GTIN types:

  • GTIN-8:  These have been exhausted (TODO: check)
  • GTIN-12:  These can be used with UPC-A and are popular in US applications
  • GTIN-13:  These can be used with EAC and are popular in EU applications
  • GTIN-14:  These require newer data-carriers such as ITF-14 or GS128 to encode but can identify more items, in general

Selection of which GTIN type to use often is influenced by the data carrier that will be used on the packaging and its associated limitations, some of which is seen above.  These limitations are most often related to physical size of the carrier on the packaging, material it can be printed on, cost of the carrier, availability and use of capable readers, etc.

While GTIN’s could be used in a variety of different ways, the guidance on when to create a new GTIN is simple, the brand owner creates a new GTIN when they and their trading partners need to uniquely identify an item.  So for example while you could use one GTIN for a t-shirt being made, it’s probably best to assign a different GTIN to medium blue shirts than those that are small yellow shirts to help in invoicing and traceability.


Global Data Synchronization Network (GDSN)

The Global Data Synchronization Network (GDSN) is an internet-based network of providers that help share master product data between producers and consumers.  Their are currently 16 GDSN providers that all offer the core set of attributes associated with GS1 identifiers.  These providers distinguish themselves with services on top of those core attributes, such as providing pricing information.  GDSN providers are subscription based services and are instrumental in understanding what a GTIN represents. 

Application Identifiers (AI)

Application Identifiers (AI) are used to concatenate GS1 identifiers as well as provide additional information, such as lot number or expiration date, in a data structure.  Most likely AIs only need to be understood at the capture step of GS1, however OpenLMIS may need to understand the 100+ AIs in use if generating identifiers/barcodes.

Global Location Number (GLN)

A Global Location Number (GLN) is used to identify locations / legal entities.  The simplest application of these is to identify physical facilities, plants, stores, etc.  A GLN could also be used to identify dock doors, shelves, rooms, etc. depending on the need.  The guidance is that these numbers should be used to identify physical locations – not things that move such as pallets or trucks or pieces within the supply chain that carry out a function, such as a department (shipping, receiving).

Serial Shipping Container Code (SSCC)

A Serial Shipping Container Code is an identifier that can be used to identify physical shipping components such as a pallet, a truck, etc.  The things that an SSCC would be used to identify are termed a logistical unit in GS1.  We identify these logistical units so that we know that when a pallet is delivered to our warehouse, or our truck arrives, that we can cross reference that logistical unit's identifier with the specific products that are being carried.  SSCC's therefore identify things that are used for transport, not the higher level concept of a shipment (see GSIN) or items (see GTIN).  SSCC's are most often used when ASN's are used.

Global Shipment Identification Number (GSIN)

A Global Shipment Identification Number (GSIN) is an identifier used to a identify the shipment process.  i.e. not as an identifier for transport (such as a truck, or pallet) or for items, but rather in that a shipment has been created and it's in process of getting to where it's going.

Global Service Relation Number (GSRN)

A Global Service Relation Number (GSRN) identifies function's within a supply chain.  A function within a supply chain is typically something that a person within the supply chain does to enable the process, however people aren't identified in GS1 and so we instead identify the function that that person typically enables.  e.g. a receiving department, a doctor that needs supplies, etc

Advanced Ship Notice (ASN)

An Advanced Shipment Notice is intended to notify a receiver about the details of a shipment well in advance of actual arrival.  This is more typically seen at distribution centers and particularly seems useful when third-party logistics (3PL) companies are involved.  ASN is not a GS1 standard.  ASN is complex and won't be discussed here much at this time.  It's a typical component of EDI transactions and is relatively new compared to Bill of Ladings.

Electronic Data Interchange (EDI)

Electronic Data Interchange (EDI) is not one single standard.  EDI has been around for more than 30 years and represents the idea of exchanging data between computers without people involved.  GS1 EDI is a set of GS1 specifications that help enable order-to-cash process.  GS1 EDI standards enable human-less interactions between customer and supplier such as to optimize for communicating proper ordering and invoicing.


GS1 EPCIS is used to capture event data about the movement of products. (See  This might include the physical event of scanning a product into a shipment for packing or scanning it out of a shipment for receiving.  EPCIS is instrumental in GS1 for supply chain visibility and traceability.  One way the difference between EDI and EPCIS was conveyed was to say that whereas EDI might lay-out the ideal order to cash process, EPCIS captures the actual events that occurred.  Or put another way, EDI can help ensure that what's ordered is what's fulfilled is what's invoiced.  EPCIS can capture the actual events as products make their way through the supply chain fully capturing each step, and any transformations, along the way.

A contrived example of how this might work:

Flour and Yeast are products that have made their way from their producer's to Bob's bake shop.  As those products have made their way to Bob's shelves EPCIS events have been created right up until Bob has flour and yeast.  The Bob takes that flour and yeast and makes some bread to offer for sale in his bake shop.  This process emits EPCIS events showing how these products (by lot ideally) are used/transformed as ingredients in Bob's bread for sale to customers.  As customers buy this bread, further EPCIS events are issued showing the sale, and if these customers were retail locations that used this bread in a sale or recipe for sandwiches we'd have further EPCIS events that when put together across all the various actors will allow us to trace exactly where/when/who produced the bread, where it went in between and even who ended up with it or a product made from it in the end.

GS1 in OpenLMIS

Scope of Impact

GS1 requires producers of goods and consumers of that information to pay for licensing and/or subscription services.  Who pays those costs and when is largely outside the scope of OpenLMIS.  The first take-away for OpenLMIS from this is that the OpenLMIS community can't expect all implementors to be paying for GS1 support, and therefore turning on GS1 in OpenLMIS needs to be a feature that can be utilized as-needed.

If GS1 is being used, OpenLMIS support should focus on 2 out of the 3 GS1 focus areas:  identify and shareCapture refers to devices that are built to read bar/qr codes, RFID tags, etc.  The first focus area for OpenLMIS should be in supporting the identification of trade items.  This would be to specifically call out that trade items can be ordered, invoiced, fulfilled, shipped, inventoried, etc using GTINs.  To fully utilize the benefits of GTIN's, support for finding product master data in a subscribed to GDSN would be next on the list.  In addition to identifiers supplied through a capture device, certain reader's and carriers support application identifiers that can give a few very applicable pieces of data such as lot number, expiration date, and serial code.

More advanced GS1 support is OpenLMIS would be generating GS1 identifiers.  To generate a GS1 identifier, OpenLMIS would need to be given a valid company prefix licensed to the implementer.  By creating an identifier OpenLMIS could generate new id's for shipments, EPCIS events, products (such as creating Kits), etc.  Generating GS1 identifiers in OpenLMIS would most likely not have a high-enough ROI unless OpenLMIS was sharing those identifiers in GDSN to other third-parties in a countries supply chain.  The most likely candidate would be a private 3PL supply-chain company responsible for moving stock within a country.

GS1 Support in OpenLMIS 3.0

OpenLMIS 3.0 introduces a new data model for Medical Commodities to align with GS1. See Medical Commodities: OpenLMIS Model for GS1 for details.