Release 2026.07-R5

Updated September 28, 20265 min read

Released July 28, 2026.

Storefront API

The checkout endpoints move to a new /storefront path, and two new endpoints join them. The Storefront API covers what a shopper sees before placing an order: delivery options, shipping rates and pickup locations.

  • POST /storefront/delivery-options, POST /storefront/shipping-rates and POST /storefront/validate/phone replace their /checkout versions. The /checkout paths keep working for now.
  • Product delivery options. POST /storefront/product-delivery-options returns delivery options per product, for product listing and product pages. Send up to 50 products, each with a product_id, quantity, unit_price, per-unit weight, optional category and up to 5 fulfillment_locations. You get one row per product and location, with available_quantity and the matching delivery_options. Options priced as pass-through are left out.
  • Eligible locations. POST /storefront/locations returns the locations that can serve a customer, nearest first when you send customer coordinates. Filter by functions (FULFILLMENT, COLLECTION), location_type, custom_attributes and max_distance. merchant and a customer with a country are required. max_locations defaults to 10, up to 50.

Changes to cart delivery options (/storefront/delivery-options):

  • A new inventory_check flag turns on stock checks explicitly. It applies when your tenant manages inventory in Carriyo.
  • sort_by (SPEED or COST) and sort_direction order the results. Options that cover the whole cart come first.
  • Line item weight is now per unit and is multiplied by the quantity.
  • fulfillment_locations in the response are now objects with partner_location_id, partner_location_code and partner_location_name, not plain IDs.
  • carriyo_metadata is removed from the request.

In the API client editor under Settings > Integration > API Access, the Checkout scope group is now Storefront, with a Storefront APIs scope. Delivery Options has its own scope for managing delivery option setup. Carriyo grants these scopes; ask support to add them to your client.

Fulfillment radius for locations

A location can now serve customers within a set distance instead of a list of zones. Open a location under Settings > Administration > Locations and choose a mode in the new Fulfillment Coverage section: Unrestricted, Fulfillment Zones or Fulfillment Radius. A radius needs the location's map pin.

Order allocation, cart delivery options and the Storefront endpoints all use the radius. A radius location is eligible only when the customer's address has coordinates within range. Orders and carts without customer coordinates never use it.

Via the API: locations take a new fulfillment_radius field. It cannot be combined with fulfillment_zones, and it requires coords on the location. Sending one on an update switches the location to it and clears the other.

Product category condition for delivery options

Delivery options have two new conditions, Product category is one of and Product category is none of, under Settings > Shipping Automation > Delivery Options. They use the same category picker as order allocation rules. When a request has no category for a line item, Carriyo reads it from the product catalog.

Via the API: delivery options take product_categories with includes and excludes lists. A value cannot appear in both.

Screens that said "Checkout Option" or "Shipping Option" now say Delivery Option, and the Payment Method condition is now Payment Type.

Product variants and packs

Products now have a Product Type: Simple, Variant or Pack. Existing products are set to Simple.

  • Variant products can name a Variant Parent, the master product they belong to, and carry a color and a size.
  • Pack products list their Pack Components: each component product and how many units the pack holds. A pack keeps its own stock, separate from its components sold on their own.

Via the API: products take product_type, variant_parent_id, variant_attributes (keys color and size) and pack_components (product_id, sku, units). Packs require at least one component, each with a product_id and positive units.

Product import and export add Product Type, Variant Parent ID, Variant - Color, Variant - Size and up to 10 Pack Component columns. The Shopify connector now imports Shopify variants as Variant products, with color and size taken from the variant options.

MCP: the Products tools create_product and edit_product accept the new fields, and product results return them.

Redesigned product pages

The product list under Settings > Administration > Products has a new layout. Search by name, ID, SKU or barcode, choose a row density, and activate or deactivate selected products in bulk.

Each product opens on its own page with Summary, Orders, History and System tabs. The summary shows the product type, variant details or pack contents, custom attributes and export information. Stock is now in Inventory Positions, linked from the product page.

Redesigned order list

The Orders list has a new layout:

  • Cards along the top count orders by stage: All Orders, Open, Allocated, Processing, Fulfilled and Closed. Select one to filter the list.
  • The Orders menu has two new views, Allocation Issues and Exceptions, each showing a live count. Exceptions are orders with cancelled items.
  • A new Fulfillment column shows how many fulfillment orders are fulfilled out of the total.
  • Search covers order number, customer and reference, with an Exact toggle. A period selector sets the date range.
  • Selecting orders opens a bulk action bar with Export.

Custom attributes for locations

Custom attributes now apply to locations. Create them under Settings > Administration > Attributes with the Locations scope, then set values on each location. They also appear as columns in the location list and in the location export. A list-type attribute accepts only its allowed values.

The location list has a new filter dialog: Country, City, Location Type, Inventory Managed, Fulfillment Location, Collection Location, and any list-type location attribute.

Via the API: locations take custom_attributes. Your account needs the custom attributes subscription.

Free zone locations

Mark a location as a Free Zone when it sits in a free or bonded zone. Find the toggle on the location page, in the location import and export, and on the pickup and drop-off addresses of the create shipment form. Shipment details show a Free Zone tag on those addresses.

A shipment between a free zone and a non-free-zone address in the same country is now treated as cross-border, in either direction. Carriyo sends customs details to the carrier and fetches commercial invoices as it does for international shipments.

Via the API: locations, pickup and drop-off addresses take a free_zone flag. Shipments from a saved location inherit it.

Carrier updates

  • All carriers: shipments from Great Britain to Northern Ireland are treated as cross-border.
  • Aramex: the customs value on cross-border items now uses the item cost when one is set, and the price otherwise.
  • iMile: delivery requirements are also sent as the order description.