NetSuite inventory valuation report: why it won't tie to the GL
How the NetSuite inventory valuation report is built, how costing method changes the number, and why it won't tie to your inventory GL account.
The NetSuite Inventory Valuation Summary report shows quantity on hand and total value per item as at a date, valued by each item's costing method — average, FIFO, LIFO or standard. It is driven by transaction dates while the inventory GL account moves by posting period, which is the main reason the two rarely agree to the cent.
Key takeaways
- Inventory value is quantity on hand multiplied by a cost that depends on the item's costing method — not by the last price you paid, and not by the item record's displayed average cost.
- The valuation report is item-driven and transaction-date driven. The inventory GL account is account-driven and posting-period driven. Those are two different questions and they answer differently by design.
- A back-dated receipt can change last month's valuation after you've reported it, because NetSuite recalculates costing when transactions are entered out of chronological order.
- Journal entries booked straight to an inventory asset account are the single most common reconciliation break: they move the GL and leave the valuation report untouched.
- WIP, in-transit stock and negative on-hand balances all sit outside the tidy version of this report. Find them before month end, not during it.
Every controller with inventory has had this month. The NetSuite inventory valuation report says $4,182,640. The inventory asset account on the trial balance says $4,206,915. The difference is $24,275, nobody knows where it came from, and close is tomorrow. The good news is that the gap is almost always one of about seven things, and most of them are structural rather than a mistake.
What the report actually computes
NetSuite's Inventory/Items report category holds two versions: Inventory Valuation Summary, one row per item, and Inventory Valuation Detail, which breaks the value down further. Both compute the same thing — on-hand quantity as at a date, multiplied by the cost the item's costing method says applies.
- Inventory valuation
- The balance-sheet value of stock you own and haven't sold yet. Quantity is a physical fact; cost is an accounting policy. Two companies holding identical stock can carry materially different inventory values, entirely legitimately, because they chose different costing methods.
| Costing method | How the unit cost is derived | Where it surprises people |
|---|---|---|
| Average | Weighted average of costs received, recalculated as each receipt posts | The average moves whenever you receive. A back-dated receipt reprices everything that followed it. |
| FIFO | Oldest cost layers are consumed first | Reported margin lags real input prices. In a rising-cost period, COGS looks flat and margin looks great until the layers catch up. |
| LIFO | Newest cost layers are consumed first | Balance-sheet value can drift far from replacement cost, and it is restricted or disallowed under some reporting frameworks. |
| Standard | A cost you maintain on a cost record, not the cost you paid | The difference between paid and standard lands in variance accounts, so inventory value is stable and your P&L absorbs the noise. |
Why the report and the GL disagree
Work these in order. In most accounts the first three explain more than 90% of the variance.
| # | Cause | Direction | How to confirm it |
|---|---|---|---|
| 1 | Date basis. The valuation report ages on transaction date; the GL moves on posting period. | Either | Run the ledger side filtered by transaction date, then by posting period. The delta is your date-basis gap. |
| 2 | Journals posted directly to an inventory asset account, with no item on the line. | GL higher or lower | Query inventory-account lines where the item is null. Write-downs and audit adjustments live here. |
| 3 | Items pointing at more than one asset account, or a non-inventory item pointed at the inventory account by accident. | Either | Group the ledger side by account, and the report side by item's asset account. Compare account by account, never in total. |
| 4 | Work in process. Components issued to a work order have left inventory and haven't become a finished item yet. | GL higher | Look at the WIP account balance. If it's non-zero and your valuation report doesn't include it, that's your number. |
| 5 | In-transit stock on transfer orders, depending on how transfers are configured. | GL higher | Check the in-transit account balance and the list of transfer orders shipped but not received. |
| 6 | Negative on-hand quantities. Selling before receiving values COGS at an estimated cost, corrected when the receipt lands. | Either | Search for items with on-hand below zero at any location. Fix the receipts, then re-run. |
| 7 | Costing recalculation still in flight after out-of-order transaction entry. | Either | Re-run tomorrow. If the number changes with no new transactions in the period, this was it. |
Point 7 deserves emphasis because it undermines trust in the whole report. NetSuite recalculates costing when transactions are entered out of chronological order — a receipt dated last Tuesday, entered today, reprices the issues that happened in between. That recalculation is not instantaneous. A valuation report run mid-close can legitimately differ from the same report run the next morning with nothing new dated in the period. Print it, date-stamp it, and file the printout.
Getting quantity and cost yourself
For a working list rather than a report, an Item saved search gives you on-hand quantity, average cost and — with the inventory-location join added — the same numbers broken out per location. Two things make it much more useful:
- Add a value formula. A numeric formula column multiplying on-hand quantity by cost gives you a value column you can sort, which the canned report's summary layout makes awkward. Treat it as an approximation for prioritisation, not a substitute for valuation.
- Add last-activity dates. On-hand quantity next to "last received" and "last sold" turns a valuation list into a slow-moving-stock list. That is usually the question behind the question, and it is where the write-down conversation starts.
Feed the closing valuation and period COGS in to get turns and days of inventory — the number that tells you whether the value on the balance sheet is working.
The reconciliation query
Do not try to recompute layer-level valuation in SuiteQL. It is possible, it is slow, and it will disagree with NetSuite's own costing engine in edge cases you won't find until an auditor does. What SuiteQL is genuinely good for here is the ledger side, per item, which is exactly what the reconciliation needs:
SELECT
BUILTIN.DF(tl.item) AS item,
BUILTIN.DF(tal.account) AS asset_account,
ROUND(SUM(tal.debit) - SUM(tal.credit), 2) AS gl_value
FROM transactionaccountingline tal
JOIN transactionline tl ON tl.transaction = tal.transaction
AND tl.id = tal.transactionline
JOIN transaction t ON t.id = tal.transaction
JOIN account a ON a.id = tal.account
WHERE a.accttype = 'InvtAsset'
AND tal.posting = 'T'
AND t.trandate <= TO_DATE('2026-06-30', 'YYYY-MM-DD')
GROUP BY BUILTIN.DF(tl.item), BUILTIN.DF(tal.account)
HAVING ROUND(SUM(tal.debit) - SUM(tal.credit), 2) <> 0
ORDER BY gl_value DESCRun that, run the valuation report, and put the two lists side by side keyed on item. The rows that don't match are the whole investigation, and there are usually fewer than twenty of them. Rows with a blank item and a real balance are point 2 from the table above; you have found them in about ninety seconds rather than by scrolling a general ledger. The SuiteQL formatter is handy if you inherit this query pasted into a wiki page as one long line.
Reading the valuation, not just producing it
Once the number ties, it is worth thirty more seconds of thought, because inventory value is the most expensive line on a distributor's balance sheet.
- Value concentration. Sort descending by value and look at the top 30 items. If 20 items are 70% of value, your cycle counting, buffer policy and review cadence should all be shaped around those 20 — not spread evenly across 4,000 SKUs.
- Value with no movement. Items with real value and no issue in 180 days are the write-down candidates. Being able to name them before the auditor does is the difference between a provision and a restatement.
- What holding it costs. Capital, storage, insurance, obsolescence and shrink typically total 18–28% of inventory value per year for mid-market distributors, which means $4.2M of stock costs real money to hold. The inventory carrying cost calculator breaks that into its components.
- Whether valuation is complete. If freight, duty and brokerage aren't in your item costs, your inventory is understated and your margins are overstated by the same amount. Landed cost: what to include covers the allocation methods, and inventory turnover: how to read it explains why turns move when costing changes even though nothing physical did.
Asking instead of building
Two reports, two queries, a keyed comparison, and a judgement about which differences are structural. That is a genuine skill and it is also a recurring Tuesday. Ask "inventory value by item at 30 June versus the inventory asset accounts, show me only the items that don't match" and you get the comparison computed live from your own account, with the SuiteQL printed underneath so the costing assumptions are visible rather than implied. Read-only by default — nothing in the ledger moves.
Frequently asked questions
Why doesn't my NetSuite inventory valuation report match the GL?
Usually date basis: the valuation report works on transaction dates while the inventory GL account moves by posting period. After that, the common causes are journal entries posted directly to an inventory asset account with no item on the line, items mapped to more than one asset account, and value sitting in WIP or in-transit accounts that the valuation report doesn't cover.
Which costing methods does NetSuite support?
Average, FIFO, LIFO and standard costing, set per item, so a single inventory account can contain all four. Serialised and lot-numbered items carry specific costs against each serial or lot. Changing an item's costing method after it has transaction history is disruptive and should be treated as a project, not a settings change.
Can I run a NetSuite inventory valuation report as of a past date?
Yes — the valuation reports take an as-of date and recompute from current data. That means the report is not a stored snapshot: a back-dated receipt entered this week will change what last month's valuation looks like when you re-run it. Print and file the version you reported, with the run date on it.
Why is on-hand quantity times average cost different from the valuation report?
Because valuation respects cost layers, per-location costs and the as-of date, while the average cost on an item record is a single current figure for the whole item. The multiplication is a reasonable way to prioritise a review list, but it is not the inventory value and should never be used as a balance-sheet number.
How do I find inventory journal entries that break the reconciliation?
Query accounting lines against accounts of type InvtAsset where the linked transaction line has no item, or run a general ledger report on the inventory asset accounts filtered to journal entries. Legitimate write-downs and audit adjustments live here; anything else is usually a mis-coded expense that should never have hit inventory.
Does the inventory valuation report include work in process?
No. Once components are issued to a work order they have left inventory, and the value sits in a WIP account until the assembly is built. If your inventory asset accounts and the valuation report differ by roughly the WIP balance, that is the answer — and it is a reason to report WIP alongside inventory rather than inside it.
Calculators for this
Calculate inventory turnover from COGS and average inventory. Get turns, days of inventory, GMROI and the cash freed by hitting a target turn rate.
Build your inventory carrying cost rate from capital, storage, service and risk. Get the annual cost, the percentage rate, and holding cost per unit.
Calculate landed cost per unit: freight, insurance, brokerage and duty allocated across a shipment by value or by unit count, with the % uplift.
Work out days of supply from on-hand stock and average daily usage. See weeks of cover, days until stockout, and the units needed to reach a target.
Keep reading
Inventory turnover explained: the COGS formula, days of inventory, GMROI, directional ranges by business type, and why chasing turns can cost you margin.
What belongs in landed cost — freight, duty, insurance, brokerage — the three allocation methods, and how the choice moves item margin by points.
An ordered NetSuite month-end close checklist: 14 steps with the period-locking, inventory-costing, revenue and intercompany gotchas that break a close.
How to run an AR aging report in NetSuite: the standard report's limits, the saved search and SuiteQL versions, and the traps that make the buckets wrong.