Skip to Content
ERPX Documentation — Your complete guide to the ERPX platform
ModulesInventoryStock Valuation

Stock Valuation

ERPX values stock using Weighted Average Cost (WAC), and the weighted-average rate is global per item — one single rate for an item across all warehouses.

There is no per-warehouse rate to choose, and no FIFO or LIFO valuation option. This one decision explains most of what you will see in the valuation reports, so it is worth reading once properly.

In one sentence: every item has one cost rate at any point in time; a receipt re-averages it, an issue uses it, and a transfer between warehouses does not change it.

The two rules

Rule 1 — A receipt re-averages the rate

When stock comes in (GRN, Stock Entry Receipt, Manufacturing, Stock Opening), the new rate is:

(previous global qty × previous rate) + (incoming qty × incoming rate) new rate = ─────────────────────────────────────────────────────────────────────────── previous global qty + incoming qty

“Previous global qty” is the total on-hand quantity of that item summed across every warehouse, as at the posting date.

If there was no stock before, the new rate is simply incoming value ÷ incoming quantity.

Rule 2 — An issue uses the current rate

When stock goes out (Delivery Note, Stock Entry Issue, consumption), the outgoing line is valued at the current global weighted-average rate. An issue never changes the rate — it only reduces quantity and value.


Worked example

Two warehouses, one item. Watch the rate: it is always the same in both.

#TransactionWarehouseQtyRateGlobal qty afterGlobal WAC after
1Stock OpeningMain+10010.0010010.00
2GRNMain+10014.0020012.00
3GRNBranch+20015.0040013.50
4Delivery NoteMain−5013.5035013.50
5Transfer Main → Branchboth3013.5035013.50

Reading the table:

  • Row 2: (100 × 10 + 100 × 14) ÷ 200 = 12.00.
  • Row 3: the receipt is in the Branch, but it still re-averages the global rate: (200 × 12 + 200 × 15) ÷ 400 = 13.50. The Main warehouse’s stock is now valued at 13.50 too.
  • Row 4: the issue leaves at 13.50 and the rate does not move.
  • Row 5: a transfer moves 30 units of value from Main to Branch at 13.50. Total value is unchanged.

Row 3 is the consequence people find surprising: a purchase into one warehouse changes the valuation of the same item in every other warehouse. That is the definition of a global weighted average, and it is intentional — one item, one cost.

What “global” means in practice

QuestionAnswer
Can two warehouses show different rates for one item?No. The rate is one number per item
Can two warehouses show different quantities?Yes. Quantity is always per warehouse
Does a transfer change total stock value?No. It moves value between locations
Does a transfer change the rate?No.
Is warehouse stock value meaningful?Yes — it is warehouse quantity × global rate

So the Warehouse Inventory Valuation report differs between warehouses only by quantity, never by rate.


Where the rate comes from on each document

DocumentHow the rate is set
Stock OpeningYou enter the rate. This is the starting point of the average
GRNThe purchase rate on the item row, converted to stock UOM and organization currency
Stock Entry — ReceiptThe Basic Rate you enter on the row
Stock Entry — IssueDerived: the current global WAC. Not editable
Stock TransferDerived: the current global WAC on both sides
Delivery NoteDerived: the global WAC at the delivery date, used for COGS
Manufacturing EntryDerived from consumed materials plus operating cost, less scrap recovery
Stock ReconciliationYou may enter a new valuation rate as well as a new quantity
Landed Cost VoucherIncreases the GRN’s incoming rate, then triggers recalculation

Unit conversion

Rates are always stored in the item’s stock UOM and in the organization currency. If you buy in cartons at 1,200 per carton with a conversion factor of 12, the ledger records 100 per piece. Get the conversion factor wrong on the item master and every rate downstream is wrong — which is why ERPX blocks changing it once stock exists.


Backdated documents and recalculation

Because the average depends on the order of transactions, inserting a document into the past invalidates every rate after it. ERPX handles this by recalculating forward, and by enforcing rules on what may be backdated:

Document typePosting date rule
Stock OpeningCan be moved, but must stay earlier than every other entry for those items and warehouses
Receipt / GRNCannot be dated before an existing Stock Opening. Can move forward only when no Issue / Transfer / Manufacturing entry sits after it
Issue / Transfer / Manufacturing / Send to SubcontractorPosting date cannot be changed once posted

The messages you will see:

  • “Receipt cannot be dated before the Opening Entry. Opening Entry must remain at the root (earliest position).”
  • “Stock Opening entry cannot be moved. There are other stock entries (Receipt/Issue/Transfer/Manufacturing) on or before the new date.”
  • “Posting date cannot be changed for this stock entry type.”

When a valid backdated receipt is approved, ERPX re-runs the weighted average forward from that date for the affected items, updating the later ledger rows, stock values, and accounting entries. On large histories this runs as a background task — the document shows as processing until it finishes.


Valuation vs batch picking — two different things

This trips people up, so it is worth stating plainly:

ConceptWhat ERPX doesConfigurable?
Valuation — what the stock is worthWeighted average, global per itemNo
Physical batch allocation — which batch leavesFIFO by manufacturing date, or a batch you pin manuallyYes, per line
Physical serial allocation — which unit leavesThe serials you selectYes, per line

So you can ship the oldest batch (FIFO) while still valuing it at the weighted-average rate. The two decisions are independent.


Accounting side

Every approved stock movement posts a matching accounting entry, using accounts on the document:

MovementDebitCredit
Receipt (Stock Entry)Stock Assets AccountStock Adjustment Account
Issue (Stock Entry)Stock Adjustment AccountStock Assets Account
Stock OpeningStock Assets AccountTemporary Opening Account
GRNStock Asset AccountStock Liability Account
Delivery NoteExpense Account (COGS)Stock Account
ReconciliationStock In Hand / Stock Adjustment, by directionopposite side

This is why the Stock Balance report and the inventory line on the Balance Sheet agree: they are two views of the same postings.

Where to see valuation

ReportShows
Stock BalanceQuantity, latest valuation rate, and value per item and warehouse
Warehouse Inventory ValuationStock value by warehouse
Stock LedgerEvery movement with the valuation rate applied at that moment
Item LedgerOne item’s movements and running balance
Stock DashboardTotal stock value by fiscal year, and value by warehouse

Troubleshooting

SymptomLikely cause
Rate changed but I only received into one warehouseExpected — the average is global
Rate looks too low after a receiptThe receipt’s rate or conversion factor is wrong on the row
Rate is 0The first inward document had a zero rate — fix it at the source, usually the Stock Opening
Stock value does not match the Balance SheetA document is still Draft/Pending, or a background recalculation is still running
Cannot change a posting dateExpected for Issue / Transfer / Manufacturing — cancel and re-enter instead