The monthly review deck is on slide four. The plant shows DIFOT at 91. The key-account manager has a customer email open that says 78. Someone asks whether the early deliveries were counted, someone else asks which date the promise was, and twenty minutes go to the spreadsheet instead of the customer.
Our view: DIFOT is an easy formula wrapped around four decisions, and the decisions move the number more than the trucks do. Get the decisions written down once and the formula takes care of itself.
DIFOT and OTIF are the same metric with the words in a different order
DIFOT stands for delivered in full, on time. OTIF stands for on time, in full. Both count an order as a success only when it is complete and arrives within the promised window. A complete order that is a day late fails. An on-time order that is two cases short fails too.
The names differ by region and by company habit, not by maths. Where teams do mean something different, it is because one of them added extra conditions, such as correct paperwork or zero damage. That is a definition choice, and it should be written beside the number. Our guide on OTIF vs fill rate vs DIFOT sets the related quantity metrics side by side.
The DIFOT formula has three versions, and they give three answers
The basic formula is simple: orders delivered in full and on time ÷ total orders × 100. Two variations are common, and each is defensible.
- Order level: each order passes or fails as a whole. This is the strictest and the closest to what a customer feels.
- DIF × DOT: the in-full rate multiplied by the on-time rate. It is quick to compute from two separate reports, but it assumes the two failures are unrelated.
- Unit or line level: counts cases or order lines delivered on time and in full ÷ cases or lines ordered. It is kinder, because one short line no longer fails a fifty-line order.
None of these is wrong. Mixing them is. A plant reporting unit level and a sales team reporting order level will never agree, however hard the trucks run.
An illustrative month shows how far apart they land
Here is a made-up example. Say a food manufacturer sends 100 orders to distributors in a month, 10,000 cases in all. Ten orders arrive late. Twelve orders are short on at least one line, and four of those twelve were also late.
| Method | Working | DIFOT |
|---|---|---|
| Order level | 100 − 10 late − 8 short-but-on-time = 82 orders | 82% |
| DIF × DOT | 88 in full ÷ 100 × 90 on time ÷ 100 = 0.88 × 0.90 | 79.2% |
| Unit level | 10,000 − 1,000 cases on late orders − 100 cases short on on-time orders = 8,900 | 89% |
Same trucks, same month, three numbers ten points apart. DIF × DOT comes out lowest here because the failures overlap: four orders were both late and short, and multiplying the rates counts them as if they were separate misses. Unit level comes out highest because the short cases were a small slice of big orders. The spread is the point. You can test your own month on the OTIF and fill rate calculator.
Early deliveries need a rule before they need a debate
Most DIFOT write-ups say on time means on or before the promised date. That works for a distributor with spare godown space. It does not work for a modern-trade DC that books dock slots, or for an RDC that has no room until Thursday's stock moves out. For them, a truck two days early is a truck waiting outside the gate with detention running.
So decide it in writing. Either early counts as on time, or there is a window, say no more than one day early and zero days late, and anything outside it fails. Then decide what happens when a customer refuses an early truck and it is redelivered on the right day.
The measurement point decides who looks bad
On time against what, measured where? The promise date can be the date the customer asked for, the date sales confirmed, or the date the plant committed after checking stock. The arrival can be gate-out plus transit time, the GPS arrival at the customer, or the POD stamp. Each pairing shifts blame between plant, transporter and customer.
This is why we think every late order needs an owner and a reason, not just a red cell. In SCM for Manufacturers, each delayed trip is attributed to shipper, customer or carrier, and that attribution feeds the carrier scorecard. A late order caused by a slot the customer moved is still late. It is just not the transporter's fault, and the review should be able to say so.
A DIFOT number without its definition is an opinion with a decimal point.
Picture the review once this is settled. The deck shows one DIFOT figure. Under it sits a single line: order level, promise date as confirmed by sales, arrival at POD, one day early allowed, damage counts as not in full. The late orders are already split by owner. The meeting starts on the three lanes that slipped, not on whose sheet is right.
A good DIFOT score is the one your customer's contract measures
People often ask what a good DIFOT score is. We would rather not quote an industry benchmark, because nobody can tell you which of the three methods above it was computed with. A benchmark built on unit level tells an order-level team nothing.
The useful comparisons are your own trend, measured one way, and the number your largest customers hold you to. If a key account scores you at order level with a strict window, compute yours the same way and track the gap. In the product's own KPI dictionary, OTIF is units delivered within the lane standard plus 10% with zero damage ÷ units dispatched, with a target of at least 95%. That is one choice, written down, and the logistics KPI dictionary shows the other nine defined the same way.
The fair objection: one definition hides useful views
There is a serious argument against forcing one definition. Transport genuinely controls transit, not stock. The plant controls stock, not the customer's dock. If everyone reports one strict order-level number, each team sees a figure it cannot move alone, and that can feel like being blamed for someone else's shortage.
We agree with the concern, and we do not think the answer is many definitions. The answer is one headline number with the failures broken down underneath: short because of stock, late because of placement, late in transit, refused at the customer. Each team then owns its slice of one shared number, instead of owning a private number nobody else believes. Our post on why sales and logistics argue about OTIF walks through that breakdown.
What to do this week
- Pull last month's orders and compute DIFOT at order level, DIF × DOT and unit level. Note the spread.
- Write down the promise date you will use and where arrival is measured: gate-out, GPS or POD.
- Set an early-delivery rule, in days, and decide how refused early trucks are scored.
- Decide whether damage or missing paperwork fails an order, and add that to the definition.
- Tag every failed order from last month with an owner: plant, carrier or customer.
None of this needs new software to start. It needs one page of definitions and the patience to apply them the same way every month. Once the number stops moving for reasons of arithmetic, the movements that remain are the ones worth discussing. For more on measuring outbound delivery, see the SCM for Manufacturers guides.
