In this scenario we printed a label for an inventory item using a UPC Barcode, and it printed with the correct human readable text (same as Barcode in inventory record). However, when we scanned the label, the scanned barcode is displaying an extra leading zero and changed the trailing check digit from a 6 to a 2 Barcode should have been 73667600306 and this is what the human readable text also displays.
When we scan the barcode it scans as 073667600302.
When we switch the barcode type from UPC to 3of9 or Code128, they both display and scan the correct barcode number. 73667600306
We determined that this isn't an issue with the barcode scanner. It was programmed correctly with the STX (Ctrl+B) Prefix and Carriage Return Suffix. We also tested on a second known good barcode scanner. It is an issue with the barcode that is being generated from System Five.
A UPC/PLU barcode must be a minimum of 12 characters to be a valid barcode.
Since 73667600306 Is only 11 digits, a leading zero is added to make it 12 digits.
This also changes the value of the barcode, so the mathematical formula that makes up the check digit changed the last number in the barcode from a 6 to a 2.
This issue is by design.
The only solution is to not use the UPC/PLU option in the System Five Label Designer or with Code Based labels. You must instead use either 3of9 or Code128. Both of these simply translate the value that they are given into a barcode, regardless of the length. Code128 and 3of9 also have the added advantage of being able to use alphabetic and numeric characters which is why they are used for serial number barcodes.
UPC’s are specifically formatted to meet the U.P.C rules. Any information outside of these rules will result in invalid or misprinted barcodes.