Checkout stock hold
When a shopper reaches checkout, Nudova places a real, time-limited hold on the items in their cart. The storefront shows a countdown (“Items reserved for 14:59”), and the same hold appears live for staff under Inventory → Reservations in the admin app. If the shopper pays, the hold is committed; if they walk away, it expires and the stock returns — automatically.
This is part of the honest scarcity posture: the countdown is the reservation’s actual expiry, not theatre. If the banner says items are held, they are held.
The settings
Section titled “The settings”Set per store in the admin app under Settings → Checkout:
| Setting | Purpose | Default |
|---|---|---|
| Reserve items during checkout | Turn the checkout-entry hold (and its countdown) on or off | On |
| Hold duration | How long the reservation lasts before it expires | 15 minutes |
The duration dropdown offers 5, 10, 15, 20, 30, 45 and 60 minutes. The API accepts any value from 1 to 120 minutes if a store needs something in between.
Changes apply on the next checkout entry — no redeploy, no restart. Under
the hood the values live in the tenant config
(TenantConfig.extra["checkout"] → hold_enabled, hold_minutes) and are
served by GET/PATCH /api/v1/commerce/admin/settings/checkout/.
How the hold behaves
Section titled “How the hold behaves”- Entering checkout calls
POST /api/v1/commerce/checkout/reserve/, which reserves each cart line and returns the shared expiry that drives the storefront countdown. - Re-entering checkout extends the same hold — refreshing the page or coming back from the cart never stacks a second reservation.
- Changing the cart re-syncs the hold: a changed quantity is re-reserved, a removed line releases its held units.
- Placing the order adopts the hold — the stock a shopper holds is the stock their order commits, so their own reservation can never block their own purchase, even on the last unit.
- Expiry is automatic: the scheduler sweeps expired holds and the units return to availability (and to anyone on the back-in-stock waiter list).
What “disabled” means — stated plainly
Section titled “What “disabled” means — stated plainly”Turning the hold off only removes the checkout-entry courtesy hold and its countdown; the storefront banner switches to “we’ll re-check stock and prices when you pay”. It does not make ordering oversell-prone: order placement itself always reserves stock for the moment between “place order” and payment settling (instantly for COD; until the gateway webhook for online payments). That placement hold is a correctness guarantee and cannot be switched off.
Where staff see it
Section titled “Where staff see it”Active holds are listed in the admin app under Inventory → Reservations: variant, SKU, quantity, the owning cart or order reference, and when the hold expires. A committed hold moves onto the order; an expired one disappears from the list as its stock returns.
Related: Inventory · Store settings & branding · Delivery zones & fees.