Yard report, updated weekly

FIFO vs LIFO for issuing material out of a laydown yard

Rusty steel pipes stacked in rows outdoors in a laydown yard under a cloudy sky.

Most laydown yards don't pick a method on purpose. Pipe gets issued off whichever rack the foreman walks past first, rebar bundles get pulled from the front of the row because that's what's closest to the gate, and six months later someone's trying to figure out why a batch of fittings that showed up in March is still sitting there while April's delivery is half gone. That's a FIFO or LIFO problem even if nobody ever called it that.

FIFO: oldest stock first

First-in, first-out means the material that arrived earliest gets issued first. In a laydown yard this usually matters for two reasons. One is shelf life and condition: coated pipe, gasketed fittings, and anything with a rubber or elastomer component degrades sitting outdoors, and a joint that's been through two winters under tarp is not the same as one delivered last month. The other is cost reconciliation. If your buyout had price escalations across multiple purchase orders for the same spec, issuing oldest stock first keeps your cost-of-installed-material close to what you paid on the earliest PO, which matters when the project accountant is asking why unit costs on the job don't match the invoice totals.

The problem with FIFO in practice is enforcement. It requires knowing, at the rack or pile level, which units came in on which delivery, and that's hard to do with a clipboard and a memory of "I think that stack came in before the other one." If your yard doesn't physically segregate deliveries by date, or at least tag them, FIFO is a policy on paper and a guess on the ground.

LIFO: last-in, first-out

LIFO is less common as a deliberate yard policy and more common as what happens by default, because the newest delivery sits closest to the access road and the oldest material gets pushed to the back. Some yards do choose LIFO on purpose for aggregate stockpiles, where the pile is built in layers and reclaiming from the top is the only practical way to work it without re-handling the whole pile. For discrete stock like precast units or rebar bundles, LIFO as a deliberate choice is rarer. It tends to show up when a yard has grown faster than its layout plan and nobody's gone back to fix the flow.

Either rule can be fine for your project depending on material type and site constraints. What breaks reconciliation isn't the rule you picked. It's not knowing which rule you're following, because the count that would tell you doesn't exist.

Why the rule doesn't matter if the count is wrong

You can have a clean FIFO policy written into your procurement procedure and still be issuing material out of order, because the person pulling stock is working off what's physically in front of them, not off a dated inventory. The only way to run FIFO or LIFO on purpose is to know, at any given week, what's in the yard, how much of it, and roughly when each batch landed. Without that, "oldest first" is an instruction nobody can follow with confidence.

A weekly walk-the-yard count is supposed to close that gap, and most of the time it doesn't, because a hand tally of pipe joints and a guess at stockpile volume doesn't tell you which rack is March steel and which is July steel. It tells you there's steel.

A weekly drone pass over the yard gives you a counted record of what's sitting there: pipe joints and precast units by number, rebar bundles by count, aggregate stockpiles by volume, set next to the delivery log and the invoice. Match this week's yard report against last week's and against the delivery dates on the PO, and you can tell whether oldest stock is moving first or quietly aging at the back of the yard while you issue off the newest pallet because it's closer to the gate. That's the piece FIFO and LIFO policies tend to assume is already solved. If you want to see what that reconciliation looks like for your yard, Material Tracking is built around exactly that weekly count.

Pick the rule that fits your material. Then make sure you've got a count that lets you actually run it.

Start a pilot

← Back to the blog