If the last unit sells in your shop while a customer is buying it on the website, or stock keeps showing −2 at one location, start by checking four places where the mismatch can happen: a sale that never reached the system, an online order assigned to a location that didn't have enough, a setting that allows selling at zero, or a till that lets staff sell what the system says isn't there. Each needs a different fix, so work out which one you have before you start correcting numbers by hand every night.
An oversold order can mean a refund, an apology email and a poor experience for the customer.
Four different problems that all look like "overselling"
Online stock that the website can't see properly. The online store sells against a figure it calculates from the locations allowed to fulfil online orders. If that figure is too high, the website takes orders you can't ship.
Physical stock that changed without anyone recording it. A sale at a market stall written in a notebook, a breakage, a gift to a supplier. Until somebody enters it, every system you have is counting units that are gone. No setting fixes this; only a habit does.
Stock split across several locations. You have enough in total but not enough in one place, and the order is sent to a location that's short.
Overselling you've allowed by configuration. Selling at zero is switched on for a product, or your till lets staff sell past zero. Sometimes that's deliberate (preorders); sometimes it was switched on by mistake.
The rest of this guide uses Shopify, because its help pages spell out how each of these works. The same four questions apply on any platform.
What each stock number means
Shopify shows several quantities per product and location. In plain words:
| Number | What it is |
|---|---|
| On hand | Every unit physically at that location: Available + Committed + Unavailable |
| Available | Units you can sell right now |
| Committed | Units already promised: in unfulfilled orders, reserved for a draft order, or in a transfer ready to ship |
| Unavailable | Units at the location that you've set aside: damaged, in quality control, safety stock |
| Incoming | Units on their way from a transfer, purchase order or app; not sellable until received |
When you correct a count, know which number you're changing. Editing On hand changes Available by the same amount, and the reverse is also true. If you count 12 units on the shelf and 3 are packed for orders that haven't shipped yet, On hand is 12 and Available should be 9.
How an online order picks a location
This is the first place to look when you had enough stock in total and still went negative. Shopify's location fulfilment page describes the default behaviour:
- if one location can fulfil the whole order, the order goes there;
- if none can, the order is split across locations, or the highest-priority location oversells;
- by default, a single line item is not split between locations.
Shopify's own example: Location A is first priority and has 1 shirt; Location B is second and has 2. An order for 2 shirts goes to B, which has enough. An order for 3 shirts goes to A, which ends at −2.
The website accepts the order for 3 shirts because, with selling at zero switched off, Shopify shows a product as out of stock based on the total online quantity across all locations that fulfil online orders. Three shirts exist in total, so the order goes through, and only then does routing look for one place to send it.
So a negative at your top-priority location may not be a counting error. It's the system doing what it's set to do with stock that's spread too thinly. Fixes, in order of effort:
- Move stock so the locations that fulfil online orders each hold enough of your fast sellers.
- Stop locations that shouldn't ship online orders from counting towards the online total (next section).
- Review your order routing rules. Shopify's routing includes rules such as shipping from the closest location and minimising split fulfilments; a different ranking may suit your stock better.
The three settings to check
Selling when out of stock
On Shopify this is the Continue selling when out of stock option in each product's or variant's inventory section. It only works when inventory tracking is on, and it lets customers keep buying at zero and below. It's useful for preorders. It's a problem when someone ticked it on a product that isn't a preorder, or when it was left on after a preorder product came back into normal stock. Go through your products and switch it off everywhere you don't take preorders.
If inventory tracking is off for a product, Shopify isn't counting it at all, so check that too.
Which locations fulfil online orders
A back room, a stall or a storage unit may hold stock you never intend to ship. In each location's settings there's a toggle for using its inventory to fulfil online orders. Switching it off removes that location's stock from the online quantity, which is also the number shown to customers if you display stock levels. Shopify notes that the location's stock can still be used for draft orders and orders from other sales channels, so check how each channel you sell on handles inventory.
Selling at zero on the till
Continue selling when out of stock doesn't apply to Shopify POS. Staff can carry on selling when available stock reaches zero or below; POS shows a warning first. That's sensible for a shop — the customer is holding the item, so the count is clearly wrong — but every such sale creates a negative that someone has to explain later.
Make it a rule that a warning on the till means the count is wrong: the staff member finishes the sale and leaves a note, and the count is corrected at the end of the day.
What happens when you sell in the shop
A POS sale uses available inventory from the location where the sale is made, and the count for that location updates. That's all Shopify's docs promise, so think it through for your own setup:
- If your shop location is also set to fulfil online orders, its stock is part of the online total. A shop sale lowers that location's count. If an online order has already committed the last unit, that unit is no longer Available, and POS warns staff before they sell an item that isn't available.
- If your shop location doesn't fulfil online orders, a shop sale doesn't touch the stock the website sells from, but you'll need transfers to move stock between the two.
- If you sell anywhere without recording it in the system — a market stall, a phone order taken on paper — Shopify can't know, and no setting will explain the gap.
For a shop with a small amount of stock per product, one option is a single location that does both, with safety stock held back from online sale.
Hold back safety stock
If you have 3 units and the shop sells them fast, don't offer all 3 online. Move one or two to Unavailable. Shopify lists safety stock as a reason for Unavailable inventory, and units in that state are at the location but not sellable.
A simple rule: for anything that sells in both channels, keep one unit back for each sale the shop typically makes between the moment an online order arrives and the moment you pack it. If you pack the same day and the shop sells one a day, that's one unit. Review it when your packing time changes.
A short routine that keeps counts honest
Daily, after closing:
- Look for any product with negative stock at any location.
- For each one, find the order or till sale that took it below zero and decide: is the count wrong, or did you really sell something you don't have?
- If you oversold, contact the customer the same day with a date or a refund.
- Enter any sales or breakages that weren't recorded during the day.
Weekly:
- Count your fastest sellers by hand at each location and correct On hand.
- Check that nothing new has Continue selling when out of stock switched on by mistake.
- Receive any incoming transfers that have arrived but are still listed as Incoming.
Shopify suggests making inventory corrections when your shops are closed and you're not running a big online sale, so the counts don't move while you're fixing them.
When the till is the missing piece
If the shop takes payments on a separate card terminal and staff update stock by hand later, the gap between a shop sale and the website finding out is however long "later" turns out to be. Shopify POS records the sale against the shop's location at the moment it happens, which closes that gap. It won't stop staff selling at zero, as described above, and it only helps if every sale goes through it. If your stall takes cash with no device, the evening routine is still your fix.
If your stock is managed outside the store — a warehouse system or a fulfilment company — decide which system holds the true count and make every other system follow it. Two systems that both think they're in charge produce exactly the negatives you're trying to stop.