16 March 2026
Composable Commerce
HTTP API
New feature
CartsProduct catalog
We have introduced Inventory reservations in public beta. Now, you can reserve stock when adding items to a Cart or later in the checkout process, ensuring product availability throughout the shopping journey. This improves customer satisfaction by guaranteeing that items in the Cart remain available until checkout is completed or the reservation expires.
Additionally, we have introduced stock level notifications. These notifications alert you when the quantityOnStock of an InventoryEntry falls below or rises above certain thresholds. This enables you to take proactive measures to manage stock effectively and maintain optimal inventory levels.

For more information, see the following resources:

  • Inventory overview: explains general concepts around inventory management, including reservations and stock level notifications.
  • Reservations: provides information about reservation-related resources.
  • Reserve stock on Cart: tutorial that describes how to automatically reserve items and manage reservation durations.
  • Reserve stock on demand: tutorial that describes how to change the inventory mode of a Line Item later in the checkout process, and combine it with Cart freezing, to effectively freeze prices and stock.

The following changes were introduced for the HTTP API:

The following changes were introduced for the GraphQL API:

  • [GraphQL API] Added the InventoryConfiguration type.
  • [GraphQL API] Added the StockLevels and StockLevelsDraft types.
  • [GraphQL API] Added the following message types:
    • InventoryEntryOutOfStock
    • InventoryEntryReorderPoint
    • InventoryEntrySafetyStock
    • InventoryEntryReservationExpirationInMinutesSet
  • [GraphQL API] Added the ReserveOnCart value to the InventoryMode enum.
  • [GraphQL API] Added the setReservationExpirationInMinutes field to the ProjectSettingsUpdateAction type.
  • [GraphQL API] Added the setReleaseExpiredReservations field to the ProjectSettingsUpdateAction type.
  • [GraphQL API] Added the setReservationExpirationInMinutes field to the CartUpdateAction type.
  • [GraphQL API] Added the setReservationExpirationInMinutes field to the InventoryEntryUpdateAction type.
  • [GraphQL API] Added the setReorderPoint field to the InventoryEntryUpdateAction type.
  • [GraphQL API] Added the setSafetyStock field to the InventoryEntryUpdateAction type.
  • [GraphQL API] Added the reservationExpirationInMinutes field to InventoryEntry and InventoryEntryDraft.
  • [GraphQL API] Added the stockLevels field to InventoryEntry and InventoryEntryDraft.
  • [GraphQL API] Added the inventory field to ProjectProjection.

The following changes were introduced in terms of GraphQL SDL:

type InventoryConfiguration {
  reservationExpirationInMinutes: Int
  releaseExpiredReservations: Boolean!
}

type StockLevels {
  safetyStock: Int
  reorderPoint: Int
}

input StockLevelsDraft {
  safetyStock: Int
  reorderPoint: Int
}

type InventoryEntryOutOfStock implements MessagePayload {
  sku: String!
  supplyChannel: Channel
  supplyChannelRef: Reference
  type: String!
}

type InventoryEntryReorderPoint implements MessagePayload {
  sku: String!
  quantityOnStock: Int!
  supplyChannel: Channel
  supplyChannelRef: Reference
  type: String!
}

type InventoryEntrySafetyStock implements MessagePayload {
  sku: String!
  quantityOnStock: Int!
  supplyChannel: Channel
  supplyChannelRef: Reference
  type: String!
}

type InventoryEntryReservationExpirationInMinutesSet implements MessagePayload {
  oldReservationExpirationInMinutes: Int
  newReservationExpirationInMinutes: Int
  type: String!
}

enum InventoryMode {
  ReserveOnCart
}

extend type ProjectProjection {
  inventory: InventoryConfiguration!
}

extend input ProjectSettingsUpdateAction {
  setReservationExpirationInMinutes: SetProjectSettingsReservationExpirationInMinutes
  setReleaseExpiredReservations: SetProjectSettingsReleaseExpiredReservations
}

input SetProjectSettingsReservationExpirationInMinutes {
  reservationExpirationInMinutes: Int!
}

input SetProjectSettingsReleaseExpiredReservations {
  releaseExpiredReservations: Boolean!
}

extend input CartUpdateAction {
  setReservationExpirationInMinutes: SetCartReservationExpirationInMinutes
}

input SetCartReservationExpirationInMinutes {
  reservationExpirationInMinutes: Int!
}

extend input InventoryEntryUpdateAction {
  setReservationExpirationInMinutes: SetInventoryEntryReservationExpirationInMinutes
  setReorderPoint: SetReorderPoint
  setSafetyStock: SetSafetyStock
}

input SetInventoryEntryReservationExpirationInMinutes {
  reservationExpirationInMinutes: Int
}

input SetReorderPoint {
  quantity: Int
}

input SetSafetyStock {
  quantity: Int
}

extend type InventoryEntry {
  reservationExpirationInMinutes: Int
  stockLevels: StockLevels
}

extend input InventoryEntryDraft {
  reservationExpirationInMinutes: Int
  stockLevels: StockLevelsDraft
}