Every business that's grown past a single till has, at some point, sold something it didn't actually have. A customer walks out with an item, and the system finds out it was already gone an hour later.
The usual response is a warning dialog: "Low stock — continue anyway?" Which someone, eventually, always clicks through.
A warning isn't a rule
The fix isn't a better warning. It's making the sale itself impossible to complete if the stock isn't there — checked against the exact warehouse the sale is shipping from, at the moment of sale, not against a cached total from this morning.
That means:
- Stock is tracked per warehouse, not as one aggregate number across every location.
- A sale can't be finalized if it would take any warehouse's quantity below zero.
- The number shown on screen is the number checked at checkout — no gap between what's displayed and what's enforced.
- The rule applies the same way whether the sale is one unit or fifty, and whether it's the first sale of the day or the hundredth.
A worked example: the sale that shouldn't complete
Say a customer at the till wants to buy three units of an item, and the screen shows two in stock at that warehouse. With a warning-based system, the cashier sees "low stock — continue anyway?", assumes it's probably fine, and clicks through. The sale completes, the till balances for the moment, and the shortfall only surfaces later — when a different customer is promised the same two units that were never really available.
With a hard invariant instead, the sale simply can't be finalized for three units when only two exist at that warehouse. The cashier has to either reduce the quantity, check another warehouse if the business has one, or tell the customer honestly that the third unit isn't available yet. It's a slightly less convenient moment at the till — and a far less costly one an hour later.
Common mistakes that lead to overselling
- Relying on a warning dialog as the actual control. A warning that can be dismissed isn't a rule — it's a suggestion, and busy staff will click past it.
- Checking stock against a total that isn't warehouse-specific. A company-wide number can look fine while the specific location a sale ships from is already empty.
- Trusting a number that was last refreshed this morning. Stock checked at checkout has to reflect what's true right now, not a snapshot from before the day's other sales happened.
- Assuming it only matters for high-volume items. A single oversold unit on a slow-moving product still means one disappointed customer and one manual correction someone has to make later.
Where overselling quietly starts
Overselling rarely begins with one obviously bad decision. It usually builds up from a handful of everyday habits:
- A "just this once" exception that becomes routine. The first time someone overrides a low-stock warning for a good reason, it's an exception. By the tenth time, it's how the till actually works.
- A stock count that's trusted more than it should be. A number that was accurate this morning is treated as accurate all afternoon, even after a dozen sales have moved against it.
- Multiple sales channels checking different numbers. A till, a phone order line and an online store that each look at their own copy of "current stock" will eventually disagree with each other.
- No single, obvious place to check before promising stock. If staff have to guess which system, sheet or memory to trust, they'll often just promise the sale and hope.
Each of these is a small, reasonable-sounding habit on its own. Together, they're exactly how a business ends up selling something it doesn't have.
What a hard invariant looks like across the whole business
A rule that only applies at the till isn't really a rule — it's a habit that happens to be enforced in one place. To actually prevent overselling, the same check needs to apply everywhere a sale can be recorded:
- At the point-of-sale counter, the same as everywhere else.
- On a phone order taken by a member of staff who isn't standing near the stock.
- On any online storefront connected to the same inventory.
- On a quote or invoice that later gets converted into a completed sale.
If any one of these paths can bypass the check — even a rarely used one — it becomes the exact path overselling will eventually happen through. The rule only holds if it holds everywhere, not just at the counter customers can see.
Why this matters more as you add warehouses
A single-location shop can get away with a spreadsheet and a careful eye. The moment you have two or more warehouses, "current stock" stops being one number — it's a number per location, and someone has to know which location a sale is actually shipping from before promising it to a customer. See what changes once a second warehouse enters the picture for more on that specific shift.
That's the exact point where manual tracking quietly breaks, usually without anyone noticing until a customer does.
Quick answers about preventing overselling
- Isn't a low-stock warning enough? Not on its own. A warning can be dismissed under pressure at a busy till, which means it only works as well as the least careful person clicking through it that day.
- Does this slow staff down at checkout? Not meaningfully — the check happens at the same moment the sale is already being finalized. What it removes is the ability to complete a sale the business genuinely can't fulfil.
- Does this apply to online or phone orders too, or just in-person sales? The same rule should apply everywhere a sale is recorded, since a customer promised stock over the phone is just as disappointed as one at the till if it isn't actually there.
- What if two customers try to buy the last unit at almost the same moment? Whichever sale is actually finalized first should take the stock; the second attempt should be blocked at that point, the same way it would be if the stock had genuinely already sold minutes earlier.
- Does preventing overselling mean staff can never sell an item that's technically out of stock, even with a customer's agreement (a back-order, for example)? That's a different, deliberate transaction — a back-order or pre-order — not the same thing as a sale silently completing against stock that isn't there. The two should be kept clearly separate, not blurred together.
Replacing inFlow On-Premise? Read what to check in an inFlow Inventory alternative first.
See how warehouse stock works in IDP, check current plans on the pricing page, or talk to us about your specific setup.
