How to Calculate On-Time Delivery: OTD, In Full and OTIF on Sixteen Order Lines
T. Krause
Shipped on time, received late
Line 5 in the example below left the dock on 10 June, the day it was promised. The customer booked it into goods receipt on 11 June. The shop's dispatch report shows it as on time. The customer's supplier scorecard shows it as late. Both have done their arithmetic correctly and they still disagree, because they are counting different events.
On-time delivery looks like the simplest metric in operations. Count the lines that arrived when promised, divide by all lines. In practice every part of that sentence needs a rule: what "arrived" means, which date counts as "promised", whether early is fine, and what happens to a line that arrives on time but short. Change one rule and the same month can read 81% or 33%.
The on-time delivery formula
On-time delivery (OTD) = order lines delivered on time ÷ order lines due × 100
For this example a line counts as on time if the customer receives it on the promised date or up to two days before. Anything earlier is early, and early is a miss here, because a pallet that turns up four days ahead takes floor space the customer had planned for something else. Some companies accept any early delivery. Pick a rule and keep it from month to month.
On time says nothing about quantity, so a second check covers it:
In full = order lines delivered complete ÷ order lines due × 100
A short delivery followed by a top-up a week later is two deliveries. The line failed the in-full check at the first one, and the top-up doesn't repair it.
A line that passes both checks counts toward OTIF, on time in full:
OTIF = order lines delivered on time and complete ÷ order lines due × 100
The promised date is the one in your order confirmation, the requested date the one on the customer's purchase order. They often differ, because the confirmation is where a supplier pushes back on dates it can't meet. Score yourself on the promise and you learn whether your confirmations hold. A customer who rates suppliers on its own purchase order dates sees a different month, usually a worse one, so it pays to calculate that version too.
Sixteen order lines from one June
None of this happened. The sheet metal shop and its order book are made up for this article to show the arithmetic, and no client's data sits behind any figure.
The shop makes brackets and enclosures for equipment builders. In June 2026 it has six orders with sixteen lines due. For each line the list shows the date the customer asked for, the date the shop promised, the date it shipped, the date the customer received it, and the quantities ordered and received. Line 15 had not shipped by the end of June.
| Line | Order | Requested | Promised | Shipped | Received | Qty ordered | Qty received |
|---|---|---|---|---|---|---|---|
| 1 | O-41 | 2 Jun | 4 Jun | 3 Jun | 4 Jun | 300 | 300 |
| 2 | O-41 | 2 Jun | 4 Jun | 3 Jun | 4 Jun | 150 | 150 |
| 3 | O-42 | 5 Jun | 5 Jun | 4 Jun | 5 Jun | 60 | 60 |
| 4 | O-42 | 5 Jun | 9 Jun | 8 Jun | 9 Jun | 24 | 24 |
| 5 | O-43 | 10 Jun | 10 Jun | 10 Jun | 11 Jun | 400 | 400 |
| 6 | O-43 | 10 Jun | 12 Jun | 11 Jun | 12 Jun | 90 | 75 |
| 7 | O-43 | 10 Jun | 12 Jun | 5 Jun | 8 Jun | 36 | 36 |
| 8 | O-44 | 15 Jun | 15 Jun | 12 Jun | 15 Jun | 18 | 18 |
| 9 | O-44 | 15 Jun | 17 Jun | 17 Jun | 18 Jun | 45 | 45 |
| 10 | O-44 | 15 Jun | 17 Jun | 16 Jun | 17 Jun | 200 | 200 |
| 11 | O-45 | 19 Jun | 19 Jun | 18 Jun | 19 Jun | 36 | 36 |
| 12 | O-45 | 19 Jun | 23 Jun | 24 Jun | 25 Jun | 500 | 500 |
| 13 | O-45 | 19 Jun | 19 Jun | 15 Jun | 16 Jun | 12 | 12 |
| 14 | O-46 | 24 Jun | 24 Jun | 23 Jun | 24 Jun | 80 | 80 |
| 15 | O-46 | 24 Jun | 26 Jun | open | open | 30 | 0 |
| 16 | O-46 | 24 Jun | 26 Jun | 25 Jun | 26 Jun | 64 | 64 |
The quantities are quick. Line 6 brought 75 of 90 pieces, and line 15 brought nothing. 14 of 16 lines arrived in full, which is 87.5%.
The dates take longer. Lines 5 and 9 arrived one day after their promise and line 12 two days after. Line 7 arrived four days early and line 13 three days early, both outside the two-day limit. Line 15 never arrived. That leaves 10 of 16 lines on time, an OTD of 62.5%.
OTIF needs both. Line 15 fails both checks, so the failures add up to seven lines rather than eight. 9 of 16 lines were on time in full, an OTIF of 56.25%.
Against the requested date, the picture changes again. The shop promised a later date than the customer asked for on ten of the sixteen lines. Only lines 3, 7, 8, 11 and 14 arrived within the window around the requested date. Line 7 is the odd one. Against its promise it was four days early. Against the customer's request of 10 June it was two days early and counts as on time. That gives 5 of 16, or 31.25%, and since all five were complete, OTIF against the requested date is also 31.25%.
Five ways the figure goes wrong
Each one uses the sixteen lines above.
1. Leaving open lines out
Line 15 was due on 26 June and nothing had shipped. A report that only looks at delivered lines drops it, and OTIF rises from 9 of 16 to 9 of 15, from 56.25% to 60.0%. The worst failure in the month, a line with nothing delivered, has improved the score.
Every line that is due in the period belongs in the denominator, delivered or not.
2. Counting the dispatch date
The shop's own system knows when goods leave. It often doesn't know when they arrive. Score the shipped date against the same window and lines 5 and 9 turn on time, since both left on their promised day. Line 8 goes the other way. It shipped on Friday 12 June for a Monday 15 June promise, three days early, and the window marks it as early.
On balance OTD rises from 62.5% to 68.75% and OTIF from 56.25% to 62.5%. If you can only measure dispatch, add the normal transit time to the ship date, or call the figure on-time dispatch so nobody mistakes it for what the customer sees.
3. Treating every early delivery as on time
Drop the two-day limit and lines 7 and 13 count. OTD goes from 62.5% to 75.0%, OTIF from 56.25% to 68.75%.
Whether that's right depends on the customer. Line 13 arrived on 16 June for a 19 June slot. A customer running a tight goods-in schedule may have had nowhere to put it. Agree the early limit with the customers who care, and use one rule in the report.
4. Overwriting the promise date
When a delay becomes known, a planner often enters the new date in the order. Done for lines 5, 9 and 12, with the new promise matching the day each one arrived, all three become on time. OTD climbs to 81.25% and OTIF to 75.0%, yet the customers received exactly what they received before.
The fix is a second date field. Copy the promise into it when the confirmation goes out, lock it, and run the report against the copy.
5. Switching between lines and orders
Orders O-41 and O-42 were on time in full on every line. Each of the other four orders has at least one failed line. At order level OTIF is 2 of 6, or 33.3%. At line level it is 56.25%.
Order O-44 shows why the order view is harsher. Two of its three lines were fine, but line 9 came a day late, and a customer who can't start assembly until the whole kit is there waited for line 9. Which view to report depends on what your customers do with the parts. Choose it for the trend line and leave it there. If you want the other, plot it as a second line on the same chart.
The next step
Take the order lines that were due last month, shipped or not, and add the column most exports don't have, the first promised date. If your ERP only keeps the current promise, start saving the first one now. Next month's figure will then be the first one you can trust. Settle the early limit before you look at any result, so the result can't shape the rule, and put OTIF against the requested date next to the promised-date figures.
For each late line, find out where it waited between order entry and dispatch. How to calculate lead time follows one order through six stations and separates the work from the queuing. If the waiting sits in front of one machine, how to calculate OEE shows whether it is short of capacity or losing time to stoppages.
Our process analysis comes with a fixed scope, a fixed duration and a fixed price. It follows one core process, order processing for instance, on site from the triggering request to the close and measures it with real timestamps. Applied to delivery reliability, that shows where a promised date is first entered and each point where someone later moves it, which the ERP report rarely records.
