In 2019 I walked into an e-commerce warehouse in Fontana with a 1.8% inventory variance, and the owner was losing sleep over it. We spent a week hunting. No theft. No system bug. The root cause was pickers hearing location B-14-06 as B-14-09. Handwritten pick sheets, verbal callouts, and 6 looks a lot like 9. Thousands of one-character-off mispicks a year.

My verdict is simple: adding a check digit to the end of your location code is the cheapest error-proofing in the entire warehouse. A hundred times cheaper than new scanners, ten times more reliable than adding auditors.

What a check digit actually does

The idea is borrowed from barcodes. The last digit of a product barcode is not random — it is computed from all the digits before it, a built-in verification code. Do the same with location codes: append one character, computed from the rest by a fixed algorithm. When a worker enters or scans a location, the system recomputes and rejects anything that does not match. The task locks on the spot.

An example. Location A-03-12 computes to a check digit of 7, so the full code is A-03-12-7. A picker fat-fingers A-03-21. The system recomputes, expects 4 instead of 7, and throws an error immediately. The mistake dies at the moment it happens instead of surfacing at cycle count.

You do not need to invent the algorithm. The workhorse is weighted modulo 10: multiply each digit by alternating weights (1, 3, 1, 3…), sum them, take the last digit, subtract from 10. Most WMS platforms support configurable check rules; if yours does not, a few dozen lines of code will do it. The only requirement is consistency — one algorithm, everywhere.

Fix the coding scheme first, or the check digit is pointless

A check digit prevents typos. It cannot fix a chaotic scheme. So before adding the digit, get the location coding rules straight. The scheme I give clients has four segments: zone-aisle-level-position, like A-03-2-12 for zone A, aisle 3, level 2, position 12.

A few hard rules:

Digits first, letters only for the zone segment, and ban the lookalikes. I versus 1, O versus 0, S versus 5, Z versus 2 — all out. I once saw a warehouse using B and 8 as zone codes. Workers mixed them up daily until the whole thing was renamed.

Fixed length per segment. Aisle numbers always two digits (03, not 3), level one digit, position two digits. Fixed length keeps the check algorithm stable and lets workers spot a missing character at a glance.

Never use pinyin, people's names, or product names as locations. It feels friendly and it is a disaster. "Lao Wang zone" and "hot SKU zone" mean nothing to the next hire, and no system can validate them. Location codes serve machines and processes, not nostalgia.

Retrofitting an old warehouse is not scary. The steps: generate the full new location table, print old-to-new conversion sheets and post them at aisle entrances; run dual-mode for a month — both codes work, but the system records the new one; after a month, retire the old codes and let scanners accept only the new ones. Spend extra on printing during the transition. It is worth it.

Configuring it in the WMS, catching it at the scanner

The earlier the validation fires, the better. Ideal is real-time validation on the scanner itself: the worker scans the location barcode, the device verifies the check digit on the spot, and a wrong code gets a vibration plus a red light. That beats scan-then-sync-then-error, and it beats discovering the problem at inventory count.

On the WMS side, three steps: add a check-digit field to the location master and generate it in bulk; add the validation logic to the confirmation step of picking, putaway, and cycle-count tasks; define the exception flow — failed validation suspends the task and routes it to a supervisor, who can force-approve but must enter a reason.

That override has to exist, because labels get damaged and temporary locations happen. But the reason field is mandatory. I have seen the data: in warehouses where forced overrides exceed 5%, eight times out of ten the root cause is bad label print quality — swap the printer and the problem disappears. Data talks, but only if you record it.

One thing most people miss: cycle counts need the digit too. A counter scanning the wrong location books the count against someone else's slot, and variances compound. After check digits go live, count variance typically drops by a third or more.

The math: what one mispick really costs

A mispick costs more than the re-pick labor. The full bill: the picker discovers it and walks it back, 15 minutes of labor; if it is not caught, it reaches the customer — 20 minutes of customer service, reshipment freight, return freight, and the product may never come back. For e-commerce small parcels, one mispick averages $15 to $35.

A warehouse doing 20,000 orders a month at a 0.3% mispick rate is 60 mispicks a month — over $10,000 a year in direct cost, before counting lost customers.

And the check digit? Zero hardware. New warehouses build it in from day one; existing ones spend a weekend generating codes and printing labels. The only real cost is half a day of WMS configuration and a 30-minute worker training. I cannot think of a better ROI in warehousing.

The watch-out list:

  • Document the algorithm in a shared drive. New-hire training must cover it in 30 minutes. Do not let it become a black box only IT understands.
  • Temporary locations need codes too. "Temporary" is exactly when mistakes happen — do not exempt them from validation.
  • Skip special characters. Too many dashes confuse scanners; one hyphen between segments is enough.
  • In the first week after go-live, read the validation-failure log daily. Failures clustering on a few locations usually mean mislabeled slots — walk over and look.

Picker scanning a location label in a warehouse racking aisle

What you can do tonight

Export your location table and filter it: do you have "twin locations" that differ by one character, like A-03-16 and A-03-19, or B-14-06 and B-14-09? If yes, rename them to create distance first, then add the check digit. Do those two steps and I will bet you dinner your mispick rate drops by half.

Location coding is the kind of thing nobody thinks about until it breaks. A check digit is insurance for your coding scheme — the premium is nearly zero, and at claim time you will be glad you bought it.