| UCC/EAN-128 was developed to provide a worldwide format and standard for exchanging common data between companies. While other bar codes simply encode data with no respect for what the data represents, UCC/EAN-128 encodes data and encodes what that data represents.
For example, you could encode the weight 20.56 pounds in a Standard 2 of 5 bar code by simply encoding the digits 2056. However, an application reading the bar code would not know whether 2056 is a product code, a price, a time (2056 could be 20:56, which is 8:56PM), a lot number or, in this case, the weight in pounds. Even if it did know it was a weight, the application would not know whether the number represented 2056 pounds or 20.56 pounds--or perhaps the weight was expressed in kilograms.
Of course, a system may implement some kind of internal standard. Perhaps a prefix of "1" before the data (i.e. 12056) would mean the data that followed was a weight in pounds with the last two digits being after the decimal point. However, if this bar code was printed on the product and shipped to a customer, the customer wouldn't have any way to interpret the data unless the customer was informed about the internal standard and implemented it. This would require customizations on each customer's systems, not to mention of downstream systems (what about the customer of your customer?).
As you can see, encoding the data in a bar code is not a problem -- the problem is decoding the bar code afterward. More importantly, the problem is that anyone should be able to decode the bar code with no modifications necessary to their system.
UCC/EAN-128 solves this problem. UCC/EAN-128 has a list of "Application Identifiers" (AI). Each AI tells the system what kind of data will follow and in what format. For example, AI 320 indicates that the data that follows is a net weight in pounds. The next digit indicates the number of digits after the decimal point, followed by 6 digits which express the weight. In our example above, 20.56 pounds would be expressed as AI 3202 (the trailing 2 means there are 2 digits after the decimal point), followed by 002056 which represents the weight right-justified within a 6-digit field. Thus our above example becomes UCC/EAN-128 3202002056. This UCC/EAN-128 could be scanned and successfully interpreted by any UCC/EAN-128-compatible system without modification.
In addition to the advantage of compatibility worldwide between users of UCC/EAN-128, the format has the benefit of being able to be expanded without making existing systems obsolete. If a new Application Identifier is needed, it can simply be added to the standard. Existing applications using existing AI's will not be adversely affected. That is, the 3202 AI still will apply for a weight in pounds with two decimal points of accuracy.
UCC/EAN-128 encodes data using the Code 128 symbology. UCC/EAN-128 isn't, in and of itself, a symbology--rather it is a standard that defines the format of a Code 128 bar code. That is to say, the symbology is Code 128 but the format of the data encoded within the Code 128 bar code conforms to the UCC/EAN-128 standard.
NOTE: A UCC/EAN-128 can be read by any scanner or program capable of reading a Code 128. However, it's the responsibility of the application to recognize the scanned Code 128 bar code as one conforming to the UCC/EAN-128 standard and interpret it as such.
|STRUCTURE OF A UCC/EAN-128 SYMBOL|
As mentioned above, a UCC/EAN-128 symbol is, in fact, a Code 128 bar code. The UCC/EAN-128 symbol has the following Code 128 structure:
1. A Code-128 Start character (A, B, or C).
2. A Code-128 FNC1 character (character 102).
3. Application Identifier (from AI table corresponding to data to be encoded).
4. Data to be encoded (format depends on AI).
5. A Code-128 checksum character.
Note that, in addition, there must be leading and trailing "white space" in accordance with the Code 128 standard.
|APPLICATION IDENTIFIER REFERENCE TABLE|
The following table is a summary of valid Application Identifiers and the format of the data using that AI. Some AI's include a clickable link which you may click to obtain more detailed information about the AI and/or the format of its data.
Note that some AI numbers contain an 'x' or a 'y' following the AI in the AI column. This means that a single digit must be appended to the AI, the digit having the following meaning:
x: A single digit indicating the length of the data field y: A single digit indicating the number of decimal points in the data field
All dates are expressed in the format of YYMMDD. Any YY value in the range of 00-50 refers to the years 2000-2050 whereas YY values in the range of 51-99 refer to the years 1951-1999. It is the responsibility of the application to correctly handle the data-conversion/Y2K issue.
|SERIAL SHIPPING CONTAINER CODE/SSCC-18 (AI=00)|
|The Serial Shipping Container Code is used to identify individual shipping containers. This is used, generally, to establish a number that is unique worldwide to track a specific container.
The 18 digits of the SSCC-18 data have the following format:
1. Packaging Type (1 character). 0=Case or carton. 1=Pallet (Larger than a case). 2=Container (larger than a pallet). 3=Undefined. 4=Internal company use. 5-8=Reserved. 9=Variable container.
2. UPC/EAN Manufacturer Number (Variable length). The UPC/EAN code assigned to the manufacturer. This is the same company code used in EAN-8/EAN-13/UPC-A bar codes.
3. Serial Number (Variable Length). This is a unique serial number assigned by the manufacturer.
4. Data Check Character (1 Character). This is a check character
NOTE 1: The Manufactruer Number and Serial Number vary depending on country or numbering authority, but the total length of the two fields together is always 16 digits. Thus if the Manufacturer Number is 8 digits in length, the Serial Number will also be 8 digits in lenth. If the Manufactruer Number is 5 characters in length, the Serial Number must be 11 characters in length.
NOTE 2: Keep in mind that this is used to establish a unique product/serial number for a container, not a specific product. Generally, a container identified by an SSCC-18 code will contain multiple products. This code only uniquely identifies the container, not the products within.
Note that a packaging type of "9" refers to a "Variable Container." A variable container is one which contains a variable number of products. The actual number and type of products is specified within this record and quantity/measurement information is speicified with AI 01 in conjunction with AI's in the 30-32 range.
|SERIAL SHIPPING CONTAINER CODE/SSCC-14 (AI=01)|
|The SSCC-14 code is identical to SSCC-18 (see above) except that the total length of the data is 14 digits instead of 18. This means the total length of the Manufactruer Code and Serial Number must always be 12 rather than 16. Since the Manufacturer Code cannot be changed (since it is assigned by a numbering authority) this means that an SSCC-14 code will have a serial number 4 digits shorter in length than an SSCC-18 code.|
|BATCH OR LOT NUMBER (AI=10)|
|The data contained in an AI=10 is a batch or lot number. This can be any batch, lot, shift, or location code (or a combination thereof) used by the manufacturer to identify a batch of products.|
|PRODUCTION, PACKAGING, SELL BY, EXPIRATION DATE (AI=11, 13, 15, 17)|
|These four AI's allow the manufacturer to encode the date a product was produced and packaged and, subsequently, the recommended "Sell By" date and Expiration date. Note that the "Sell By" date refers to the date that the product should be sold by from a quality-control standpoint. The "Expiration Date" refers to the date that product should be used by from a safety standpoint. Thus the "Sell By" date for a carton of milk might be 010510 (May 10th, 2001) and the Expiration Date might be 010517 (May 17th, 2001). This means that the product should be sold by May 10th, but can be safely used by the consumer until May 17th.
NOTE 1: All dates are expressed in the format of YYMMDD. Any YY value in the range of 00-50 refers to the years 2000-2050 whereas YY values in the range of 51-99 refer to the years 1951-1999. It is the responsibility of the application to correctly handle the data-conversion/Y2K issue.
NOTE 2: If the system wants to express only year and month, the DD field should be filled with 00.
|PRODUCT VARIATION CODE (AI=20)|
The Product Variation code AI is used to differentiate a product where such differentiation is necessary, but where the differentiation does not justify an entirely new UPC/EAN number.
For example, a given product may be a basic cellular phone kit. For a brief amount of time, a promotion is instituted whereby the kit includes an additional free battery. The manufacturer wants this product to be recognized and sold by distributors as the same product as always at the same price-thus there is no reason to create a new UPC/EAN code for the product. However, it is desirable to be able to identify which "versions" of the kit include the extra free battery. This is an example of where a Product Variation AI would be used.
The actual variation code must be 2 digits in length, in the range of 00 to 99. The value assigned to the variation code is left to the manufacturer to decide-however, UCC/EAN specifications dictate that any variation code assigned and used by a manufacturer should not be reused for another product variation until at least one year has passed since the code was last used on a previous variation. This avoids the possibility of confusion of product variation codes as old inventory is shipped to distributors and sold to customers.
|SERIAL NUMBER (AI=21)|
|The Serial Number AI is used to uniquely identify a product. A serial number, combined with a UPC/EAN bar code, uniquely identifies the product for the life of the unit. The value and format of the serial number is left to the manufacturer's discretion.The Serial Number AI is used to uniquely identify a product. A serial number, combined with a UPC/EAN bar code, uniquely identifies the product for the life of the unit. The value and format of the serial number is left to the manufacturer's discretion.|
|HIBCC CODE (AI=22)|
|The Health Industry Business Communications Council (HIBCC) code is used to encode optional quantity, data, lot/batch, and serial numbers using a HIBCC-defined structure. For detailed information about the format of the structure, contact the HIBCC.|
|LOT NUMBER (AI=23x)|
This AI is scheduled to be removed from the UCC/EAN-128 standard. It is mentioned here for reference purposes in handling legacy systems. This AI serves essentially the same purpose as AI 10 (Batch/Lot Number). New systems should use AI 10 rather than this AI.
The AI is appended with an additional digit that creates an AI from 230 to 239. The value of the third character in the AI is calculated based on the following formula:
x = (Length of Lot Number - 1) / 2
The length of the lot number must always be odd. If the lot number has an even number of digits, a 0 must be added to the left-hand side of the lot number to make its length odd. The actual length of the lot number may be from 1 to 19 characters long-as long as the number of characters is odd.
Thus if the lot number were 41345, the total length of the lot number would be 5. (5-1) /2 = 2, so the AI would be 231.
NOTE: This AI is scheduled to be removed from the UCC/EAN-128 standard. It is mentioned here for reference purposes in handling legacy systems. This AI serves essentially the same purpose as AI 10 (Batch/Lot Number). New systems should use AI 10 rather than this AI.
|ADDITIONAL PRODUCT IDENTIFICATION (AI=240)|
|AI 240 may be used by the manufacturer to assign an additional identification number to the product. This identification number is not necessarily unique to the product. It may be a configuration number, catalog number, or other internal reference number.|
|SECONDARY SERIAL NUMBER (AI=250)|
|AI 250 may be used to attach a secondary serial number to a product by the manufacturer. This value may represent, for example, a serial number of the motherboard within a computer. It's an additional unique serial number associated with the product-probably related to some internal component of the product.
NOTE: It is the manufacturer's repsonsibility to link the secondary serial number to the UCC/EAN code of the product. Additionally, it is not recommended to use the secondary serial number alone in an external environment since two or more manufacturers may use the same secondary serial number. For example, Cool Computers may assign serial numbers to the motherboards within their computers starting at 1000 and counting up. Meanwhile, Nifty Microwaves may assign serial numbers to the keyboards within their microwave ovens starting at 500 and counting up. Thus, the Secondary Serial Number 1500 may refer to either one of Cool Computer's motherboards or one of Nifty Microwaves' keyboards depending on the context.
|PRODUCT WEIGHT/DIMENSION SPECIFICATIONS|
A reasonably large number of AI's are dedicated to encoding the weight and size (dimensions) of a product. These values may be expressed either in metric or U.S. measuring systems depending on the AI chosen. When using the U.S. system, you may choose to encode dimensions in a number of units (inches, feet, yards).
The Product AI's are used to encode the specifications of a single product.
|CONTAINER WEIGHT/DIMENSION SPECIFICATIONS|
Similar to the Product Weight/Dimension AI's, there are a set of Container Weight/Dimension AI's. The same U.S./Metric and unit options apply.
The Container AI's are used to encode the specifications of a container containing additional products.
|CUSTOMER PURCHASE ORDER NUMBER (AI=400)|
|The Customer Purchase Order AI is used to encode the buyer's purchase order or order number. This can be encoded and attached to a product or container by the seller as a service to the buyer so that they can quickly identify incoming product.|
|SHIP TO/DELIVER TO (AI=410)|
|The Ship To/Deliver To AI is used to encode a location code which identifies to where the product or container is to be shipped. The location code is the EAN13 Location Code and must be exactly 13 digits in length.|
|BILL TO/INVOICE (AI=411)|
|This AI encodes the location code of the location that should be billed or invoiced. The location code is the EAN13 Location Code and must be exactly 13 digits in length.|
|PURCHASE FROM (AI=412)|
|This AI encodes the location code of the party that is selling or distributing the product or container. The location code is the EAN13 Location Code and must be exactly 13 digits in length.|
|SHIP TO POSTAL CODE - SINGLE POSTAL AUTHORITY (AI=420)|
This AI encodes the postal code (zip code) of the party that the product or container is to be shipped to. The Postal Code is normally assigned by some government-sanctioned postal authority within the country.
This AI should be used if both the sender and the receiver are under the same postal authority-that is to say, they are within the same country. If the sender and receiver are in two different countries, AI 421 should be used.
|SHIP TO POSTAL CODE - MULTIPLE POSTAL AUTHORITY (AI=421)|
|This AI encodes the 3-digit ISO country code and postal code (zip code) of the party that the product or container is to be shipped to. This performs the same function as AI 420 but adds the ISO country code so that there is no confusion as to which country the postal code belongs to.
This AI should be used when shipping products or containers across international boundaries.
|ROLL PRODUCTS (AI=8001)|
|Rolls of paper, carpets, and similar products are treated as variably measured products. The actual identification of the product is identified with a 01 AI. The 8001 AI provides additional information about a specific roll. The format of the data contained in AI 8001 is as follows:
|ELECTRONIC SERIAL NUMBER FOR CELLULAR PHONE (AI=8002)|
|AI 8002 is used on cellular telephones to encode the phone's unique Electronic Serial Number (ESN). The ESN of each cellular phone should be unique.
The bar code containing this AI is usually printed on the cellular phone itself. It is often visible when the battery of the phone is removed. The same bar code is often printed on the product packaging that the cellular phone was sold in.
|UCC/EAN ASSET IDENTIFICATION WITH CATEGORIZATION (AI=8003)|
|AI 8003 is used for the categorization of returnable assets by owners. This may include such objects as pallets, refillable water containers, or any other product that is transferred temporarily to a customer with the expectation that it will be returned.
The structure of an AI data field is:
|UCC/EAN ASSET IDENTIFICATION WITH SERIAL NUMBER ONLY (AI=8004)|
|AI 8004 is similar to AI 8003, but only a serial number is encoded. It is the responsibility of the owner/system to tie a serial number to a specific type of asset since that information is not included in the AI. That is to say, serial number 1 may refer to a pallet, serial numbe 2 may refer to a refillable water container, etc. This information must be handled internally by the system-it is not handled by the AI as is the case of AI 8003.|
|MUTUALLY AGREED BETWEEN TRADING PARTNERS (AI=90)|
|AI 90 is used by mutual consent between trading partners to encode information that can't be encoded using other AI's because no AI exists to properly encode the data.
The format of this AI is left to the discretion of the mutual trading partners.
|INTERNAL USE (AI=91-99)|
|These AI's are reserved for internal company use. A company may use these AI's as they see fit. Likewise, they may determine the format of the data.|