EnableYourData.com

KPI · Logistics

On-time delivery rate: formula and example.

On-time delivery (OTD) is the percentage of shipments delivered on or before the date promised to the customer. It measures whether you keep your delivery promise, regardless of whether the delivery was complete. It is one of the figures customers notice first.

On-time delivery rate formula

Shipments delivered on or before the promised date ÷ total shipments delivered × 100%

Worked example

In May 2026 Acme Groothandel delivered 3,500 shipments. Of these, 3,290 arrived on or before the promised date. The on-time delivery rate is 3,290 ÷ 3,500 × 100% = 94.0%.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A higher rate means customers can rely on your delivery promise. Break late deliveries down by cause: shipped late, or shipped on time but slow in transit. Compare by carrier, region and customer segment, and against the delivery promise in your terms or contracts.

Pitfalls with on-time delivery rate

  • Changing the promised date after the event, so late deliveries disappear.
  • Measuring on dispatch date instead of delivery date, when the customer experiences delivery.
  • Leaving out shipments without tracking data, which makes the figure look better.

SQL & DAX

Calculating on-time delivery rate in SQL and DAX

Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.

SQL · PostgreSQL
SELECT date_trunc('month', delivered_at) AS month,
       carrier,
       COUNT(*) AS delivered,
       COUNT(*) FILTER (WHERE delivered_at::date <= promised_date) AS on_time,
       ROUND(100.0 * COUNT(*) FILTER (WHERE delivered_at::date <= promised_date)
             / NULLIF(COUNT(*), 0), 1) AS on_time_pct
FROM shipments
WHERE delivered_at IS NOT NULL
GROUP BY 1, 2
ORDER BY 1, 2;
DAX · Power BI
Delivered Shipments = CALCULATE(COUNTROWS(Shipments), NOT ISBLANK(Shipments[DeliveredDate]))
On-Time Delivery % = DIVIDE(COUNTROWS(FILTER(Shipments, NOT ISBLANK(Shipments[DeliveredDate]) && Shipments[DeliveredDate] <= Shipments[PromisedDate])), [Delivered Shipments])

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for on-time delivery rate per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.

Read more →

In your Power BI dashboard

Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.

Read more →

Custom dashboards (pilot)

Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

How do you calculate on-time delivery?

Divide the number of shipments delivered on or before the promised date by the total number of shipments delivered in the same period. Use the date you promised the customer, not an internal plan. Multiply by 100 for a percentage.

What is the difference between on-time delivery and OTIF?

On-time delivery only checks whether the delivery was on time. OTIF (on time in full) also requires the delivery to be complete. OTIF is therefore always equal to or lower than on-time delivery.

Does an early delivery count as on time?

In most definitions it does, because the customer does not have to wait. For booked deliveries, such as to a distribution centre with fixed time slots, early can be as disruptive as late. Agree which window applies for each customer group.

Use AI on your own data. Securely, and without the headache.

In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.