Skip to main content

Show FIFO Layer

GET 

/api/v2/fifo-layers/:fifoLayer

Returns a single FIFO layer with product, warehouse, source-document link, and origin-movement relations loaded.

Required scope: inventory:read

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

The origin block identifies the source document that created the layer and now includes origin.movement — the metadata of the inventory movement that created the layer (id, date, type, source link, quantity, unit_cost, inventory_status, reference, batch_number, expiry_date, warehouse, and warehouse_location). That origin movement is excluded from the layer's usage-movements listing by default, so its details are surfaced here instead.

Lot fields (batch_number, manufacture_date, expiry_date, days_to_expiry, lot_notes) are always included; days_to_expiry is a signed whole-day countdown (negative = already expired, null when the lot has no expiry).

Authentication: Requires Bearer token.

cost_version is the revaluation generation of the layer's current costs (starts at 1, advances with each posted revaluation). The origin movement's cost_version is the generation its unit_cost snapshot was recorded against — origin movements are immutable history, so a layer cost_version greater than the origin movement's means the layer has been revalued since receipt and the deltas are recorded as inventory revaluations.

The response includes review_status when the lot has been flagged or dispositioned — status (open, acknowledged, written_off, quarantined), a display label, the notes explaining why, the inventory_hold_id of any hold it placed, and reviewed_at. It is null for a lot that has never been flagged.

Note that available_quantity is layer accounting — original quantity minus fulfilled quantity — and is NOT available-to-promise. A quarantined lot keeps reporting its units here while the hold keeps them off sale, so read review_status alongside it.

cost_history is the layer's ordered cost progression: a base entry carrying the unit cost the layer was booked at, one adjustment entry for every cost change recorded since (with unit_cost_delta, new_unit_cost, effective_at, the reason, the resolution that dated it — restate back-dates the change to the original event, prospective dates it from when the change was made — plus cross-links to the source document and the journal_entry it posted), and a final current entry holding today's unit cost. A layer produced by a manufacturing order also carries a conversion entry directly after the base: the base is the materials cost booked at receipt, and the conversion entry is the operation, overhead and contractor cost capitalized onto the finished goods at production (unit_cost_delta, new_unit_cost, effective_at, reason_notes, and a source linking the producing manufacturing order; journal_entry is always null). It is not a revaluation, so it does not advance cost_version. The base, conversion and adjustment steps always sum to the current cost. source is null on adjustments recorded before the causing document was tracked; journal_entry is null when no live entry exists. Only returned by this endpoint — the list endpoint omits it.

pending_cost_changes lists staged cost changes that would move this layer's cost but have not been accepted yet, each with the triggering document reference and the unit_cost_delta it would apply. An empty array means nothing is outstanding. The costs elsewhere in this response do NOT include these amounts.

Request​

Responses​

OK