Reference behaviour: Inventory Batch, Inventory Position and Inventory Quantity (Quantities)with RESERVED & SALE
Authors:
Nandha Balaguru, Randy Chan
Changed on:
22 Apr 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.

Upsert payload would look as below:

After 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:

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`

In 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)

The next step is to process the fulfilment. So log on to Fluent STORE, create Wave and pick confirm the fulfilment:

After pick confirmation is completed, the filled quantity is updated in the fulfilment line section:

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`
`SALE`
`reserved`
`sale`

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:

Fulfilment created successfully:

In 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

Imagine 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.).

After 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.
