Stocktakes Online by Barcode Datalink

Scanning a count into QuickBooks Online

Set the scanner up once. After that, nobody types a part number again.

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

Three steps, and only the first one is setup.

StepWhat you do
OnceScan 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 countPrint a variance sheet — one barcode per part, carrying the part number and the counted quantity together.
Each linePull 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

Use a 2D sheet if your scanner can read one. It is a single scan and it cannot go wrong.

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.

Read this before you scan anything

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.

ScannerType1D sheet2D sheets
Zebra LS2208LaserYes — all 29, in orderNo — cannot read them at all
Zebra DS2208ImagerYesYes — one scan
Zebra DS9808ImagerYesYes — 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

An imager will read the setup barcode straight off a phone screen.

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.

A DataMatrix setup barcode displayed on a phone screen, white on black, with a clear white margin around it

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 readWhy
Turn the brightness upAn 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 allowsPinch to zoom. The bigger the cells, the more forgiving the read.
Keep the white border around itThat 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 awayClose enough to fill the field of view, far enough to focus.

This one is imagers only, with no exceptions

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

The part number and the quantity, in one barcode, with two characters doing the work.

~RKFTN\4     →  sends RKFTN, commits it, moves to the quantity box, sends 4

The leading ~ is a safety catch, not decoration

It 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.

The \ separates the two fields

A 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.

It has to be the SKU QuickBooks knows

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.

Your scanner still works for everything else

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.

One barcode per part, already totaled

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

Open your blank rows first. That one step removes the only real hazard.

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 thisWhy
Save every pageEach 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 CountRather than Shrinkage, which is the default and is a different thing. Your accountant will read this field later.
Glance down the Change columnNot 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

Seventeen steps, and every pause is there for something the page has to go and do.

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.

criterion  Specific String at Start   ~

 1  AHEAD <1>              past the tilde
 2  UP TO CHARACTER <\>  sends the SKU
 3  PAUSE <5>              0.5s — the dropdown is searching, over the network
 4  SEND ENTER               commits the product
 5  PAUSE <8>              0.8s — the row fills in
 6  SEND TAB                 into New Qty
 7  PAUSE <6>              0.6s — New Qty pre-fills and highlights
 8  AHEAD <1>              past the backslash
 9  SEND ALL THAT REMAINS  the counted quantity
10  PAUSE <6>              0.6s — Change in Qty is worked out
11  SEND TAB   12  PAUSE <4>
13  SEND TAB   14  PAUSE <3>
15  SEND TAB   16  PAUSE <5>
17  SEND TAB                 on to the next row

Pause is a count of tenths, and it is set once for the scanner

<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.

There is deliberately no Enter at the end

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.

Seventeen actions is 58% of what a rule can hold

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.

The order the two rules are programmed in is not arbitrary

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.

Keep the payload short

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.

Proven on two Zebra DS9808s — one configured by hand, one programmed from the printed sheet alone — firmware 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

The first line sometimes misbehaves. Every line after it is reliable.

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:

CandidateHow you would know
The scanner wakingScan 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 loadingWait five seconds after the grid draws, then scan. If line one is then clean, that is your answer.
Timing, needing a longer pauseOnly after the other two are ruled out — because a longer pause slows every line for the life of the rule to fix one.

What to do about it in the meantime

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

The rule is editable, with Zebra's own free utility.

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.

Zebra's own walkthrough, played from their server — nothing downloads until you press play. The detail it will not tell you is which pauses matter, because that depends entirely on what you are typing into.

Being straight about it

The hard part was never the scanner.

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.