Track UoM in Inventory

I’m trying to understand how ERPNext handles inventory tracking with multiple Units of Measure (UoM), especially when using the UoM table in the Item Doctype.

From what I see, ERPNext always converts stock to the main UoM defined in the Item using the conversion rates in the UoM table. This works well for sales documents like Sales Orders, where I can select different UoMs and prices are handled correctly and I can see single unit prices. However, for stock management, I’d like to track inventory in different UoMs separately — for example, pallets with different quantities of pieces — rather than everything being converted to the base UoM (like pieces).

Why isn’t there a checkbox or setting in the UoM child table to choose whether UoMs should be tracked individually or merged into the base UoM?

Let me give an example:
If I define an item called “Brown Can Pallet 2000pcs” with a stock UoM of “Pallet 2000pcs”, I can only enter sales prices per pallet in the Sales Documents. I tried adding a second UoM like “pcs” with a conversion of 1/2000, but ERPNext doesn’t accept such a small value in the UoM table.

On the other hand, if I define an item called “Single Brown Can” with a base UoM of “pcs”, and then add a second UoM “Pallet 2000pcs”, I can sell 2 pallets and ERPNext correctly shows the price per piece using the stock_uom_rate field — which is what I want. But in this case, inventory is still tracked in pieces, and I lose track of how many full pallets I have in stock.

So here’s my question:
Is it possible to track inventory in different UoMs (like different pallet sizes) separately without creating separate items for each? And if not, could I at least create a custom report that shows stock by UoM as entered in the Stock Entry, instead of just converting everything to the base UoM?

I want to avoid creating separate items because then the pricing logic in sales documents becomes less convenient as i said because its very important for me to define the single unit price in sales docs. (Maybe there is a simple solution to show piece price in sales documents when using the full pallet UoM that I don’t know)

I hope someone can help provide suggestions.

To define the small value conversion, you need to increase the float precision in system setting as follows:

For this you can check the stock balance report in alternative unit also:

Regards,

Divyesh M.

Thanks for the quick response!

Unfortunately, using float precision 9 isn’t accurate enough for my use case — for example, 1/2112 = 0.00047348484, and I don’t like displaying such long decimal numbers.

My Current Solution:

  • I decided to create separate Items for each packaging type and track their quantities in pieces (pcs).
  • I created an item called “Brown Can Pallet 2112pcs”.
    • The stock UoM is set to pcs, so technically this item represents a single can, not the whole pallet.
    • I added a second UoM named “Pallet 2112pcs” with a conversion factor of 2112.
    • This lets me set the price per piece while still tracking full pallets in reports like the Stock Balance Report.
  • While it’s a bit confusing that the item name refers to a pallet but the stock UoM is pcs, I think this is the most practical solution.

The Issue with Multiple UoMs:

  • The problem arises when I introduce another pallet type.
  • For example, I add another item called “Brown Can Pallet 1999pcs”.
    • Stock UoM is pcs.
    • I add a second UoM “Pallet 1999pcs” with a conversion factor of 1999.
  • The issue is that ERPNext reports can only show one alternate UoM per item, which limits visibility when working with multiple pallet formats.

Possible Solution:

  • This limitation could be addressed with a custom report that shows stock grouped by the respective UoM used during the stock entry.

Let me know what you think or if someone has a better approach.