Released stock and coupons must return promptly
Aliases: inventory hold · coupon unfreeze · restock on decline
What it is
Checkout often holds stock and coupons. After payment is known failed, those holds must return to the usable pool while the person can still buy: stock sellable again, coupon tappable again. Permanent hold looks like the cart line going out of stock after failure, or a coupon vanishing with support saying “already used.” This is resources after failure, not whether timeout must query first, and not how double capture is refunded.
Why it happens
A hold protects scarcity inside the pay window, not punishment after failure. If release waits on a human or on hold expiry (tens of minutes to hours), an immediate retry sees no stock or no coupon, reads as gone, and leaves for another shop. A coupon marked redeemed without a capture is books vs reality; the next checkout cannot use it. Unknown must not release, or a later successful lookup has nothing to ship; known failure must release fast. The UI should show “stock restored / coupon returned,” or people will not retry this order.
Studying it
Run a failed order on a limited SKU and a limited coupon. Compare immediate release, wait for hold expiry, never release. Watch whether an immediate retry can still buy and whether the coupon still applies.
Independent variables: release trigger (known fail / hold expiry / human), whether release is notified, mistaken release while unknown. Dependent variables: retry success after fail, wrong coupon state, oversell or over-issue.
Labs must actually decrement stock. Do not test release in unknown. Oversell means released too early; never-release means too late; log both.
Where it stops holding
Flash sales and tickets may treat the hold as the product; after failure the seat goes to the public pool, not back to this person as exclusive—say “back on sale, not guaranteed this seat.” While unknown, stock should stay on a short hold with remaining lock time shown. An already-expired coupon cannot be saved by release; say expired, not “used.”
Applying it
- Release stock and coupon in the same transaction as known failure; the order says “not captured, coupon returned.”
- Unknown keeps a short hold; if still unknown at expiry, escalate lookup, do not release as failure.
- After failure, cart availability matches the system after release.
- Verify with a limited item plus one coupon, fail on purpose, checkout immediately again. Item still buyable, coupon still usable. Out of stock or coupon used means release failed.
Related
- Within the group: H7.13.1 Timeout is not failure; query first · H7.13.3 Channel/order mismatch should read as processing · H7.13.4 Auto-refund for double charge needs a stated arrival window
- Adjacent: H7.01 Shopping cart · H7.09 Discounts, offers, and comparison · H7.06 Payment failure
- Search terms:
inventory hold·coupon release·payment failure restock