BigBooks Docs
Reports & Compliance

Inventory Valuation & Reconciliation

As an operator or admin, you will read the current value of your stock product by product, and confirm that the inventory figures on your books match the general ledger.

What you'll accomplish

As an Operator or Admin, you will read the current value of your stock product by product, and confirm that the inventory figures on your books match the general ledger.

Before you start

Two screens cover this: the Stock Valuation report at /[lang]/reports/inventory-valuation and the Inventory Reconciliation report at /[lang]/reports/inventory-reconciliation. Both require perpetual inventory to be enabled and viewing-inventory permission. These are not report-upgrade grids — they use card summaries plus tables (the valuation report drills into a per-product movement history in a side sheet). Values are in integer satang in LAK.

Compliance Note

The on-hand value the report shows and the balance of the inventory control accounts in the GL are kept equal by construction — both accumulate the same whole-satang amounts on every stock movement. The reconciliation report is your check that this holds; a non-zero discrepancy points to an entry that bypassed the inventory posting path.

Steps

Read the stock valuation Open /[lang]/reports/inventory-valuation. The summary cards show total inventory value and the number of tracked products. The table lists each product with its valuation method, on-hand quantity, average unit cost, and total value.

Stock valuation: total-value and tracked-products cards above the per-product table (method, on-hand, avg unit cost, value).
Stock valuation: total-value and tracked-products cards above the per-product table (method, on-hand, avg unit cost, value).

Drill into a product's movements Click a product row to open the side sheet with its movement history — each stock-in and stock-out with quantity, running balance, and value.

Per-product movement history sheet showing inbound/outbound quantities, running balance, and value.
Per-product movement history sheet showing inbound/outbound quantities, running balance, and value.

Reconcile to the ledger Open /[lang]/reports/inventory-reconciliation. A banner states whether stock reconciles to the GL. The per-account table compares each inventory control account's GL balance to the valued on-hand and flags any discrepancy; a per-product breakdown follows.

Reconciliation banner plus the per-account table (valued on-hand vs GL balance vs discrepancy) and per-product breakdown.
Reconciliation banner plus the per-account table (valued on-hand vs GL balance vs discrepancy) and per-product breakdown.

What happens behind the scenes

The valuation report calls getStockValuationReport and getProductMovements in inventory/queries.ts; the reconciliation report calls reconcileInventoryGL (account-level) and reconcileInventory (per-product) from the same module, with the inventory control accounts drawn from reports/inventoryAccounts.ts. The default valuation method is weighted-average cost (WAC) — each product carries an average unit cost and an on-hand value derived from it; a FIFO path exists in inventory/valuation.ts but WAC is the live default.

On every movement the valuation logic in inventory/valuation.ts (applyStockIn, applyStockOut/relievePerpetualStock) updates the product's stored value and writes the matching GL posting in the same mutation, so the product snapshot, the cost layers, and the GL inventory-asset balance all move by the identical whole-satang amount — a three-way tie (GL ↔ snapshot ↔ layers). Reconciliation re-sums each side independently and reports the difference; it caps very large scans and will flag truncation rather than claim "balanced" off a partial read. The inventory accounts here are the same Class-1 (13x) codes that feed the Balance Sheet's Inventories line, so a clean reconciliation means the Balance Sheet's inventory figure is trustworthy. These reports are read-only and post nothing.

Common problems

  • "Perpetual inventory is OFF": The valuation report needs perpetual inventory enabled in settings.
  • A discrepancy appears: An inventory-affecting entry was posted directly to the GL control account instead of through a stock movement — find it via the per-account row that is out.
  • Truncation warning: The data set exceeded the scan cap; the report will not report "balanced" off a partial read — narrow the scope or follow up on the flagged accounts.
  • Value doesn't match the Balance Sheet: Confirm the reconciliation is clean first; the Inventories line rolls up the same 13x accounts.
  • A product is missing: Only tracked products with stock movements appear; non-inventory items are excluded.

On this page