Your scorecard says OTIF 94%. The retailer cuts your slot. Who is lying? Almost never the GPS. Almost always the definition: someone measured “on time or complete,” accepted partials as In Full, or measured gate arrival while the SLA bills unload start.
This guide goes past dictionary definitions. You leave with:
- The correct formula and a Mexico worked example
- OTIF vs fill rate/OTD
- Industry benchmarks
- Seven operating causes that break OTIF in road freight
- A 6-step method to calculate it without creative Excel
OTIF (On Time In Full) is the percentage of orders delivered inside the agreed window with the full quantity, SKU, and condition. A late or incomplete order fails OTIF , even if the other half of the KPI was met.
What is OTIF in logistics?
OTIF is the service KPI that answers one business question: Did the customer get what they ordered, when we promised?
It grew in retail and CPG (appointment-driven DCs) and is now required by 3PLs, shippers, and B2B e-commerce platforms in Mexico.
Unlike “trips on time” or “route compliance %,” OTIF anchors to the customer order, not the tractor. A trip can arrive on time and still break OTIF if 12 pallets of SKU A are missing.
For foundational language, also read fill rate (completeness ≠ OTIF), OTD (on-time delivery), perfect order, proof of delivery (POD), and the hub distribution KPIs. OTIF is the outcome; visibility and evidence are the inputs. For the execution stack: TMS vs OCL.
OTIF formula (and the logical AND)
OTIF (%) = (Orders On Time AND In Full ÷ Total orders) × 100
- On Time: delivery inside the window (date/appointment ± tolerance) for the event you defined.
- In Full: 100% of what was ordered (lines, quantities, correct SKU, acceptable condition).
- AND: both must be true. They are not averaged. They do not “offset.”
Line-level variant: some companies compute OTIF at order-line level. It is stricter and useful in multi-SKU retail. The critical rule is not mixing order and line units in the same executive report.
Worked example: Mexico DC week
A 3PL ships 200 orders to a retailer in a week. Raw outcomes:
| Order outcome | Count | Counts for OTIF? |
|---|---|---|
| On time and complete | 156 | Yes |
| On time, incomplete | 22 | No |
| Late, complete | 14 | No |
| Late and incomplete | 8 | No |
True OTIF = 156 ÷ 200 × 100 = 78%.
If someone reports On Time = (156+22)/200 = 89% and In Full = (156+14)/200 = 85%, then “averages”–87%. Almost acceptable.
The AND says 78%. That 9-point gap is why Finance sees green and the customer sees red.
OTIF vs fill rate vs OTD vs OT/IF
| KPI | Measures | Typical failure it ignores |
|---|---|---|
| OTD / On Time | Punctuality | Incomplete order |
| Fill rate / IF | Completeness | Late delivery |
| OTIF | Punctuality AND completeness | Neither (requires both) |
| OT or IF (wrong) | Either condition | The other half of customer pain |
Use each KPI for its job:
- Fill rate: inventory/picking diagnosis
- OTD: network and appointment diagnosis
- OTIF: customer scorecard (perfect order adds docs/damage)
All three can coexist; only one defines whether you kept the commercial promise. The full distribution board (service, cost, control, and cash) is in distribution KPIs.

Why your OTIF lies (AND vs OR)
OR / average (inflates)
“Arrived on time or complete.” Or worse: (OT% + IF%) / 2. The deck looks better. The retailer fine does not care.
AND (real)
Counts only if both conditions are true on the same order. It hurts more. It is the number the customer already uses against you.
Other makeup tricks:
- Excluding “force majeure” without a code catalog
- Moving the window after the fact
- Counting a backorder as a new “perfect” order
- Measuring the first leg only, not final DC delivery
If documentation lives in chats, the KPI inherits the chaos. See why carriers do not document.
OTIF benchmarks by industry (Mexico)
There is no single SAT-published standard. These bands are operating references from shipper/3PL service-level agreements (SLAs) and scorecards (compass, not law). Sibling context: the 4th National Logistics Indicators Study 2026 (#SoyLogístico / LDM / EGADE) reports customer-delivery fill rate ~93% average in its sample (sectors ~93–96% in press coverage) — calibrate to your operation; do not copy it as a blind OTIF target.
| Context | Typical required / healthy OTIF | Alarm signal |
|---|---|---|
| Retail / CPG to DC | 95–98% | < 92% sustained |
| B2B / industrial distribution | 90–95% | < 88% |
| E-commerce / B2B last mile | 85–92% (short window) | < 80% + high dispute rate |
| Project / special haul | Milestone agreement (not a blind %) | Promises with no lead-time buffer |
A “high” OTIF built on renegotiated partials is fragile. A “lower” OTIF with a strict AND definition and month-over-month improvement is more credible in a procurement committee.
7 OTIF failure causes in Mexico transport
Poorly defined appointment / window
You arrived at 10:05 for a 10:00 slot. Is it Late? Without a written rule (gate vs dock vs unload start), every team invents its own truth.
Fake-high OT or unfair carrier blame
Accepted partials without reclassifying
The DC takes 80 of 100 cases “to keep the slot.” Operations marks Complete. The retailer sees store outs later. True OTIF: 0.
Inflated IF; real OTIF fails on the customer scorecard
Wrong picking / inventory
The shipment leaves “complete” in the TMS but SKUs are missing. The break started in the warehouse; transport still eats the shipper OTIF hit.
In Full fails before the tractor moves
Dwell and saturated docks
The trip was On Time to the gate and lost 4 hours in queue. If your window measures “unload start,” OTIF breaks on receiver capacity, not the carrier.
OT destroyed by dock bottlenecks
Reactive WhatsApp tracking
The customer reports the delay. No T−2h alert. Without early exception handling there is no plan B (another trip, split, reschedule).
You miss On Time while margin still existed
Ambiguous POD / evidence
Illegible signature, photo with no count, packing list vs order mismatch. In a dispute, “In Full” cannot be proven - the KPI becomes opinion.
Disputes and unauditable OTIF
Promising dates without capacity
Sales confirms “tomorrow 8:00” without validating carrier, load, or dock. OTIF is dead on arrival: bad promise, not bad execution.
Unreal lead time to structurally low OTIF
How to calculate OTIF in 6 steps
- 1
Define the unit of measure
Choose customer order (recommended), order line, or shipment. Mixing units makes OTIF incomparable across plants or 3PLs.
- 2
Lock the On Time window
Document promised date, appointment ± tolerance (e.g. 30 min), and measured event (gate arrival / unload start). Without this, OTIF is a story, not a KPI.
- 3
Lock the In Full rule
100% of lines and quantities, correct SKU, acceptable condition. Decide whether partial backorders count as a new order or a failure of the original.
- 4
Choose sources of truth
Arrival timestamp (GPS/portal/dock) + quantity evidence (POD, packing list, WMS). WhatsApp is a channel, not the official clock.
- 5
Compute the AND per order
For each order: OT = yes/no, IF = yes/no. OTIF_order = 1 only if both are yes. Sum and divide by orders in the period.
- 6
Segment and act
Break OTIF by customer, lane, carrier, and cause (late vs incomplete). Fix the real bottleneck; do not raise the average by gaming OR.
How to improve OTIF without gaming the KPI
On Time
Realistic appointments, lead-time buffer, T−2h / T−30min alerts, carrier plan B before the miss.
In Full
Inventory accuracy, verified picking, never close a shipment with an invisible shortage.
Evidence
Structured POD, timestamps, quantities. Without evidence, OTIF cannot be defended in a chargeback.
The most underestimated lever in Mexico: stop learning late. A track & trace agent that alerts exceptions in minutes (as in OCL Cargo) does not “invent” OTIF. It buys time to reschedule, split, or warn the DC before the AND breaks.
The 3PL audit case ($3.6M MXN in 6 weeks) shows the same principle in finance: 100% coverage beats sampling. In service, 100% visibility beats reactive WhatsApp.
Key takeaways6 points
- OTIF = On Time In Full: only orders that arrive on time AND complete count. It is an AND, not an average of two KPIs.
- Formula: (OTIF orders ÷ total orders) × 100. Late or incomplete = 0 for that order.
- The costliest mistake: reporting “on time or complete” (OR). It inflates the number 5–15 points while the customer still penalizes you.
- In Mexico, retail/CPG often requires 95%+; B2B 90–95%. The 2026 National Study cites ~93% average delivery fill rate in its sample — In Full context, not a blind OTIF target.
- Typical failures are not “the truck”: bad appointment definitions, dwell, incomplete picking, ambiguous POD, and WhatsApp tracking without timestamps.
- Sibling board: distribution KPIs.
Is your OTIF a true AND or a slide?
Related reading
Frequently asked questions
OTIF means On Time In Full: the share of orders delivered on time AND complete (agreed quantity, SKU, and condition). An order counts only if both conditions are true.
OTIF (%) = (Orders delivered on time and in full ÷ Total orders in the period) × 100. On-time but incomplete, or complete but late, does not enter the numerator.
Typical operating bands: retail/CPG SLAs often require 95–98%; B2B distribution often runs 90–95%; short-window B2B e-commerce often reports 85–92%. Below ~90% in large B2B accounts usually means penalties or lost dock slots.
No. Fill rate measures completeness. OTD/On-Time Delivery measures punctuality. OTIF requires both (logical AND). Reporting OT “or” IF as OTIF inflates the KPI by 5–15 points in real operations.
Common causes: poorly defined window (gate arrival vs unload start), treating partials as “in full,” measuring the carrier trip instead of the customer order, or averaging OT and IF instead of AND. The customer lives the AND; the spreadsheet sometimes lives the OR.
Define the unit (customer order), window (e.g. appointment ±30 min or promised date), completeness rule (100% lines/qty), and sources of truth (POD + packing list). Calculate weekly. Then automate timestamps and exceptions so the number stops depending on WhatsApp.
The track & trace agent monitors exceptions 24/7 (typical target: alert in under 10 minutes) and documents milestones with evidence-attacking On Time failures. Structured POD/Carta Porte evidence reduces disputes about In Full. OTIF rises when you stop learning late via chat.
