Scanning a count into QuickBooks Online
There is no software to install and no cable. You print one page, scan it — a single barcode if your scanner has a camera — and it learns to read a line off a count sheet and put both the part and the quantity into the QuickBooks adjustment screen — one trigger pull a line, about four seconds. Here is the whole recipe, including the numbers.
What actually happens
| Step | What you do |
|---|---|
| Once | Scan the setup sheet below. On a scanner with a camera that is one barcode — which can be read off a phone screen, so nothing needs printing at all. On a laser it is 29 printed barcodes, scanned in order. Either way the scanner keeps the settings when it is unplugged. |
| Each count | Print a variance sheet — one barcode per part, carrying the part number and the counted quantity together. |
| Each line | Pull the trigger. The scanner finds the part, commits it, moves to the quantity box, and types the count. |
The two things people actually get wrong — the part number and the quantity — are never typed by anybody.
The setup sheet
The 1D version is 29 barcodes scanned in order across six pages. Miss one, or take them out of sequence, and you get a scanner that is subtly wrong rather than obviously broken — which is a bad afternoon. PDF417 and DataMatrix carry the whole configuration in one barcode, so there is no order to get wrong.
A laser scanner physically cannot read either 2D format, so if yours is a laser the 1D sheet is not a preference — it is the only one that will work. That is still 29 barcodes and no software, which is the trade worth making: the alternative is installing a configuration utility and connecting the scanner by USB, and an installer that fights your antivirus can cost an afternoon. Scanning 29 barcodes carefully takes ten minutes.
The sheet begins with Set Factory Defaults. It will wipe any other configuration that scanner is carrying — prefixes, suffixes, symbology settings, anything somebody set up for a different job. That is fine for a scanner that sits on a desk doing this. It is not fine for one that is also used in shipping or receiving. Use a scanner you can afford to reset.
| Scanner | Type | 1D sheet | 2D sheets |
|---|---|---|---|
| Zebra LS2208 | Laser | Yes — all 29, in order | No — cannot read them at all |
| Zebra DS2208 | Imager | Yes | Yes — one scan |
| Zebra DS9808 | Imager | Yes | Yes — one scan |
A laser scanner reads bars and spaces in one line. PDF417 and DataMatrix need a camera. Print the 2D sheet for a laser and it simply will not read — which looks exactly like a broken rule, so it is worth checking first.
Check you have the current sheet. Every page of it carries a Last Modified date in the header, and today it should read 28-Sep-26. If yours says something earlier, your browser has kept an old copy — reload the page with Ctrl+Shift+R and download it again. An out-of-date sheet still opens, still scans, and programs the scanner to behave differently, which is the worst combination.
Print at 100%. Not “fit to page” — that rescales the bars, and it is the usual reason a printed barcode will not read.
You do not actually need a printer
123Scan can email the programming barcode. Open the mail on a phone, hold the phone in front of the scanner, pull the trigger. The scanner is configured — nothing printed, nothing installed, nothing plugged in.
Which is more useful than it sounds, because it means whoever built the rule does not have to be in the building. Send an email; they hold up a phone.
That is the whole configuration in one barcode — every symbology setting, both rules, all seventeen actions and their pause values. Note the white margin around it in the picture: that is the quiet zone, and it is as much a part of the barcode as the pattern is.
| Getting it to read | Why |
|---|---|
| Turn the brightness up | An imager is a camera. A dim screen is a dim subject, and phones dim themselves when you are not touching them. |
| Make the image as large as the screen allows | Pinch to zoom. The bigger the cells, the more forgiving the read. |
| Keep the white border around it | That margin is the quiet zone, and a barcode cropped to its own edge will not decode. Do not zoom past it. |
| Hold it square, a few inches away | Close enough to fill the field of view, far enough to focus. |
A laser scanner cannot read a screen at all — not badly, not sometimes. It works by measuring light bounced back off a printed surface, and a screen does not bounce light back, it emits its own. If your scanner is a laser, the printed 1D sheet is the only route.
What the barcodes on your count sheet have to contain
~ is a safety catch, not decorationIt is how the scanner knows this is a count sheet and not a carton label. Without it the rule fires on any barcode — injecting an Enter and four tabs into whatever screen happens to be open. A character no real barcode starts with cannot collide with anything.
\ separates the two fieldsA comma turns up inside descriptions and a hyphen appears inside part numbers like SP-001. A backslash appears in neither, and it encodes in Code 128 without complaint.
Not the barcode on the carton, unless they are the same string. The adjustment screen matches on the product’s SKU and fills in the name and description beside it — which is also your check that it found the right part.
The sheet programs two rules. The first is a catch-all: any barcode without the leading ~ is sent as plain data followed by Enter, which is what an ordinary scanner does. So the same scanner still works in a search box, a spreadsheet, or receiving. Only count-sheet barcodes get the special treatment.
QuickBooks refuses the same part twice — “Duplicate variant found.” A part found in three places has to be one number before it goes anywhere near this screen.
In QuickBooks
Inventory → Adjust inventory. Press Add lines until there are more empty rows than lines you are about to scan. Then click into the first product box and start.
Do this because the bottom of that grid is where Clear all lines lives — a button that empties everything you have entered with no confirmation and no undo. With rows open below you, nothing ever reaches it. What that button does, and how we tested it →
| Also do this | Why |
|---|---|
| Save every page | Each adjustment is its own transaction and a part can appear only once anyway, so splitting a count across several costs nothing and caps what one mistake can destroy. |
| Set the reason to Inventory Count | Rather than Shrinkage, which is the default and is a different thing. Your accountant will read this field later. |
| Glance down the Change column | Not the quantity. If a number lands beside the pre-filled figure instead of replacing it, the change comes out an order of magnitude wrong and nothing else says so. |
The rule itself
You do not need any of this to use the sheet — it is here because a recipe you cannot inspect is a recipe you have to take on trust.
<5> is half a second. The duration is a single scanner-wide setting in the range 0.1 to 9.9, default one second — so a longer gap in one place means more pause actions, not a bigger number. Which is why the values above differ by step.
Most scanners send one by default. This one does not, and that is load-bearing: tabbing past the last row parks the cursor on Clear all lines, and a terminating Enter would press it. With no suffix, an overshoot does nothing at all — and announces itself, because the next scan visibly goes nowhere.
123Scan shows the budget as you build. Worth knowing before you add pauses: there is a ceiling, and this rule is more than half way to it.
Zebra’s guide is blunt about it: rules are stored with the most recent on top and checked from the top down, and the first matching one wins. So the general rule has to be programmed first, ending up underneath. Program them the other way round and the catch-all swallows everything — the sentinel rule is still in there, and simply never runs. The sheet does them in the right order; this is only a warning for anybody rebuilding it by hand.
Zebra's own guidance is to avoid ADF on barcodes over 60 characters — past that the scanner transmits in segments and applies the rule to each segment, so it would fire twice. In practice the printed page runs out first, at about 35 characters.
CAAABS00-007-R02, ADF v1.1, plug-in DS9808-COMMON LR MODELS-019, against QuickBooks Online on 27 and 28 September 2026. A rule that depends on a browser's tab order should say when it was last known to work, and this one does.The one thing we have not got to the bottom of
It is worth saying plainly rather than letting you find it: on the first scan after opening the adjustment screen, the sequence occasionally lands in the wrong place — and then the line below it starts in the wrong field. Scan two and it is fine. Scan forty and they are fine.
We do not yet know which of three things causes it, and we would rather say that than invent a reason:
| Candidate | How you would know |
|---|---|
| The scanner waking | Scan the first barcode into Notepad instead. If it is slow or garbled there too, the page has nothing to do with it. |
| The page still loading | Wait five seconds after the grid draws, then scan. If line one is then clean, that is your answer. |
| Timing, needing a longer pause | Only after the other two are ruled out — because a longer pause slows every line for the life of the rule to fix one. |
Wake everything up before you start. Scan one barcode into a blank Notepad window, then click into the first product box in QuickBooks and type a character and delete it. That forces both the scanner and the product search to do their first bit of work before any real count data is involved.
And watch line one. It is visible when it goes wrong, and it is one line to fix. That is the whole cost of this being unsolved.
If you want to change it
You do not need it to use the sheet. You need it if you want different pauses, a different sentinel, or the same idea pointed at a different program.
123Scan is free from Zebra. It builds the rule, saves it as a file, and prints the barcode sheet — all without touching a connected scanner. One caution: in its toolbar, Print bar code sits next to Load to scanner. The first is safe. The second writes.
Being straight about it
Everything above is free, and reproducible by anybody with a Zebra scanner and an afternoon. It took two days to work out only because nobody had written it down — not because it is difficult.
The part it does not solve is the sheet. For five parts you can make those barcodes by hand in a few minutes. For sixty discrepancies across forty bins, counted by six people, where a part found in three places has to become one number before QuickBooks will accept it — that is not a barcode problem, it is a counting problem, and it happens long before anybody gets near an adjustment screen.
That is the bit we do. Scanners your people already know how to hold, counts that add up by themselves, a comparison against what the accounts expected, and a sheet at the end with one barcode a line and the expected figure printed beside it so you can check the screen as you go.