Skip to main content

FIFO and Inventory Costing

Costing errors do not stay in finance. They distort margin by customer, product, and channel—and they undermine any ML or analytics layer built on shipment and inventory history.

:::info Portfolio architecture example

This page documents sanitized FIFO and inventory costing patterns typical of Sage 100–class perpetual inventory environments. It is illustrative methodology, not an audited financial outcome from any named organization.

:::

:::note Research-informed

Costing integrity patterns are informed by doctoral ERP research and later enterprise practice—not presented as verbatim dissertation findings. See Research Overview.

:::

Core principle

Physical flow, costing layers, and GL valuation must reconcile to the same rules. When they diverge, fix the rule or the transaction—not the report.

FIFO layer mental model

Receipt creates layer (qty, unit cost, date/lot)

Issues consume oldest eligible layer first (policy-defined)

Remaining layers = on-hand quantity at layered cost

Extensions roll to inventory valuation and COGS at issue

Pattern 1: Layer creation discipline

Every inventory increase should create or extend a layer with traceable source:

SourceLayer inputs
PO receiptPO cost, landed cost adjustments, receipt date
Transfer inOrigin layer reference or standard cost policy
AdjustmentApproved reason, unit cost basis, approver

Failure mode: Adjustments that change quantity without layer logic produce orphan cost.

Pattern 2: Consumption rules explicit per item class

FIFO is not one universal behavior in mid-market ERP. Document per item class:

  • Strict FIFO by receipt date
  • Lot-controlled FIFO
  • Standard cost items with variance posting
  • Non-inventoried / direct-expense items

Operators and report consumers should know which rule applies before debating a margin report.

Pattern 3: Landed cost timing

Problem: Freight, duty, and vendor charges arrive after receipt, causing layer cost drift.

Pattern: Define when landed cost accruals attach to open layers vs. post as adjustment. Reconcile accrued vs. actual on a defined cadence.

Pattern 4: Transfer and reclassification

Problem: Location transfers that bypass layer logic create double-count or negative-layer artifacts.

Pattern: Transfers move quantity and layer reference (or use defined cost-on-transfer policy). Reclassification workflows require approval when item ID or UOM changes.

Pattern 5: Period-end reconciliation trio

Run three reconciliations before closing inventory periods:

  1. Quantity: System on-hand vs. cycle count by location class
  2. Layer: Layer detail extension vs. inventory subledger
  3. GL: Inventory and COGS accounts vs. subledger roll-forward

Document known timing differences (in-transit, uninvoiced receipts) instead of forcing match through manual journal without narrative.

Common root causes of FIFO drift (portfolio examples)

SymptomLikely causes
COGS spike on slow moverBackdated receipts, wrong UOM conversion, manual layer edit
Negative remaining layerIssue before receipt posted, duplicate issue, bad transfer
Margin OK in warehouse, wrong in financeStandard vs. actual mix, wrong item type, GL mapping
Analytics vs. ERP mismatchETL snapshot timing, excluded adjustment reason codes

Controls worth documenting

  • Who can post inventory adjustments and in what dollar threshold
  • Whether backdated transactions are allowed and how they are flagged
  • How partial receipts and partial invoices interact with layer creation
  • How returns (RMA) restore or consume layers

Boundaries

This page does not:

  • Provide accounting, tax, or audit advice
  • Assert compliance with any specific standard
  • Claim results from a named implementation