USPS GS1-128 IMpb FAQ & Tutorial

Barcode Information | Tutorials | Examples

The Intelligent Mail Package Barcode (IMpb) concatenates the destination routing information, such as a zip code, and a package identification code (PIC) together in a single barcode using GS1-128, which is a specialized Code 128 (ISO/IEC 15417) barcode. Also included in the barcode is an Application Identifier (AI) to designate a specific payment channel, a six or nine-digit mailer ID, and a three-digit service type code (STC) to identify a mail class and service, such as Priority Mail with Delivery Confirmation.

USPS Intelligent Mail Package Barcodes

Now required by the United States Postal Service (USPS) for all parcels being shipped, the IMpb is generated using the Code 128 symbology and is formatted as follows:

  1. Start C character
  2. FNC1 character *
  3. 3 digit AI (Application Identifier, which is usually 420)
  4. Routing Zip Code (5 Digit)
  5. FNC1 character *
  6. 2 digit AI (Application Identifier, which is usually 92)
  7. 3 digit service type code *
  8. 9 digit customer ID
  9. 7 digit sequential package ID *
  10. Mod 10 check digit
  11. Mod 103 symbology check digit
  12. Stop character

IMpb Postal Barcode Example
This example shows place holders for the human readable portion and is not actual data for testing purposes.

* There are 2 FNC1 group separators required; the service type codes are now 3 digits and the serial number is now 7 digits (or an optional 11 digits), per the 2015 version of the Publication 199: Intelligent Mail Package Barcode.

Example of Encoding USPS Barcodes

Example String:

~21342090221~212920569013951581555550~m21

  • 420 is the first Postal Routing Code Application Identifier [value=Domestic Parcel], therefore ~213 is identifying the 3 digits 420 as AI
  • 90221 = Data for Destination Zip Code
  • 92 is the second Channel Application Identifier [value=Commercial Mailer with 9 Digit Mailer ID] where ~212 is identifying the 2 digits 92 as the AI
  • 056 = STC for Priority Merchandise Return Service
  • 901395158 = Mailer ID
  • 1555550 = Serial Number
  • Ending with MOD 10 Check Digit
USPS Compliant GS1-128 (UCC/EAN) for Special Services
Desired result:[FNC1]420 90221[FNC1]92 056 901395158 1555550[MOD10]
Text string sent to DataToEncode:~21342090221~212920569013951581555550~m21
Human readable text (not generated automatically):(420) 90221 (92) 0569013951581555550
Data scanned from barcode:*]C1420902219205690139515815555503

The start, stop, and mod 103 check digits are automatically added to all of IDAutomation barcode products. To create the required Code128 barcode, use Code 128 Auto with ApplyTilde enabled and add in the appropriate ASCII 202 and AI’s (as documented in the GS1-128 FAQ website). A MOD 10 Check Digit is also required at the end of the data encoded. This may be easily generated in IDAutomation products with the ~m command as demonstrated in Fig 3.

When printed at 16 points, the IDAutomationC128L font will produce the exact dimensions for GS1-128 required by the USPS special services, which is a height of .75″ and an X dimension of .013″. For more information, refer to the USPS specifications. More information about formatting GS1-128 barcodes with IDAutomation products is provided on the GS1-128 FAQ website.

When generating GS1 symbols, IDAutomation recommends testing the result with the Barcode  Decoder App which parses out GS1 data to verify proper encoding.

* USPS Characters Below the Barcode

The human-readable characters below the barcode may be easily generated with IDAutomation products by utilizing the SpliceText option with the Sans Serif Bold or equivalent type font.

In the event the human-readable characters below the barcode need to be created from code, the Sans Serif Bold font should be used and spaces should be inserted between every 4 digits.

The following Visual Basic VBA code accomplishes this purpose:

Mid(DataToEncode, 1, 4) & ” ” & Mid(DataToEncode, 5, 4) & ” ” & Mid(DataToEncode, 9, 4) & ” ” & Mid(DataToEncode, 13, 4) & ” ” & Mid(DataToEncode, 17, 4) & ” ” & Mid(DataToEncode, 21, 2)

Several other combinations are possible. For more information, refer to the USPS barcode specifications. The USPS has also standardized a newer 4-state barcode type defined as the Intelligent Mail Barcode, which encodes delivery and tracking information in a single symbol.