One shelf, three sales channels: how to stop selling the same stock twice
A wholesale order, a website checkout and a marketplace sale can all reach for the same ten units. Clear reservation rules prevent three promises becoming two apologies.
AI-generated illustration.
At 9:00, the warehouse has ten units. At 9:02, a wholesale customer asks for eight. At 9:03, the website sells three. The shelf count was correct; the promises were not.
Overselling across channels often begins with a definition problem. “In stock” might mean physically present, available to promise, reserved for an order or already being picked. If every screen uses the same number for all four, faster synchronisation alone will not solve the confusion.
Decide which units can be promised
A useful available quantity starts with saleable physical stock and subtracts firm allocations, operational holds and any deliberate buffer. Damaged goods awaiting inspection should not be included simply because they occupy a warehouse location.
Incoming stock needs its own status. A supplier confirmation is different from goods received and checked. You may choose to sell against incoming quantities, but the customer promise should reflect that choice and the expected date. Quietly mixing inbound and ready-to-dispatch stock makes every channel less trustworthy.
For a simple example, 100 units on the shelf minus 35 committed to accepted orders, five under inspection and a ten-unit buffer leaves 50 available for new promises. The buffer is a business decision, not a universal recommendation. Set it against your actual delay and error exposure.
A quotation should not hold stock forever
Wholesale selling creates a particular complication: customers often request a quote before they commit. Reserving every quoted quantity indefinitely can make healthy stock appear unavailable. Reserving nothing can leave the sales team unable to honour an offer.
Separate a provisional hold from a confirmed allocation. Give the hold an expiry time, an owner and a clear reason. Tell the customer whether availability is secured and until when. When the hold expires, release it unless someone deliberately extends it.
Agree the event that creates a firm allocation. It might be acceptance of an order after the required account checks, or payment for a prepaid customer. The event should be explicit enough that two employees make the same decision without negotiating each order from scratch.
Allocate before the second channel can claim it
When orders reach a shared stock system, each accepted order should reserve the quantity as one indivisible operation. In practical terms, the second order must see the result of the first reservation before it is accepted. Merely reading the stock number and updating it later leaves a gap in which two orders can both appear valid.
External marketplaces complicate this because updates can be delayed. Where channels cannot share live reservations, allocate separate quantities or use a modest channel buffer. Do not expose the entire balance independently in every channel and assume updates will always arrive in time.
Test the failure case as well as ordinary trading. What happens if the marketplace feed stops for an hour? Who receives the alert? Can the affected listing be paused or its quantity reduced? A visible exception queue is more useful than discovering the failure through customer complaints.
Release stock as carefully as you reserve it
Cancelled orders, failed payments and expired holds should return stock to availability through a controlled step. Do not release a quantity that has already been picked without checking its location and dispatch status.
Returns require the same care. A refund may be issued before the item is physically received, and a received item may need inspection. Neither event automatically creates saleable inventory.
At the end of each day, investigate old reservations and orders stuck between stages. The goal is not a perfect-looking total but a balance that the sales team can safely promise. Once that definition is shared across the business, software integration has a clear job to do.
For checking the physical balance underneath those promises, see cycle counting without a full shutdown.