UPC-A barcode for North American retail POS

Retail GTIN-12

UPC-A at North American Checkout: GTIN-12 & Check Digits

UPC-A is still the familiar twelve-digit retail symbol on many U.S. and Canadian packs. The POS does not "know" your brand from the bars alone -- it looks up the scanned GTIN-12 in the store item file.

Generate UPC-A

What happens at the till

01

Capture

Laser or imager reads the reflectance pattern on the pack facing.

02

Decode

Decoder validates structure and Modulo-10, then emits twelve digits.

03

Lookup

POS matches price, tax, age limits, and promotions in the item master.

04

Failure types

Optical no-read vs "item not on file" for a valid but unauthorized GTIN.

Twelve digits on the package

Human-readable UPC-A shows 11 data digits + 1 check digit. Store databases should keep the value as text so a leading zero is not stripped (teaching example 036000291452).

N number system
M / I prefix + item lengths vary
C check digit

Classic teaching charts show a fixed 5/5 manufacturer/item split. Real GS1 company-prefix lengths vary -- do not hard-code that split in software.

Number-system overview (orientation only)

Leading digit How training material often describes it
0, 1, 6, 7, 8, 9 Common regular trade-item ranges
2 Often variable-measure / store-assigned patterns
3 Frequently seen with pharmaceuticals / health products in NA practice
4 Often in-store / non-catalog use cases
5 Coupons in classic UPC numbering discussions

Do not pick a leading digit because a blog said "3 means pharmacy" and then invent the remaining digits. Obtain numbers through authorized allocation. Coupon structures (number-system 5) have dedicated rules -- do not reuse product UPC-A artwork as a coupon by changing one digit.

Same product as EAN-13

Leading-zero pad

036000291452 0036000291452

GTIN-12 and GTIN-13 for the same trade item. Databases that store 13 digits left-pad with zero.

Chop an arbitrary EAN-13

drop first digit

You cannot chop a random thirteen-digit number to twelve and call it UPC-A.

Side-by-side detail: EAN-13 vs UPC-A.

Check digit: 03600029145 to 2

Same GS1 Modulo-10 idea as EAN-13, applied to eleven data digits. From the right of those eleven: odd positions x3, even x1; choose C so the sum is divisible by 10.

Weighted sum (data) Products from 0 3 6 0 0 0 2 9 1 4 5 with right-based 3/1 weights total 58.

Next multiple of 10 60, so check = 2. Full UPC-A: 036000291452.

Qrivio Accepts valid full twelve digits or the eleven-digit payload and computes the check. Wrong full check digits are rejected with the expected digit shown.

Batches Payload advances; check recalculates. Do not bump the full twelve-digit integer.

Print notes for POS

Quiet zones Keep left/right clear of graphics and box creases.

SVG for artwork Prefer vector when placing the symbol in packaging files.

Scanner class Verify on retail-class devices, not only a phone app.

CSV zeros Do not truncate leading zeros when exporting to label software.

2026 Copyright © Qrivio Barcode | All rights reserved.