A stock screen can show 20 units and still leave a shop assistant unable to answer a simple question:
"Can I sell one now?"
That is because 20 can mean several different things.
Some units may be physically in the shop but already attached to customer orders. Some may be damaged. Some may be waiting for a quality check. Another delivery may be on the road, but not yet at the store. A return may be behind the counter, although nobody has decided whether it can go back on sale.
The total can be mathematically correct while the operating answer is wrong.
For a small retailer, stock control improves when every important quantity answers one clear question. What have we agreed to buy? What is moving towards us? What have we physically received? What can we sell? What have we promised? What came back? What was lost? What did someone adjust, and why?
That is the difference between counting products and controlling inventory.
One number is trying to do too many jobs
The phrase "in stock" sounds precise.
In practice, it can hide most of the decisions a retailer needs to make.
A buyer wants to know what has been ordered and when it should arrive.
A shop assistant wants to know what can be sold now.
An online-order team wants to know what has already been committed.
A manager wants to know what is damaged, missing, or awaiting inspection.
The owner wants to know why today's count differs from yesterday's.
If all five people look at the same total without clear definitions, each person can interpret it differently. That is how an ordinary stock movement becomes an oversold item, a duplicate order, an avoidable refund, or another manual recount.
Shopify's current inventory model illustrates the distinction. It separates on-hand stock from available, committed, unavailable, and incoming quantities. In that model, on hand is everything physically at a location. It can include units that are available to sell, committed to orders, or unavailable because they are reserved, damaged, under quality control, or held as safety stock.
The practical lesson is not that every retailer must copy one platform's labels.
It is that one number should not be expected to answer incompatible questions.
A practical stock-state control map
You do not need dozens of statuses. You need enough separation to stop one unit being treated as if it were in two places at once.
1. Ordered
Ordered stock records the commercial decision to buy.
It answers:
- what did we ask the supplier for
- at what agreed cost
- on what date
- for which location
- when do we expect it
Ordered does not mean physically owned, received, or available to sell. A supplier can ship less, substitute an item, delay the order, or cancel a line.
Treating an order as available stock creates false confidence before anything has moved.
2. Incoming or in transit
Incoming stock is moving towards a location.
It answers:
- what has actually been dispatched
- what quantity is expected in this shipment
- where is it going
- when should it arrive
- is the shipment complete or partial
This state matters because an order and a shipment are not the same record. One purchase order can arrive in several deliveries. A transfer between two stores can leave one location before reaching the other.
Incoming stock helps purchasing decisions, but it should not be promised as immediately sellable.
3. Received
Received means the goods physically arrived and someone checked them.
The receiving step should answer:
- what quantity arrived
- what quantity was accepted
- what was rejected or short
- whether the correct variants arrived
- whether anything was damaged
- who completed the check
Shopify's purchase-order guidance separates the purchase agreement from physical movement. When stock arrives, the operator confirms, evaluates, accepts, or rejects the goods. Accepted quantities can become available. Rejected quantities do not.
That distinction prevents an expected quantity from silently replacing the quantity that actually arrived.
4. On hand
On hand means the item is physically at the location.
It does not automatically mean the item can be sold.
A useful control equation is:
`On hand = available + committed + unavailable`
The labels can differ between systems, but the logic matters. An item can be in the building and still be reserved, damaged, held for inspection, or otherwise blocked from sale.
5. Available
Available stock is what the store can confidently sell now.
This is the number that should support checkout and availability promises.
It excludes stock that is:
- still incoming
- already committed to an order
- reserved for another purpose
- damaged or unsafe
- awaiting a return inspection
- missing during a count
If a retailer has 12 units on hand, three committed to orders, and one damaged, the useful available quantity is eight. Showing 12 at checkout may be technically tied to a real physical count, but it creates a false selling promise.
6. Committed or reserved
Committed stock has been promised to a customer or order but has not completed the final fulfilment step.
This can include:
- a paid online order awaiting dispatch
- a Click and Collect order awaiting pickup
- a confirmed order awaiting packing
- stock deliberately reserved for a customer
Committed stock needs an exit rule. It should move to fulfilled when the customer receives it, or return to available when the order is validly cancelled and the item is still sellable.
Without that rule, reservations become invisible stock traps.
7. Returned, pending inspection
A return is not automatically available stock.
The item may be unopened and perfect. It may also be incomplete, used, damaged, incorrectly labelled, unsafe, or suitable only for supplier return.
The safer workflow is:
1. Record the return.
2. Place the unit in a pending-inspection state.
3. Check condition, completeness, packaging, and policy requirements.
4. Move it to available, damaged, repair, quarantine, or supplier return.
5. Record who made the decision and why.
This small pause protects the next customer from buying a product that should never have returned to the shelf.
8. Damaged or otherwise unavailable
Unavailable stock is physically present but blocked from sale.
Reasons may include:
- damage
- quality control
- safety hold
- missing parts
- display use
- internal use
- samples
- spoilage or waste
The reason matters. "Unavailable" without a cause becomes another holding area nobody reviews.
9. Lost, stolen, or missing
When a product cannot be found, the count needs more than a silent reduction.
Loss, theft, scanning mistakes, receiving errors, and counting errors have different operational consequences. Recording the reason helps a retailer see whether the same SKU, location, shift, or workflow keeps creating exceptions.
Square's documented adjustment reasons include recount, damage, theft, loss, restock return, spoilage, internal use, and samples. The important principle is that a quantity change carries an explanation.
10. Adjusted or reconciled
An adjustment is an event, not a permanent stock state.
It records the correction that moves the system back towards reality.
Every meaningful adjustment should capture:
- SKU and variant
- location
- previous quantity
- new quantity
- difference
- reason
- staff member
- time
- supporting note when needed
Without that record, the number changes but the business learns nothing.
The movement matters as much as the state
A clean label tells staff where stock is now. A movement history explains how it got there.
The normal path might look like this:
`Ordered -> Incoming -> Received -> Available -> Committed -> Fulfilled`
But retail is rarely that tidy.
A realistic system also needs controlled exception paths:
- Received -> Rejected
- Available -> Damaged
- Available -> Missing -> Adjusted
- Returned -> Pending inspection -> Available
- Returned -> Pending inspection -> Damaged
- Committed -> Cancelled -> Available
These transitions are where stock accuracy is won or lost.
If staff can change the number but cannot record the movement, the system may look correct today and become impossible to explain tomorrow.
What unclear states cost a small retailer
The obvious cost is overselling.
The less visible costs are often larger:
- purchasing stock that is already incoming
- promising stock that is already committed
- returning damaged goods to sale
- missing supplier shortages at receiving
- leaving cancelled reservations trapped
- repeatedly recounting the same products
- losing confidence in reports
- creating spreadsheets and staff workarounds
Once staff stop trusting the meaning of a quantity, they start checking the shelf before answering the customer.
That manual check may prevent one mistake. It also reveals that the system is no longer doing its job.
A small-retailer implementation plan
Do not begin by inventing a complicated state machine for every SKU.
Start with the products and movements that create the most operational pain.
Define the minimum shared vocabulary
Agree what these words mean in your store:
- ordered
- incoming
- received
- on hand
- available
- committed
- returned pending inspection
- unavailable
- adjusted
Write the definitions down. If two staff members can interpret a label differently, the label is not yet a control.
Assign one trigger to each movement
Decide what causes stock to move between states.
For example:
- supplier dispatch changes ordered to incoming
- receiving and acceptance changes incoming to available
- confirmed customer order changes available to committed
- fulfilment changes committed to sold
- return intake changes sold to pending inspection
- inspection changes the return to available or unavailable
Require reasons for exceptions
Normal sales can be automatic.
Exceptions need a reason.
Require a reason for damage, loss, theft, waste, internal use, recounts, and manual corrections. Keep the list short enough that staff will use it, but specific enough to reveal patterns.
Protect permissions
Not every team member needs the ability to rewrite a stock count.
Use permissions that match responsibility. Front-line staff may record a return or flag damage. A supervisor may approve a large adjustment. The owner may review unusual corrections.
The goal is not suspicion. It is a clear audit trail.
Review exceptions weekly
Do not recount the whole shop every week.
Review the products with:
- repeated manual adjustments
- unresolved incoming quantities
- old committed stock
- returns awaiting inspection
- high damage or loss
- large differences between expected and counted quantity
Exception-led review directs attention to the places where the process is actually breaking.
The stock-state checklist
Before trusting a stock number, ask:
- Can we separate ordered stock from dispatched stock?
- Can we see incoming stock without treating it as sellable?
- Does receiving record accepted, rejected, and partial quantities?
- Can staff distinguish on-hand from available stock?
- Does a customer order reduce available stock at the right moment?
- Do cancelled commitments return stock correctly?
- Are returns inspected before becoming available?
- Can damaged, lost, stolen, and internal-use stock carry distinct reasons?
- Does every manual adjustment show who changed what and why?
- Can we review unresolved exceptions without exporting another spreadsheet?
If those answers are unclear, the problem is not merely an inaccurate number. It is an inventory system that cannot explain its own number.
Where EzyCarto fits
The design principle behind EzyCarto is that small retailers should not have to stitch together several partial truths to understand the store.
POS, product records, inventory movements, and operating visibility should support one connected picture. A sale should have a stock consequence. A return should have a clear route. An adjustment should have a reason. Staff should be able to see what can be sold without becoming the reconciliation engine themselves.
That is the useful standard for retail software: not simply more inventory features, but clearer control over how stock moves through a normal, messy week.
For related guidance, read [Stockouts Are Not Always Demand Problems](https://ezycarto.com/blog/stockouts-are-not-always-demand-problems), [When the Online Store and the Till Need the Same Stock Truth](https://ezycarto.com/blog/when-the-online-store-and-the-till-need-the-same-stock-truth), and [The POS Wish List Is Not the Same as a Store System You Can Trust](https://ezycarto.com/blog/the-pos-wish-list-is-not-the-same-as-a-store-system-you-can-trust).
The better stock question
Do not stop at:
"How many do we have?"
Ask:
"How many can we sell, what happened to the rest, and can the system explain the difference?"
That is a stock number a retailer can act on.
Sources
- [Shopify: Understanding inventory states](https://help.shopify.com/en/manual/products/inventory/fundamentals/inventory-states)
- [Shopify: Creating an inventory transfer for your purchase order](https://help.shopify.com/en/manual/products/inventory/purchase-orders/creating-inventory-transfers)
- [Square: Create and manage custom inventory adjustment reasons](https://squareup.com/help/us/en/article/8670-create-and-manage-custom-inventory-adjustment-reasons)
- [Reddit discussion: New purchase order and transfer system](https://www.reddit.com/r/shopify/comments/1tm82hq/new_purchase_order_and_transfer_system/)
- [Reddit discussion: Returns, exchanges, and inventory](https://www.reddit.com/r/shopify/comments/1ol6qnf/struggling_with_returns_exchanges_and_inventory/)
CTA
See how EzyCarto is bringing POS, inventory movements, and retail visibility into one clearer operating workflow.
