K-13
First Pass Yield
Of everything started into the process, how much came out conforming the first time — measured at which boundary, counted in which units, and with rework recorded where it can still be seen?
Definitions below are current to the date above — verify against current SAP, Oracle, Microsoft, Infor, and Databricks documentation before you build.
Formula
Formula
In words
FPY = Σ units first-pass good ÷ Σ units started
Where
- units that completed the declared boundary conforming on the first attempt, with no rework or scrap recorded inside it
- units started into the boundary in the period
- first pass yield of serial operation k
- a serial operation in the routing
- the number of serial operations in the routing
- rolled throughput yield across K strictly serial operations
- Numerator
- Units that completed the declared boundary conforming, with no rework and no scrap recorded on the way through
- Denominator
- Units started into the boundary in the period
- Grain
- Item × work center or line × period, with the boundary named on the figure
- Note
- Rolled throughput yield across a strictly serial routing is the product of the step FPYs — never their mean — and sits at or below the worst step by construction.
What first pass yield measures
First pass yield is the share of units started into a declared process boundary that came out conforming on the first attempt, with no rework and no scrap recorded anywhere inside it. Across a strictly serial routing the rolled throughput yield is the product of the step yields, never their mean.
First pass yield is the share of units that come through a production process conforming on the first attempt — no rework, no scrap, no fixed-before-anyone-noticed. Final yield reports what the process delivered eventually; first pass yield reports what it cost to get there, because every point of gap between the two was paid for in rework labor, queue time, and capacity the schedule thought it had.
Unusually for this dictionary's recent entries, there is a published definition to inherit: the ASCM Supply Chain Dictionary (19th edition, 2025) carries first pass yield as a headword — output that conforms on the first attempt, over everything entering the process. That settles the spirit of the numerator. Everything operational below it — where the process boundary sits, which unit votes, how a multi-step figure is rolled up — is convention this entry has to author, with the alternatives named beside each choice.
The metric's real integrity switch is not a definition choice but a recording one. A work order can pass through an operation more than once, and if the second pass updates the first pass's result in place, the evidence that a first pass failed is destroyed — the FPY computed from that table is final yield under a flattering name, and no arithmetic recovers the difference afterwards. The fix is upstream, in modeling rework as its own attempt, which is why this entry treats the data contract as part of the definition.
The last trap is aggregation. A routing's yield is not the mean of its operations' yields: where every unit must pass every step in sequence, the honest roll-up is the product of the step yields — rolled throughput yield — which is why a line of individually respectable steps can ship a startlingly small share of units untouched. Where the routing is not strictly serial, no step arithmetic substitutes for unit lineage.
Also answers to FPY · First Time Yield · First Time Through (FTT) · Throughput Yield
The decision switches
Four switches. The third one decides whether the metric can be computed at all.
First-pass boundary
- lowers the scoreEvery operation in the declared boundary, zero rework and zero scrap — the strict reading — one recorded rework loop anywhere inside the boundary fails the unit
- raises the scoreFinal inspection only — units reworked into conformance upstream still pass — this is final yield wearing FPY's name
Practice default Declare the boundary — operation, routing segment, or whole order — and credit only units with no rework or scrap recorded anywhere inside it. Publish final yield beside it, labeled as final yield.
Unit basis
- dependsUnits — the additive default — every unit votes once and the number survives drill-down
- lowers the scoreOrders or lots — one reworked unit fails the whole order, and a two-unit order counts the same as a two-thousand-unit one
Practice default Units as the headline. An order-level pass rate is a different metric on a different key — publish it under its own name if the shop runs order by order, never silently in FPY's place.
Rework recording
- dependsRework as its own attempt or operation — the first-pass result survives, and FPY stays computable from history
- raises the scoreRework overwrites the original result — everything eventually reworked into conformance reads as first-pass good, and the evidence is gone
Practice default Preserve every attempt. If the source updates results in place, FPY cannot be reconstructed for past periods — start capturing attempts at the landing layer and state when that clock started.
Single operation vs rolled throughput
- dependsPer-operation FPY at a named step — the diagnostic grain — each step's number stands on its own denominator
- lowers the scoreRolled throughput yield across serial operations — the product of the step yields — at or below the worst step by construction, and only valid when every unit passes every step in sequence
Practice default Publish per-operation FPY as the working grain. Roll up only by multiplying along a strictly serial routing, label the result rolled throughput yield, and never roll a routing with parallel or optional paths without unit lineage.
Common pitfalls
- Rework overwriting its first attempt — If reworking a unit updates the original operation result in place, first-pass evidence is destroyed and FPY silently becomes final yield. Model rework as its own attempt or operation in the landing layer, and treat a source that overwrites as unable to answer the question for past periods.
- Counting completions instead of starts — A denominator built from what finished the period excludes the scrap that never finished — precisely the loss the metric exists to expose. Take the denominator from units started into the boundary, and reconcile first-pass good, reworked-good, scrap, and still-in-process back to it.
- Averaging step yields — A routing's FPY is not the mean of its operations' FPYs, and a quarter's is not the mean of thirteen weekly percentages. Multiply along a strictly serial routing; for any period or scope roll-up, recompute summed first-pass good over summed starts.
- Letting the BOM scrap factor absorb real loss — The scrap factor on a BOM line is a plan allowance, not an observation. Netting realized scrap against it before reporting hides unplanned loss inside planned loss — keep the allowance on the plan side and realized scrap on the execution side as separate columns, so the variance between them stays visible.
- Confusing FPY with a machine's quality rate — The quality component of an equipment-effectiveness figure is good over produced at the machine event — it usually counts reworked units as good and knows nothing about what was started into the process. OEE itself is not published in this dictionary because its availability and performance components need planned-busy-time and downtime-event records at machine-event grain, which none of the six ERP references catalog. FPY is a process-boundary metric with starts in the denominator; publish the two as different numbers.
Store the components, not the ratio
Every switch above is a different way of reading the same underlying facts, so the components — quantities, dates, values, flags — are what belongs in the gold layer, never the finished percentage. Bronze keeps the source tables as extracted, silver resolves the encodings once, and gold carries a component-level fact that each variant of First Pass Yield reads as a SELECT — the pattern worked through in full in the OTIF entry’s landing pattern.