Release 2026.08-R4
Released August 11, 2026.
Stock availability on delivery options
When you send inventory_check, the Storefront delivery options endpoints now tell you how much of the request each option can deliver. Each option now carries an availability field on both endpoints.
Cart delivery options (POST /storefront/delivery-options):
- Each option carries
availability:FULLwhen every cart item is fully in stock,PARTIALwhen some are not, andUNKNOWNwhen Carriyo couldn't read stock. - Every option now lists all cart items. Each item carries its own
availability(FULL,PARTIAL,NONEorUNKNOWN) and afulfillable_quantity. The item'squantityis always the quantity you requested. - Each option is one delivery. Every location in its
fulfillment_locationscan deliver the option's available items on its own. Carriyo no longer combines stock from several locations to cover a cart. - Options that cover the whole cart come first, then the rest by how many items they can deliver.
Product delivery options (POST /storefront/product-delivery-options): each row carries availability for its location, judged against the requested quantity.
A missing availability means Carriyo did not check stock, for example when inventory_check is off. UNKNOWN never means out of stock. If Carriyo can't read stock, or can't finish an option after pricing it, it still returns the option, marked UNKNOWN.
Delivery option variations
By default, cart delivery options return one entry per option: the location group that can deliver the most items. Send include_variations: true to get every useful alternative instead. Each variation is its own entry, with the same code, its own items and its own fulfillment_locations. Carriyo leaves out a variation when another one delivers everything it does and more.
Item-level product category condition
Delivery options take a new item_product_categories condition with includes and excludes lists. It works per item, unlike product_categories, which accepts or rejects the whole cart.
- On cart delivery options, items the condition rejects are marked
NONEfor that option, and the option readsPARTIAL. If no cart item passes, the option is not returned. - On product delivery options, a product the condition rejects doesn't get that option.
Categories match case-insensitively. A value cannot appear in both includes and excludes.
Fixes
- Shared stock across cart lines: when a cart has several lines for the same product, delivery options no longer count a location's full stock for each line.
- Catalog categories on cart lines: a line item without a
categorynow takes its category from the product catalog before allocation rules run on the cart.