A familiar scene: the system shows the item in stock, a salesperson promises it to a customer, the warehouse worker walks over — and the shelf is empty. Or the reverse: the boxes are sitting there, but the records show zero, so nobody sells them. If you’re wondering what to do when stock levels don’t match your records, start with the core truth: a discrepancy isn’t random and it isn’t “sloppy warehouse staff.” It’s a symptom that your records and your physical stock are living separate lives. You can treat the symptom with a stock count, but it’ll be back in a month. The cause is what you have to remove.

We’ve been building accounting and inventory systems for Ukrainian businesses since 2018, and almost every project starts with exactly this pain. Below are the typical reasons for the mismatch and the logic for removing it for good — not re-balancing the numbers once a quarter.

What “stock doesn’t match” actually means

It’s worth separating two states, because they’re fixed differently. The first is a one-off error: something was written off wrong long ago, and the number has been drifting ever since. The second is a permanent desync: no matter how often you reconcile, it’s off again within a week. The first is cleared by a single honest stock count. The second isn’t — because there’s a hole in the system through which goods leak past the records.

The test is simple. Run a full count and record the gaps. Two weeks later, reconcile the same items again. If the same products have crept in the same direction, you have a systemic hole, not a historical error. And the question to ask isn’t “who stole it” but “where does the movement of goods fail to reach the records.”

The main reasons records diverge from the shelf

Across years of implementations, 90% of discrepancies come down to a handful of recurring causes.

Manual double entry. A delivery is written in a notebook or Excel, then entered into the accounting system separately and later. Something always gets lost between those two actions: a skipped line, wrong units, yesterday’s date instead of today’s. Every extra manual step is a place where the number drifts.

Sales that bypass the system. The goods were handed to a customer “quickly, I’ll log it later” — and it was never logged. The till and the warehouse aren’t linked, so the sale happened but the write-off didn’t. This is the most common reason there’s physically less stock than the records claim.

Units and bundles. You buy by the case and sell by the piece. Or an item is a kit that gets split and reassembled. If the system doesn’t know the conversion rules, stock will drift mathematically — no theft required.

Look-alike items and mis-picks. Two nearly identical SKUs that staff confuse. The total is correct, but per SKU one shows a surplus and the other a shortage.

Timing lag. A sale is logged today, a delivery tomorrow, a return the day after. If the records don’t work in real time, any “as of now” snapshot lies simply because of the delay.

Returns, damage, write-offs, display. Goods physically left the warehouse but weren’t recorded in any column. Broken, spoiled, taken for a photoshoot, borrowed “to try” — all real movement the records never see.

Notice: there’s almost no “malice” on this list. Most of the time, stock doesn’t match records because of gaps in the process, not because of people.

Why a stock count alone won’t save you

The most common response to a discrepancy is to schedule another count. That’s useful as a one-time reconciliation, but as a cure it fails for a simple reason: a count captures the state at a single moment, while the hole in the process works every day. You align the numbers on Monday — by Friday, fresh drift has flowed through the same gaps.

Worse, frequent manual counts are expensive. They mean halting the warehouse, dozens of person-hours, and eventually a habit of “adjusting” numbers to match reality without asking why. Once adjustment becomes routine, you’ve effectively abandoned the records — you’re keeping two independent descriptions of reality and periodically rewriting one to match the other.

What to do: remove the cause, not the symptom

The right logic is to make sure every movement of goods is recorded once, immediately, at the moment it physically happens. Here’s where we usually start.

One source of truth. The warehouse, the till and sales must all look at one stock database, not three different ones. As long as a company keeps several parallel descriptions of its goods, they will diverge mathematically — inevitably.

Write off at the moment of the event. Sales, returns, damage, transfers — all recorded when they physically occur, not “at end of day.” Ideally the same process that hands over the goods also records it: rung up at the till, written off from stock automatically, with no separate second step.

Remove manual duplication. Every place a person copies a number from one medium to another is a candidate for automation. Receive against the invoice, not the notebook. Scan, don’t type SKUs by hand.

Capture the non-obvious movement. Display units, samples, spoilage, gifts — each needs its own write-off button. Anything without a column always vanishes into “shortage.”

A trail for every operation. The system should keep who changed what and when. Then a discrepancy stops being detective work and becomes a five-minute question: you can see exactly where movement parted ways with the records.

With those in place, a stock count turns from a rescue operation into a calm, planned reconciliation that lands near zero every time. That’s the sign the cause is gone.

Where to start in your case

There’s no universal recipe — a desync at a retail point and at a wholesale warehouse have different sources. So we don’t recommend “just install software” first. Start by walking your real path of goods, from receiving to handover, and marking the points where movement slips out of the records’ view. That’s where the numbers that don’t add up are hiding.

We work with our own infrastructure and take the system on for ongoing support, so your records won’t be left to fend for themselves after rollout. If your stock regularly disagrees with your records and you’re tired of adjusting it by hand, start with a short conversation. Describe your process, and together we’ll find exactly where it leaks and close the cause, not the symptom.