← All resources
How-ToJuly 28, 20269 min read

On Hand vs Available vs Committed: The Stock Numbers Online Sellers Confuse

On hand, committed, available, and on order are four different stock numbers, and only one is safe to sell from. Here is what each means and how to stop overselling.

By Robbie Thomas

Every stockout apology email you have sent started with a number that was technically correct.

The count was right. The shelf really did have twelve units when someone checked. And you still sold something you could not ship, refunded a customer who was already irritated, and took the hit on a marketplace metric that takes months to repair.

Overselling gets blamed on sloppy counting. It usually is not that. Most small stores that oversell have accurate inventory and get caught anyway, because there is more than one stock number and they are publishing the wrong one.

On hand, committed, available, and on order are four different numbers. Only one of them is safe to sell from.

On hand: what you physically own#

On hand is the total number of units in your possession right now, counted across every location you hold stock in. It is the number that matches reality when someone walks into the stockroom with a clipboard, and it is the number most owners mean when they say "we have twelve."

It is also the number most likely to be sitting on your product page, which is the problem.

On hand is an ownership figure, not a sales figure. It counts units boxed and labelled for an order going out this afternoon. It counts the six you set aside for a wholesale customer who confirmed last week. It counts stock in a warehouse you are not shipping this order from. Every one of those units is genuinely yours, and none of them is genuinely for sale. Treating on hand as your sellable number is the single most common setup error behind overselling, and it survives every stock count you do, because the count keeps agreeing with you.

Committed: stock that already belongs to someone else#

Committed inventory is stock still sitting on your shelf that has already been promised to a specific order. It has not shipped, so it still counts toward on hand, but it is no longer yours to sell.

One naming note before we go further, because it trips people up when they move between tools. Shopify calls this committed. Most inventory and ERP systems, including BizPro-Vision, call it reserved. Same number, same job, different label. If you have ever wondered why your storefront and your back office seem to describe stock differently, this is often why.

It comes from more places than most people expect:

  • Unfulfilled orders. Paid, confirmed, not yet picked or shipped.
  • Draft orders. Quotes and manual orders you built for a customer who has not paid yet.
  • Manual holds. Stock set aside for a wholesale deal, a repeat buyer, or a rep's pipeline.
  • Backorders. Units already sold against a supplier delivery that has not landed.
  • Picked but not dispatched. Stock allocated to a delivery note that is packed and waiting on the courier.

Committed is the bridge between a sale happening and stock physically leaving the building, and it is where overselling hides. If your system does not commit units the moment an order is placed, those units stay visible as sellable to the next person who lands on the page. You have not miscounted anything. You have sold the same unit twice.

Available: the only number safe to sell from#

Available is what is left once you take out everything already spoken for. That is the whole formula:

Available = On hand − Committed

Run it on a real product. You have twelve units of one SKU on hand. Three are attached to orders that have not shipped yet. Your available stock is nine.

Nine is the number that belongs on your storefront. Twelve is the number that generates an apology email.

Available stock

Only one of these is safe to sell from.

One product, twelve units on the shelf.

Twelve units are on hand. Three of them are committed to unfulfilled orders and are still on the shelf. The remaining nine are available to sell. A further twenty-four units are on order from a supplier and are not on the shelf at all.

Committed, not yours to sellAvailable

On hand 12 − committed 3 = available 9

On handPhysically on your shelf12
CommittedAlready promised to an order3
AvailableSafe to sell9
On orderArriving, not on your shelf24
Twelve units on hand, split into what is already spoken for and what is genuinely sellable. The three committed units are still physically on the shelf, which is exactly why a stock count keeps confirming twelve. The twenty-four on order are not on the shelf at all. Available is the only one of the four numbers a customer should ever see.

Here is the part that reframes everything, and it is worth sitting with. When you make a sale, your on hand count does not change. Nothing has left the building yet. What actually happens is that units move from available to committed: available drops by three, committed rises by three, and the two still add back to twelve.

That is why on hand is the least useful of the four numbers day to day. It only moves when stock physically arrives or physically ships. Available moves every time you sell, which is exactly why it is the number worth watching, and the number a well-built system treats as the real one with on hand reconstructed from it.

On order: stock that is not yours yet#

The fourth number is the one people forget until it hurts. On order is stock you have purchased but not received, sitting on a supplier's purchase order with an expected arrival date.

It is not on your shelf and it is not sellable. What it does is tell you whether a stockout is temporary or real. If you are out of stock with forty units landing Thursday, you can take backorders with an honest ship date instead of turning a customer away or quietly losing the sale. Knowing what is inbound is also what stops panic reordering on a product that already has stock in transit.

The trap is letting on order drift into what you promise. Supplier dates slip, containers sit at port, and units are not truly yours until they arrive and are received in. Treat it as planning information, never as sellable stock.

Why the numbers drift apart#

A number that was correct this morning can be wrong by lunchtime. Five things cause the drift, and none of them is a counting problem.

  • Batch syncing. This is the big one. If your channels reconcile stock every fifteen minutes, every hour, or overnight, then every order placed in the gap is processed against a count that is already out of date. The faster you sell, the more orders land inside each gap, so this gets worse exactly when a product starts doing well.
  • Multiple channels, multiple counts. Each platform holds its own number and none of them knows about the others. Twelve units listed on two storefronts reads as twelve on each, so twenty-four look sellable when you own twelve. Shopify handles this cleanly inside its own ecosystem but does not natively sync with Amazon, Etsy, Walmart, or even a second Shopify store, so anything outside that boundary is on you to reconcile.
  • Drafts and holds that never expire. A quote you built in March is still holding six units in July. Committed stock with no release date slowly starves your available number until you are showing zero on a product sitting in a full box.
  • Returns that come back late. A refunded unit is back on your shelf physically but often not back in the system for days, which quietly understates what you could be selling.
  • Manual adjustments nobody logs. Damaged stock written off in someone's head, samples that walked, a unit pulled for a photoshoot. Each one is small and each one moves on hand without moving anything else.
Batch sync

The count was never wrong. It was late.

One product, fifteen minutes, stock syncing on a schedule.

A product with forty units in stock, syncing every fifteen minutes. At 9:00 the storefront and the real count both show forty. Four orders arrive between 9:04 and 9:13, for nine, fourteen, eleven, and eighteen units. The storefront keeps showing forty the entire time because it has not synced, while the real remaining stock falls to thirty-one, seventeen, six, and then minus twelve. Fifty-two units were sold against forty in stock, so the last order oversells by twelve. The 9:15 sync finally reports minus twelve, after the damage.
TimeWhat happenedStore showsReally left
9:00Stock syncChannels agree4040
9:04Order #10419 units4031
9:07Order #104214 units4017
9:11Order #104311 units406
9:13Order #104418 units, only 6 left to ship40−12
9:15Stock syncToo late−12−12
Units you had40
Units you sold52
Oversold12
One product, fifteen minutes, stock syncing on a schedule. Each order is processed against the count from the last sync rather than the count as it stands, so the fourth order clears against stock that was already gone. Nothing was miscounted at any point on this timeline.

If you recognize most of this list, the underlying issue is usually not any single one of them. It is that stock, orders, and books live in separate tools that reconcile on a schedule instead of sharing one number, which is the same root cause behind most of the symptoms that tell you a business has outgrown spreadsheets.

How to close the gap#

Five changes, roughly in order of how much they buy you.

  1. Publish available, never on hand. Check what your storefront is actually pulling. This is a configuration question with a five-minute answer, and for a single-channel store it fixes most of the problem on its own. A properly built integration pushes the available figure to your storefront, not the shelf count.
  2. Commit stock at the moment of order, not at fulfillment. If units only leave your sellable pool when someone picks them off a shelf, you have built a window where the same unit can be sold repeatedly. The commit has to happen when the order line is created.
  3. Give every channel one shared pool. One master stock record, one available number, pushed everywhere you sell. This is the change that actually fixes multi-channel overselling, because it removes the possibility of two counts disagreeing rather than trying to keep them in step. For most small stores that means the store, the warehouse, and the accounting side all reading from the same place instead of stock living in one tool and the books living in another.
  4. Put an expiry on drafts and holds. Any committed stock with no shipping date should release after a set window. Otherwise your available number bleeds without anyone deciding it should.
  5. Use buffers as a safety net, not a strategy. Holding back two units on every SKU hides the symptom at the cost of stock you are choosing not to sell. It is a reasonable patch while you fix the timing. It is an expensive permanent policy, especially on the slow-moving lines where you can least afford stock that sits.

Where this leaves you#

Overselling feels like a discipline problem, which is why the instinct is to count again, tighten the process, and tell someone to be more careful. But the count was never the issue. Four numbers describe your stock, they answer four different questions, and a business gets into trouble the moment it starts using the wrong one to make promises to customers.

Getting this right is mostly structural. One place where a unit is committed the instant it sells, one available number every channel reads, and no window where two systems disagree about what you have. That is the gap we are building BizPro-Vision to close for retail and ecommerce businesses: sales, purchasing, inventory, and accounting in one platform, with Shopify and WooCommerce reading from the same stock record rather than keeping their own. We're launching soon, so join the waitlist and lock in 50% off your first year when we open.

Frequently asked questions

What is the difference between on hand and available inventory?+

On hand is the total number of units physically in your possession, counted across every location you store stock in. Available is what is left after you subtract everything already promised to someone else, which is your committed inventory. The formula is simple: available equals on hand minus committed.

The difference matters because on hand is the number that feels true when you walk into the stockroom and count boxes, but it is not the number a customer can safely buy from. If you have twelve units on the shelf and three are already attached to unfulfilled orders, your on hand is twelve and your available is nine. Publishing twelve to your storefront is what creates an oversell.

On hand answers what you own. Available answers what you can still sell. Only the second one belongs on a product page.

What does committed inventory mean?+

Committed inventory is stock that is still physically on your shelf but has already been promised to a specific order. It has not shipped yet, so it still counts toward your on hand total, but it is no longer yours to sell. Shopify calls this committed. Most inventory and ERP systems, including BizPro-Vision, call the same thing reserved, and the two words mean exactly the same number.

The usual sources are unfulfilled paid orders, draft orders you built for a customer, manual holds for a wholesale deal, backorders waiting on a supplier, and stock picked onto a delivery note that has not shipped. Committed is the bridge between a sale happening and stock leaving the building, and it is where most overselling hides, because a system that does not commit units at the moment of sale keeps showing them as sellable.

Why does my store oversell when my inventory count is correct?+

Because accuracy and timing are different problems. A count taken this morning can be perfectly correct and still be wrong by lunchtime if orders arrive faster than your systems talk to each other. The most common cause is batch syncing: if your channels reconcile stock every fifteen minutes, every hour, or overnight, then every order placed in between is processed against a number that is already out of date.

The second most common cause is selling on more than one channel where each channel holds its own count. Twelve units listed on two storefronts reads as twelve on each, so twenty-four look sellable when you own twelve. Neither of these is a counting error. Both are timing errors, which is why recounting the stockroom never fixes them, and why the real fix has to happen in how your systems share one number.

How do I calculate available inventory?+

Start with your on hand count for a single product at a single location, then subtract every unit already spoken for. Available equals on hand minus committed. Committed includes unfulfilled orders, draft orders, manual holds, backorders, and stock picked onto a delivery note that has not shipped.

If you hold stock in more than one place, calculate it per location first and then decide whether you sell from a combined pool or from one location at a time, because a combined number can promise a customer stock that sits in a warehouse you will not ship this order from.

The number you publish on your storefront should always be the available figure, never the on hand figure. If you are doing this in a spreadsheet the subtraction is easy, but keeping it current is not, and it will drift.

What does on order mean in inventory?+

On order is stock you have bought but not yet received. It sits on a purchase order your supplier has not delivered, so it is not on your shelf and not sellable, but it is committed spend with an expected arrival date.

It matters because it tells you whether a stockout is temporary or real. If you are out of stock with forty units landing Thursday, you can take backorders with an honest ship date instead of turning the customer away or quietly losing the sale.

The mistake is letting on order creep into what you promise. It is not available stock, it should never be published to a storefront as though it were, and supplier dates slip often enough that units are not truly yours until they physically arrive and are received in against the purchase order.

Does Shopify prevent overselling?+

Partly. Shopify tracks committed inventory and shows on hand, committed, and available separately, and within its own ecosystem it decrements stock as orders come in. What it does not do is keep your stock aligned with channels outside itself.

Shopify does not natively sync inventory with Amazon, Etsy, Walmart, or even a second Shopify store, so if you sell anywhere else, each platform holds its own count and none of them knows about the others. That is the gap where multi-channel overselling happens, and it is not something a setting inside Shopify closes.

If you sell on one storefront only, Shopify's own numbers are usually enough. The moment you add a second sales channel, a physical location, or a wholesale order book, you need one system holding the master stock record and pushing the same available number everywhere.

Get early access

BizPro-Vision is launching soon. Join the waitlist and be first in line when we open.

Lock in 50% off for a year