Skip to content

Warehouse reconciliation: close the gap with a document, not a keystroke

Reconciliation is the discipline of making the record and the shelf agree again, and being able to show how. If the correction is a number typed over another number, the gap was not closed. It was hidden.

Verified in code 2026-09-04 · v2.0.0 to v2.19.0

What it looks like on the floor

Month end. A spreadsheet with two columns, system and counted, and a third column of differences that someone will type into the system one by one. Next month the same rows are back with new differences, because the corrections fixed the numbers and not the reasons.

Why it happens

Reconciliation fails when correcting is easier than explaining. If the product page has a quantity field and anyone with access can type in it, the gap between shelf and record closes in one keystroke and reopens the moment the cause repeats. The system is now wrong in a way nobody can trace, because the correction overwrote the only evidence.

The second failure is that reconciliation is treated as something people do to the system, rather than something the system does to itself.

What DockingWare does

The system reconciles itself every night. It replays every movement row for every product and compares the replayed balance with the stored snapshot, bucket by bucket. A difference becomes a discrepancy with a severity, on a reconciliation run that is kept on record. The ledger is the authority; the snapshot is a cache of it, and the run proves the cache is honest.

People reconcile through documents. A cycle count records what was found at a location. Each line that differs from the record is a variance, and a variance cannot be approved without a reason code or a note. Approval writes an adjustment movement that carries the count number, the reason and the approver. The product page has no quantity field to type over. If a number changed, there is a document that changed it and a name on the document.

Channel quantities are reconciled too. A pass compares what each connected channel currently holds against what the warehouse computed and names the difference, so a stale marketplace number is a finding on a list, not a customer complaint.

Movement types carry their meaning. A marketplace removal that comes back to the dock is booked as a channel inbound, not as a customer return, because the two have different accounting and different reasons, and a ledger that merges them cannot be reconciled against the books.

Every screen that shows a movement history shows the physical rows first. Reservations and pipeline rows sit behind a toggle, so a reconciler reads one row per physical event instead of three.

What it does not do

It does not let you skip the count. There is no “trust me” button that sets a quantity without a document behind it. That is deliberate. The purpose of reconciliation is not to make the numbers match today. It is to be able to show, later, why they matched.

What you can verify

Every rule above is enforced in code and covered by a test that fails first, then passes. The changelog names the version each one shipped in.

Questions

What does the system reconcile against?
Itself, every night. It replays every movement row for every product and compares the result with the stored balance snapshot, per bucket. Any difference is recorded as a discrepancy with a severity, on a run that stays on record. If the ledger and the snapshot ever disagree, the ledger is right and the run says so.
How do I correct a quantity?
Through a cycle count. Count the location, record what was found, give each variance a reason code or a note, and approve. Approval writes an adjustment movement that names the count. The product page has no quantity field to type over.
Can the marketplace quantity drift from the warehouse?
It can, and that is why it is checked. A reconciliation pass compares what each channel holds against what the warehouse computed and names the difference, so a stale channel number is a finding, not a surprise.
What about stock that comes back from a marketplace?
A marketplace removal is booked as its own movement type, separate from a customer return. The two look the same on a dock and mean different things on the books, so the ledger keeps them apart.

Related

Read the WMS buyer's guide

Related terms

See how DockingWare handles this →

Ready to see it on your floor?

Early access. We onboard a small number of operations at a time.

Start Early Access