EnableYourData.com

KPI · Inventory, purchasing and production

Fill rate: formula and example.

Fill rate is the percentage of demand you deliver complete and straight from stock, without back-ordering. It can be measured on units, order lines or whole orders; order fill rate is the strictest, because one missing item makes the whole order incomplete. Fill rate shows how well your stock matches what customers actually order.

Fill rate formula

Orders (or lines or units) delivered complete in the first shipment ÷ total orders (or lines or units) × 100%

Worked example

In April 2026 Acme Groothandel shipped 3,200 orders. For 3,040 of them the first shipment was complete. The order fill rate is 3,040 ÷ 3,200 × 100% = 95.0%.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A higher fill rate means fewer back orders, fewer extra shipping costs and fewer disappointed customers. A higher fill rate usually needs more stock, so weigh it against days inventory outstanding. Compare with the service levels agreed with customers and check by product group or supplier where shortages arise.

Pitfalls with fill rate

  • Mixing up line and order fill rate; they diverge sharply on large orders.
  • Counting orders the customer asked to split as incomplete.
  • Counting substituted products as filled without recording it.

SQL & DAX

Calculating fill 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
WITH first_shipment AS (
  SELECT DISTINCT ON (order_id) order_id, complete
  FROM shipments
  ORDER BY order_id, shipped_at
)
SELECT date_trunc('month', o.order_date) AS month,
       COUNT(*) AS orders_shipped,
       COUNT(*) FILTER (WHERE fs.complete) AS shipped_complete,
       ROUND(100.0 * COUNT(*) FILTER (WHERE fs.complete) / NULLIF(COUNT(*), 0), 1) AS order_fill_rate_pct
FROM orders o
JOIN first_shipment fs ON fs.order_id = o.order_id
GROUP BY 1
ORDER BY 1;
DAX · Power BI
Orders Shipped = DISTINCTCOUNT(Shipments[OrderID])
Order Fill Rate = DIVIDE(CALCULATE(DISTINCTCOUNT(Shipments[OrderID]), Shipments[IsFirstShipment] = TRUE(), Shipments[Complete] = TRUE()), [Orders Shipped])

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for fill 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 fill rate?

Divide the number of orders delivered complete in the first shipment by the total number of orders shipped. You can run the same calculation on order lines or units. Always state which version you use.

What is the difference between fill rate and OTIF?

Fill rate only checks whether the delivery was complete. OTIF (on time in full) also requires the delivery to reach the customer on time. OTIF is therefore always equal to or lower than fill rate.

What is the difference between line fill rate and order fill rate?

Line fill rate counts each order line that was delivered in full, whereas order fill rate only counts orders where every line was complete. On orders with many lines, order fill rate is noticeably lower. Customers usually experience the order fill rate.

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.