Cost Tracking - FIFO

Last Updated: Aug 29, 2018 05:28PM PDT
The FIFO (first in first out) method of inventory valuation is a model in which the first goods purchased (first in) are also the first goods sold (first out). The earliest goods purchased are the first ones removed from an inventory account.

Note: This feature is available only on certain pricing plans. If you’re unsure whether your plan includes this feature, please contact Support.

Inventory Layers

Inventory layers are groupings of units that share the same variant, warehouse, arrival date, and landed cost. Layers store the total number of units in that group and the number of units not yet associated with shipments.

Generally, every time stock is added to a warehouse, a new inventory layer is created, and any time stock is decremented, units from the oldest inventory layer are depleted until it reaches 0 and is closed out.

If further units need to be depleted, they will be depleted from the next-oldest open inventory layer.

Please refer to the following example: 

Event
Open Units
Unit Cost
Open Unit Cost
Total Cost
PO 1 received (Layer 1)
100
10
1000
1000
Sale 1 shipped
-75
 
 
 
PO 1 (Layer 1)
25
10
250
 
PO (Layer 2)
+50
15
750
750
Sale 2
- 50
 
 
 
Initial Inventory (Layer 1)
0
10
0
 
PO (Layer 2)
25
15
375
 

In the table above, you can see that the costs of good sold under FIFO would be:

75 units from layer 1 @ $10 = $750
25 units from layer 1 @ $10 = $250
25 units from layer 2 @ $15 = $375

COGS = $750 + $250 + $375 = $1375

Closed Layers

Closed layers are layers that have been totally depleted. They have zero open units, so there are no more units from which to deplete.

Open vs Total Units

Open Units are the quantity on a layer open to be associated with a shipment or adjustment event. Total units include open units plus units already associated with shipments or adjustmens.

Editing Dates

Editing the arrival date for a ship notice with received line items will update all layer dates parented by this ship notice. This will not retroactively update associations that have already been processed, but will affect sequencing of any events processed after the update.

FIFO Processing Logic

Stitch creates an event every time inventory quantity or costs changes. In FIFO, events are processed to create and update inventory layers using the logic below.
Order Type Transaction Type Event Description
Purchase Order Receipt Receive units Creates a new inventory layer based on the landed cost from the ship notice line item and arrival date from the ship notice.
Update receipt unit qty up Not yet implemented: Increases the total and open quantity on the existing layer associated with the ship notice line item.
Update receipt unit down Not yet implemented: Decreases the total and open quantity on the existing layer associated the ship notice line item.

If there is insufficient open quantity on the layer, the variant's financial data will need to be reprocessed.
Update cost up Increases cost on all layers and transactions parented by the ship notice line item.
Update cost down Decreases cost on all layers and transactions parented by the ship notice line item.
Sales Order Shipment Ship units Depletes the open quantity of the oldest open layer in the warehouse and associates the cost from this layer with the shipment transaction.

If the quantity on the shipment line item is greater than the number of open units on inventory layers for the variant, the shipment will also deplete the next oldest layers until all units on the shipment have an associated layer.

If insufficient open units exist on layers at the warehouse (negative on-hand stock), processing for the variant will pause until new stock is received.
Cancel shipment of units Reverses the shipment, increasing open quantity in the layer associated with the shipment line item.

If no associated layer exists, a new layer will be created at the cost of the oldest open layer (or most recent closed layer if no open layers exist).
Return Return units to stock Creates a new layer with the date and cost of the layer associated with the corresponding shipment.

If no shipment can be found, a layer will be created with the cost of the current oldest open layer (or most recent closed layer if no open layers exist).
Transfer Order Shipment Ship units Depletes the open quantity of the oldest FIFO layer by the number of units shipped and associates the cost from this layer with the shipment transaction.

If the quantity on the shipment line item is greater than the number of open units on inventory layers for the variant, the shipment will also deplete the next oldest layers until all units on the shipment have an associated layer.

If insufficient open units exist on layers at the warehouse (negative on-hand stock), processing for the variant will pause until new stock is received.

Creates a new layer in the transfer warehouse with the same date, cost, and parent PO as the source layer.
Cancel shipment of units Reverses the shipment, increasing open quantity in the layer associated with the shipment line item.

Depletes the total and open units in the associated transfer warehouse layer.
Receipt Receive units Depletes the transfer warehouse layer and creates an identical layer in the receiving warehouse.
Reconciliation Adjustment Adjust unit quantity up Creates an inventory layer with the cost and date of the of the oldest open layer (or most recent closed layer if no open layers exist). If no open or closed layers exist, creates a layer with the current date and default unit cost.
Adjust unit quantity down Depletes the open quantity of the oldest open layer in the warehouse and associates the cost from this layer with the adjustment transaction.

If the quantity on the shipment line item is greater than the number of open units on inventory layers for the variant, the shipment will also deplete the next oldest layers until all units on the shipment have an associated layer.

If insufficient open units exist on layers at the warehouse (negative on-hand stock), processing for the variant will pause until new stock is received.

Initializing FIFO

To confirm your current cost-tracking method, go to Settings > General > Financial. Transitioning to FIFO is handled by Stitch staff. If you are on a qualifying plan, contact your customer success manager to request a migration call.