KPI Library / Delivery
OTIF (On Time In Full)
Formula: Orders delivered on time AND at full ordered quantity ÷ total orders
Typical range: 90-95% is strong on most CPG scorecards; many retailers apply deductions below 95%
OTIF measures the percentage of orders that arrive both on the promised date and at the full ordered quantity, with no partial credit for getting one right and not the other. It is a harder number than on-time delivery (OTD) alone, because a shipment that is on time but short, or full but late, still counts as a miss.
What good looks like
Strong operations run 90 to 95% OTIF, and many retail and CPG customers formalize the target in a supplier scorecard with chargebacks attached below 95%. Because OTIF compounds two independent failure modes, it is almost always lower than either OTD or fill rate measured on its own; a plant running 97% OTD and 96% fill rate is not running 96-97% OTIF, it lands closer to 93%.
The gaming risk here is computing OTIF as OTD% multiplied by fill rate% instead of evaluating both conditions on the same order. That approximation overstates the real number, sometimes by several points, because it assumes late orders and short orders are unrelated when in practice they are often the same orders.
OTIF in Power BI (DAX)
With an order fact carrying quantity and date fields at order grain:
OTIF Orders =
CALCULATE (
DISTINCTCOUNT ( fact_orders[order_id] ),
fact_orders[actual_delivery_date] <= fact_orders[promise_date],
fact_orders[shipped_qty] >= fact_orders[ordered_qty]
)
Total Orders = DISTINCTCOUNT ( fact_orders[order_id] )
OTIF % = DIVIDE ( [OTIF Orders], [Total Orders] )
OTIF % by Customer =
CALCULATE ( [OTIF %], ALLEXCEPT ( fact_orders, fact_orders[customer_id] ) )
Evaluate both conditions inside the same CALCULATE, on the same row context, rather
than computing OTD% and IF% as two separate measures and multiplying them after the
fact.
Common mistakes
- Multiplying OTD% by fill rate% instead of testing both conditions per order. The two failures correlate more often than not, so multiplying independent-looking rates understates how bad OTIF actually is.
- Measuring at the line level instead of the order level. A customer doesn’t experience nine of ten lines shipped complete as a win; they experience one short item as a miss on the whole order.
- Leaving OTIF blended across all customers. A plant can average 94% while chronically shorting its largest account, and a blended number hides exactly the relationship most worth protecting.