Online stock reservations: when to hold and when to release
A cart does not always hold goods. Decide the trigger and verify that uncertain payments or repeated notices do not release the same units twice.
Reservation and last-unit tests
Ten synthetic hold, expiration, late-notice, retry and physical-dispatch cases. Record evidence and observed outcomes.
Choose which action reserves a unit
Opening a product, adding it to a cart, starting payment and confirming an order are separate moments. Holding stock for every cart protects the first shopper but may retain goods in abandoned attempts. Reserving later leaves more units for sale, but requires an availability check as the purchase progresses. The process owner must choose the trigger, duration and release condition.
Shopify distinguishes on-hand, available, committed, unavailable and incoming inventory. Damaged or held units should not be counted twice within the sets calculating availability. Stripe documents manual or timed payment-session expiration and an expiration notification a store can use to return reservations to stock. That notification requires the store to process release; it does not independently prove your inventory has updated.
| Moment | What it protects | Required test |
|---|---|---|
| Add to cart | Temporary priority while shopping | Abandoned carts and held-quantity limits |
| Start payment | An attempt already checking out | Two buyers for the last unit |
| Confirm order | Accepted orders | Earlier payment when the unit is gone |
| Deferred-payment order | Authorized commercial commitment | Agreed deadline, review and cancellation |
Worked example: four sellable units and two buyers
| Time | Fact | On hand / damaged / held / available |
|---|---|---|
| 10:00 | A receives RES-A for 2; expires 10:30 | 5 / 1 / 2 / 2 |
| 10:05 | B confirms ORD-B for 2; not dispatched | 5 / 1 / 4 / 0 |
| 10:06 | C attempts to reserve 1 | Denied; still 5 / 1 / 4 / 0 |
| 10:30 | Verify RES-A expired without payment; release 2 | 5 / 1 / 2 / 2 |
| 10:31 | A’s expiration notice arrives again | No second release; still 5 / 1 / 2 / 2 |
| 11:00 | ORD-B’s 2 units leave | 3 / 1 / 0 / 2 |
A browser countdown guides the shopper; the central clock and recorded reservation determine cutoff. Closing the tab does not prove payment failed. Stripe’s documented timed expiration is set between 30 minutes and 24 hours when creating the session; this example uses 30 minutes. Check the limits and payment methods of the provider you will use, without assuming every provider supports the same interval.
Resolve uncertain payment before releasing stock
Test an alternative starting at 10:00: A paid at 10:29 but the notice arrives at 10:32. The store checks the authorized result and discovers payment before cutoff. In this alternative the two units remain committed to A; a late or repeated notice must not release the same reservation. The previous no-payment test and this alternative are not cumulative.
If the result cannot be established at cutoff, display “payment under review” and assign an owner to resolve it within an agreed review period. Do not confirm goods or release stock by guessing. If money actually arrives after a reservation was released and units were sold, record the discrepancy and agree on a new delivery or authorized refund with the buyer. Do not automatically recreate the old order’s hold.
A reservation needs a product, location and owner
Link the reservation to variant, warehouse, quantity, buyer, purchase attempt and expiration. Repeating the same attempt retrieves RES-A; changing quantity modifies or replaces its reservation in a verifiable way without leaving two hidden holds. A genuinely new purchase has another reference. Decide whether boxes or packs deduct equivalent individual units; counting carts does not replace that quantity.
When online and counter sales share stock, both should consult a common authority when accepting commitments. A recent screen helps but does not protect the final unit when two people confirm simultaneously. The warehouse guide develops physical availability and transit; this article tests a reservation’s lifetime during purchase.
Accept the reservation under these conditions
- Normal: confirmed purchases retain their hold until dispatch without deducting available inventory twice.
- Exception: a verified unpaid expired attempt releases only its units; damaged goods remain blocked.
- Retry: repeated creation or expiration retains one reservation and one release.
- Concurrency: two attempts for the last unit cannot both receive confirmed availability.
- Change: cancellation after dispatch retains the physical movement; a return requires verified receipt before resale.
The downloadable worksheet contains ten synthetic cases with blank observed results. It includes earlier payment with a late notice and an uncertain outcome because normal demonstrations often miss these cases. Also review duplicate payment notices and cancellation with refunds. Before assessing retail software, identify which system controls availability and what evidence confirms each payment.
Frequently asked questions
That depends on platform and configuration. Define and demonstrate the trigger: cart, starting payment or confirmed order. Do not infer it from a visual countdown.
It does not prove that purchase or payment ended. The store must verify the reservation and payment attempt under the agreed policy.
The responsible system needs to process a verifiable release. Repeating the notice in this test does not return another two units.
Mark it under review, assign an owner and check the authorized result before confirming goods or releasing the hold. Agree on a review deadline.
Sources
Last updated: