Fluent Commerce Logo
Docs

Reference behaviour: Inventory Batch, Inventory Position and Inventory Quantity (Quantities)with RESERVED & SALE

Essential knowledge

Intended Audience:

Business User

Authors:

Nandha Balaguru, Randy Chan

Changed on:

29 Aug 2025

Overview

Reference behaviour: Inventory Batch, Inventory Position and Inventory Quantity (Quantities)with RESERVED & SALE

Key points

  • This article will give a good understanding of Last On Hand and how OMS calculates the Inventory On Hand quantity.  
  • Covers how inventory quantity values are handled during the batch process.
  • For the Virtual Catalogue and Virtual Positions, please refer to the training articles.

Initial inventory is loaded into the system. It sets the base physical stock in OMS, representing the actual available inventory at that point which is 150 units.
No alt providedUpsert payload would look as below:No alt providedAfter the batch inventory event had been processed, the IQ with the type LAST_ON_HAND was updated to 170. The IP on hand qty has also been updated to 170, and the same for IP Stock on Hand:No alt provided
Next, create an order for this SKU with a quantity of 3 units.This action will trigger the creation of a fulfilment with 3 quantities in the `AWAITING_WAVE` status.No alt providedIn the Inventory Position Screen, an ACTIVE RESERVED IQ has been created with qty = -3 against the fulfilment (the fulfilment ID is part of the IQ ref). As you can see, the IP on hand is now 167. (LAST ON HAND: 170 + RESERVED: -3)No alt providedThe next step is to process the fulfilment.  So log on to Fluent STORE, create Wave and pick confirm the fulfilment:No alt providedAfter pick confirmation is completed, the filled quantity is updated in the fulfilment line section:No alt provided
Order has been fully picked. The 3 units are no longer reserved but have now been physically moved from base stock. Upon pick confirmation, the reservation becomes `INACTIVE`, and a corresponding `SALE` record is made ACTIVE to reflect that the stock has officially transitioned from "`reserved`" to "`sale`."No alt provided
Now, let's demonstrate how SALE IQ and RESERVED IQ behave when a new batch inventory upsert is sent to OMS.  First, create a new order with 5 units:No alt providedFulfilment created successfully:No alt providedIn the Inventory Position Screen, a new RESERVED ACTIVE was created against the fulfilment. The latest IP on hand is 162.Active records are considered for the On-Hand Qty calculation No alt providedImagine that the store has not picked up the fulfilment overnight, and a nightly inventory sync is triggered with OMS.
In this case, the inventory quantity for the SKU at this location should be reported as 167.(LAST_ON_HAND should always reflect available including the reserved quantities when communicated to OMS.).
No alt providedAfter the batch inventory event is processed:
  •  The LAST_ON_HAND IQ is updated to 167.  
  • The IP on-hand is 162. 
  • The SALE IQ is made INACTIVE.
OMS recalculates stock on hand with batch loads and inactivates past SALE records because they represent quantities that are picked & packed and are no longer part of the available stock. Active reservations remain untouched, as they represent the fulfilments which are not picked & packed.
No alt provided
Nandha Balaguru

Nandha Balaguru

Contributors:
Randy Chan