You want the UPC-A string on your host to arrive without the trailing check digit and without the leading number-system digit — the one you may know as the country code — and you are looking for the sheet of setup barcodes that turns both off. This guide shows what those two settings actually control, the string length every combination produces, a worked check-digit calculation you can verify by hand, and the legitimate route to the setup barcodes when the scanner is an engine built into someone else's device. Handheld readers, fixed readers on a line and embedded scan engines all work the same way here.
The check digit is not a setting
UPC-A carries twelve digits: one number-system character, five manufacturer digits, five item-reference digits and one check digit. The symbology fixes the check digit as a modulo-10 value computed from the first eleven, and every decoder computes it as part of the decode itself. A symbol whose digits do not produce the stored digit is rejected before any data reaches your host.
That is why no reader offers a setting called 'disable checksum'. There is nothing to disable: the digit is part of the symbol, verification happens inside the decode, and the configuration only decides what leaves the reader. Turn off transmission and the reader still refuses a bad label; it just sends less data when a label is good.
The leading digit is not a country code. EAN-13's 2-3 digit GS1 prefix codes the numbering organisation; UPC-A's single leading digit is a number-system character, a product-class digit. UPC-E carries one too, almost always 0.
The settings you will actually name
Configuration guides across reader vendors expose the same handful of options under names along these lines:
- Transmit UPC-A Check Digit — send or strip the last character
- Transmit UPC-A Number System — send or strip the first character
- Transmit UPC-E Check Digit — the same choice for UPC-E
- UPC-E number system (leading zero) — whether the UPC-E leading 0 or 1 is sent
- UPC-E to UPC-A expansion — transmit the 12-digit UPC-A equivalent instead of the zero-suppressed value
You apply them by scanning setup barcodes printed in the guide, or by setting the same entries in a device app, web page or serial command set — whichever method your guide documents.
The string length each combination sends
The settings are really a column width. Each combination below gives the exact character count your host receives:
| Transmission setting | UPC-A characters | UPC-E characters |
|---|---|---|
| Check digit and number system sent | 12 | 8 |
| Check digit sent, number system stripped | 11 | 7 |
| Number system sent, check digit stripped | 11 | 7 |
| Both stripped | 10 | 6 |
With UPC-E expansion enabled, the reader sends the 12-digit UPC-A equivalent, and the same check-digit and number-system flags then apply to that expanded value. An expanded UPC-E therefore behaves exactly like a UPC-A in your database, which is the point: one string per product.
Worked example: the four strings for UPC-A 036000291452
The inputs: a retail label whose eleven data digits, read left to right from the number-system character, are 0, 3, 6, 0, 0, 0, 2, 9, 1, 4 and 5 — an illustrative standard example you can reproduce on any label in your plant.
The rule: weight the odd positions by three, add the even positions once, and take the complement to ten:
The arithmetic: odd positions d1, d3, d5, d7, d9 and d11 carry 0, 6, 0, 2, 1 and 5, which sum to 14, and 3 × 14 = 42. Even positions d2, d4, d6, d8 and d10 carry 3, 0, 0, 9 and 4, summing to 16. The total is 42 + 16 = 58, so 58 mod 10 = 8, and the check digit is (10 − 8) mod 10 = 2. The full symbol is 036000291452.
The four combinations transmit:
- Both sent: 036000291452 — 12 characters
- Check digit sent, number system stripped: 36000291452 — 11 characters
- Number system sent, check digit stripped: 03600029145 — 11 characters
- Both stripped: 3600029145 — 10 characters
Decision: if your item master stores the GTIN-12, transmit everything and give the column 12 characters. Strip characters only to feed a legacy fixed-width file, and then strip the same characters from both symbologies on every station.
Where the settings live, and who publishes the guide
For a reader bought as a product, the maker's configuration guide lists the settings and prints the setup barcodes. That guide is the documentation, it comes with the product or from the maker's official channel, and it covers handheld code readers and fixed code readers alike.
For an engine built into someone else's device — a mobile terminal, a kiosk, a machine panel — the integration manual that carries the programming barcodes is a different document. Engine vendors publish it to certified integrators rather than the general public, and their support desk routes you back to the company that built the device. That routing is the legitimate path, not a dead end: ask the device maker for the configuration guide matched to your revision, for the engine's serial command set, or to apply the settings as a service. Take manuals only from the maker or its distributors; a guide for another engine or firmware revision is the fastest way to leave a device half-configured.
Set and verify on your device
- Write the convention down first: the exact characters and column width your host expects — 12, 11 or 10 for UPC-A; expanded 12, or 8, 7 or 6 for UPC-E. The settings follow from the database, not the other way round.
- Get the configuration guide from the right source: the reader maker for a purchased reader, the device maker for an embedded engine.
- Find the options by name: Transmit UPC-A Check Digit, Transmit UPC-A Number System, Transmit UPC-E Check Digit, the UPC-E leading-zero setting and UPC-E expansion.
- Apply them by your guide's method — scan the setup barcodes or set the menu entries — and commit exactly as the guide ends configuration.
- Test with a label whose full digits you know, such as the worked example above, and count the characters the host receives: 12, 11 or 10 for UPC-A; 12, 8, 7 or 6 for UPC-E. Recompute the check digit by hand once, per the formula above, so the read is proven end to end.
- Extend the judgement beyond the character count with the decode-quality checks in Barcode read confidence: how to judge whether a decode is trustworthy.
- Repeat at every station and write the convention into the station sheet; first-connection and readback checks for a fixed reader are covered in Fixed code reader setup over USB: first connection and readback checks.
Which convention to choose
| What your host stores | Set on the reader |
|---|---|
| GTIN-12, a 12-character column | Transmit check digit and number system on both symbologies; enable UPC-E expansion |
| Legacy 11-character file, data plus check digit | Check digit sent, number system stripped, both symbologies |
| Legacy 10-character file, data only | Both stripped on both symbologies; leave expansion off unless the column takes 12 |
Default to the first row for anything new. It matches the GTIN your suppliers publish, gives one string per product across UPC-A and expanded UPC-E, and leaves the check digit in the data where a downstream system can re-verify it. Strip characters only to feed an existing fixed-width file, and then strip them everywhere: a plant where one station sends 12 digits and the next sends 10 produces lookup misses that look like random read failures. How one GTIN spans UPC-A and EAN-13, and what leading zeros do to a lookup, is its own topic in UPC-A and EAN-13: one GTIN, leading zeros and reader emulation.
Common mistakes
- Stripping the check digit while the column stays 12 characters, or the reverse. The lookup then fails on length or padding and looks like a reader fault. Change the column and the settings together.
- Storing UPC-E expanded in one system and zero-suppressed in another. One product then exists twice in the data. Pick expansion per the table above and hold it.
- Looking for a UPC 'country code' setting and editing the EAN-13 prefix instead. UPC-A's number-system flag does not touch EAN-13's GS1 prefix; the two symbologies carry separate settings.
- Assuming the fleet is uniform. Readers swapped in for service arrive with fresh defaults; run the character-count test after any swap.
Readers for the job
Both code-reader categories carry UPC-A and UPC-E with these transmission options, so choose by host interface, mounting and duty rather than by symbology. A handheld covers audit and maintenance work; a fixed reader covers the line at the trigger rate the conveyor needs. Getting the decoded string into the controller is its own design, laid out in Barcode scanner input methods to a PLC: serial, USB and Ethernet.
A wired USB handheld covers a bench, a wireless Ethernet handheld ranges across a warehouse, and a compact fixed reader sits over the line:
- Interface
- USB
- Connection
- Wired
- Resolution
- Up to 3 MP
- Shutter
- Global
- Interface
- Fast Ethernet
- Resolution
- Up to 3 MP
Covers, alternate light boards and I/O boxes sit in the reader accessories category. Set the symbology flags before mounting: changing them after commissioning is a five-minute job per station, while a database migration is not. The code-reader finder filters both categories by interface and resolution, and the rest of the decode-side guides sit on the code reading topic page.
The configurator matches a camera, lens, light, light controller and cables to each other, step by step, and lists only parts that fit what you already picked.
If the string convention is already fixed by your host and you want it checked against a specific reader, send the sample string your system expects through the contact page and we will name the settings to enter.
Questions
Can I turn off UPC-A checksum verification so a partly damaged label still reads?
No. The modulo-10 digit is defined by the symbology, and the decoder computes it during decode; a symbol whose digits do not produce it is rejected before any data reaches the host. There is no legitimate setting that skips this step. If damaged labels fail to read, change the optics and lighting — narrower lighting to cut glare, a different angle, more resolution per module — or improve the label stock.
Is the first digit of a UPC-A a country code?
No. It is the number-system character: 0, 6 and 7 mark regular retail items, 2 marks random-weight goods priced at the scale, 3 is pharmaceuticals and 5 is coupons. Country-style prefixes belong to EAN-13, whose 2-3 digit GS1 prefix codes the numbering organisation; 12-digit UPC-A values sit inside GS1 prefixes 00 to 13.
Why does one station send 12 digits and another 10 for the same label?
The two readers carry different transmission settings: one sends number system and check digit, the other strips both. Run the character-count test at each station, write the convention into the station sheet, and configure every reader to the same combination. Fleet drift like this is the most common cause of intermittent lookup misses.
How do I get the setup barcodes for a device with an embedded engine?
Ask the company that built or sold the device. Engine makers restrict integration manuals — the ones carrying programming barcodes — to certified integrators, and they route end users back to the device maker. Request the configuration guide for your exact device revision, or ask the maker to apply the settings as a service. Do not use a guide written for a different engine.
Should I enable UPC-E to UPC-A expansion?
Enable it whenever the item master stores 12-digit GTIN-12 values. Without expansion a UPC-E label arrives as 6 to 8 digits, depending on your transmission flags, and the lookup against a 12-character column fails. With expansion on, the reader transmits the UPC-A equivalent, and the same check digit and number-system flags apply to that value.


