How to Calculate DIFOT (With a Worked Example)
DIFOT is the number of orders delivered in full and on time, divided by total orders delivered in the period, multiplied by 100. An order has to pass both tests to count. Complete but late fails. On time but short fails. That all-or-nothing scoring is deliberate. It measures the promise the customer actually cares about instead of handing out two separate consolation prizes.
What is the DIFOT formula?
DIFOT % = (orders delivered in full and on time ÷ total orders) × 100
Deliver 50 orders in a month, 45 of them complete and on schedule, and you are at 45 ÷ 50 = 90% DIFOT. The arithmetic is the easy part. Everything that makes the number believable happens before you divide. The order-level, both-tests-or-nothing definition is the standard one, and it is the shape used in the general DIFOT definition as well as in ERP documentation such as Infor’s delivered-in-full-on-time reporting.
A worked DIFOT example: one month, ten orders
| Order | Qty ordered | Qty delivered | Promised | Delivered | In full? | On time? | DIFOT |
|---|---|---|---|---|---|---|---|
| A-101 | 1,200 | 1,200 | 03 Mar | 03 Mar | Yes | Yes | Pass |
| A-102 | 800 | 800 | 04 Mar | 06 Mar | Yes | No | Fail |
| A-103 | 450 | 430 | 05 Mar | 05 Mar | No | Yes | Fail |
| A-104 | 2,000 | 2,000 | 06 Mar | 05 Mar | Yes | Yes | Pass |
| A-105 | 640 | 640 | 09 Mar | 09 Mar | Yes | Yes | Pass |
| A-106 | 1,500 | 1,440 | 10 Mar | 12 Mar | No | No | Fail |
| A-107 | 300 | 300 | 11 Mar | 11 Mar | Yes | Yes | Pass |
| A-108 | 950 | 950 | 12 Mar | 12 Mar | Yes | Yes | Pass |
| A-109 | 1,750 | 1,750 | 13 Mar | 13 Mar | Yes | Yes | Pass |
| A-110 | 410 | 410 | 16 Mar | 16 Mar | Yes | Yes | Pass |
| Total | 10,000 | 9,920 | 7 of 10 = 70% |
Three orders broke the month. A-102 arrived complete, two days late. A-103 arrived on the day it was promised, twenty units short. A-106 managed both at once. Everything else went out clean, including one order that arrived a day early.
Why is our fill rate high but our DIFOT low?
Look at the totals row. The same month that scores 70% DIFOT delivered 9,920 of 10,000 units, which is 99.2% unit fill. Both numbers are correct. They are counting different things. Unit fill counts missing pieces, and 80 units out of 10,000 barely registers. DIFOT counts broken promises, and three broken promises out of ten is a third of the customer base having a bad month.
That gap is where the arguments usually start, and forcing the argument into the open is most of what the metric is for. A customer who got 430 of 450 units on the right day does not send a thank-you note for the 95.6%. They ring up about the twenty.
Should you use DIF x DOQ x DOT instead?
Some organizations decompose the metric: Delivery In Full % times Delivery On Quality % times Delivery On Time %, multiplied together, which is one of the variants set out in this walkthrough of OTIF, fill rate and DIFOT calculations. Run 90% x 98% x 85% and you land near 75%. The decomposition is useful for diagnosis because it shows which lever is bleeding. But multiplying three independently measured percentages does not give you the same number as order-level all-or-nothing DIFOT, and mixing the two definitions in one scorecard is a reliable source of cross-functional shouting matches.
What makes a DIFOT number actually useful?
Frankly, there is no right or wrong answer on which cut you pick. Three things matter far more than the choice of formula, whatever the KPI is.
Standardized measurement. Self-explanatory, and mostly there to stop different versions of the truth circulating in the same building. In this context, a measure aligned with the customer will give you the correct reality, however ugly that turns out to be.
Root causing, with a loss tree. Always build explainability into the KPI. Why is it low when it is supposed to be high, or high when it is supposed to be low? A multi-level loss tree lets subjectivity drain out and lets trends and patterns emerge, which is what allows a team to fix things structurally rather than argue about last week.
A loss reduction target, not a KPI target. The KPI should not be the target. When a measure becomes a target it stops being a good measure, which is Goodhart’s law and also what anyone who has watched a service scorecard for a few years already knows. Setting the target on loss reduction instead keeps teams pointed at root causes, and the KPI improves as a by-product rather than as a project of its own.
Put those three in progressively and how you cut the DIFOT pie stops mattering. You end up seeing service the way the customer measures it, segmented into standard loss reasons, with each loss reason allocated to the sub-team that controls it and an action plan against it. That is the version of the metric that lives up to its hype.
Decisions to make before you publish the number
Line level or order level. Request date or confirmed date. Your dock or theirs. Quality in or out. What the dispute process looks like. These decisions move the score more than performance does, and we cover all five in DIFOT vs OTIF.
Can you track DIFOT in a spreadsheet?
Below a few thousand order lines a month, yes, genuinely. One row per order, two pass/fail columns, a pivot table, done. The failure mode is never the tooling. It is discipline about where the dates come from. Pull them out of the system rather than from someone’s memory of when the truck left, or the gaming starts on day one.
