Definition
Availability answers one question — which listings can a customer get in this sales channel? — and lets you deepen it with context:- …with a given fulfillment type
- …at a specific location
- …to be booked between two dates
How it works
Availability is not binary — whether a listing is available depends on several factors, which layer on as you add context:- Listing — the listing is active, visible in the channel, and has at least one valid purchase type.
- Stock — at least one location holds stock (for items that track inventory).
- Fulfillment — a fulfillment method can serve the customer. For in-store pickup, a listing is eligible at a Location only when it’s sold there and that Location’s fulfillment rules offer in-store pickup for the listing’s purchase type (rental or sale).
- Dates — for bookings, the requested period is free of conflicts on the calendar.
Eligibility vs. availability
Two of these factors answer different questions, and the storefront resolves them in order:- Eligibility is a configuration fact — can this listing be fulfilled at this Location at all? A Location is eligible for a listing when the listing is sold there and the Location offers a fulfillment method for the listing’s purchase type. It doesn’t depend on stock levels or dates, so it can be evaluated up front — to show “available for pickup at these Locations” and to filter the Location picker.
- Availability layers stock and dates on top — do the eligible Locations actually have the requested items free for the chosen period? A Location can be eligible but still out of stock for a given range or quantity.
Availability signal vs. exact stock
For a browse view, availability is a signal — available somewhere — rather than a count. It tells the customer whether an item can be bought and at how many locations, without exposing exact quantities:The booking decision
Whether a customer can get a listing is an AND across several layers — each must pass, and the first layer that fails is the reason it isn’t offered. The storefront evaluates them from cheapest (pure configuration) to most specific (live stock and dates):The listing is sellable
- Active status — Draft and template Listings are never offered.
- Enabled in the customer’s sales channel (
salesChannelOnlinefor the Online Store). - Has at least one purchase type with a row in an attached Price Table: an enabled, in-window booking row for rentals, or a sales row for purchases.
A location can fulfill it — *eligibility*
- The listing is sold at the Location (linked), and the Location is active with the channel enabled.
- The Location’s fulfillment rules offer the requested fulfillment method (e.g. in-store pickup) for that purchase type. A store that offers pickup for sales but not rentals makes a rental ineligible there — even if it’s in stock.
There is stock — *availability*
The dates and quantity fit (bookings)
- A booking row must cover the duration and respect its
weekdaysandtimeOfDayRange, the table’s date window, and the listing’s min / max booking duration — otherwise there’s no price, so no bookable option. - The Location’s fulfillment hours must allow the chosen pickup and return times. Pickup hours constrain the booking start; return hours constrain the booking end. Locations without custom fulfillment hours fall back to opening hours.
- Every unit needed must be free of conflicts for the whole range — the requested quantity can’t exceed the units available across that period. Buffer time extends the conflict window in both directions — a before-buffer blocks the item before the booking start, and an after-buffer blocks it after the booking end. An item with a 1-hour before-buffer and a 2-hour after-buffer is unavailable from 1 hour before pickup through 2 hours after return. One reservation is left out of this check: the one held by the line item you are editing — see Editing an existing line item.
- A stock item’s before-buffer also enforces a minimum lead time on the storefront: a booking starting sooner than the buffer allows is shown as unavailable. Admin staff are exempt from this restriction.
The order deadline has not passed (bookings & subscriptions)
- A set time before — the start time minus a fixed offset (e.g. 2 hours before start).
- By time of day — a wall-clock cutoff on an earlier day, resolved in the service location’s timezone (e.g. by 18:00, 1 day before start).
order_deadline notice. Admin users are exempt — staff can create orders past the deadline.Editing an existing line item
When availability is computed for a line item that is being edited, that line item’s own reservation is excluded from the check, along with the reservations of any add-ons attached to it. The exclusion covers the whole reserved footprint — buffer windows included — so a line item never blocks its own edit. Without it, an item’s own buffer would count against it: a stock item with a 2-hour after-buffer would refuse a 1-hour extension of the very rental period that created that buffer. Excluding a sold stock item frees the capacity that sale consumed in the same way, so re-dating a sale sees its own unit as available again. The rule applies wherever an existing line item is re-dated or re-picked — the admin’s line item editor, and the storefront cart’s edit flow. It does not extend to other line items on the same order: those hold their reservations normally, and an edit that collides with one is reported as unavailable.Items already in the cart
Items in the cart are checked as if they were already booked, buffers and all. A second rental of the same stock item that starts inside the first one’s after-buffer is not offered, even when the two rental periods themselves do not overlap. The same applies across the cart page’s per-store check: a store counts as “Cart available” only when it can hold every item in the cart, each with its buffer windows, at the same time.Examples
Rental sold at a store that only offers pickup for sales
Rental sold at a store that only offers pickup for sales
In stock, but the chosen dates conflict
In stock, but the chosen dates conflict
Extending a rental whose own buffer sits in the way
Extending a rental whose own buffer sits in the way
Bookable, but not on the requested weekday or duration
Bookable, but not on the requested weekday or duration
weekdays) with a two-day minimum. A Saturday start, or a one-day booking, matches no row — no price, so it isn’t bookable for that selection even though stock is free.The storefront surfaces this before the customer commits: in the booking widget’s Booking options dropdown, an option that can’t start on the selected date is greyed and captioned with the next date it can — “Not available for selected dates — next available Mon 18.8”. Selecting it moves the start date to that day. See Booking options and the selected date.Quantity exceeds what one location holds
Quantity exceeds what one location holds
Sale item with no inventory tracking
Sale item with no inventory tracking
Order deadline passes while item is in the cart
Order deadline passes while item is in the cart
Querying availability via the API
Authenticate with theX-API-KEY header (see API Keys). The main endpoints:
from / to (the date range), serviceLocationIds, and variantValueIds. Storefront-facing equivalents live under /storefront/catalog/products/{productId}/availability/period and /range.
See the API reference for full parameters and response schemas — it is generated from the live API, so it always reflects the current fields.