EnableYourData.com

KPI · Logistics

Fulfilment cost per order: formula and example.

Fulfilment cost per order is the total cost of handling orders divided by the number of orders shipped. It includes warehouse staff, packaging, storage and often shipping too. It shows what logistics really costs you per order, whether you do it yourself or outsource it.

Fulfilment cost per order formula

(Warehouse staff + packaging + storage + shipping) ÷ number of orders shipped

Worked example

In May 2026 Acme Groothandel spent €62,000 on warehouse staff, €8,400 on packaging, €18,000 on warehouse rent and energy and €27,200 on shipping. That totals €115,600 for 3,400 orders. Fulfilment cost per order is €115,600 ÷ 3,400 = €34.00, or €88,400 ÷ 3,400 = €26.00 excluding shipping.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

Lower fulfilment cost per order leaves more margin, especially on small orders. It often falls as volumes rise, because fixed costs such as rent are spread over more orders. Compare with average order value and margin per order, and with quotes from fulfilment providers if you are considering outsourcing; make sure the same costs are included on both sides.

Pitfalls with fulfilment cost per order

  • Counting only staff and shipping and forgetting packaging, storage and systems.
  • Comparing in-house fulfilment with an outsourcer without matching cost categories on both sides.
  • Not allocating agency staff in busy months to the warehouse.

SQL & DAX

Calculating fulfilment cost per order 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 labour AS (
  SELECT date_trunc('month', p.period_month) AS month, SUM(p.gross_cost) AS warehouse_labour
  FROM payroll p
  JOIN employees e ON e.employee_id = p.employee_id
  WHERE e.department = 'warehouse'
  GROUP BY 1
),
shipping AS (
  SELECT date_trunc('month', shipped_at) AS month,
         SUM(cost) AS shipping_cost,
         COUNT(DISTINCT order_id) AS orders_shipped
  FROM shipments
  GROUP BY 1
)
SELECT s.month,
       ROUND(l.warehouse_labour / NULLIF(s.orders_shipped, 0), 2) AS labour_per_order,
       ROUND((l.warehouse_labour + s.shipping_cost) / NULLIF(s.orders_shipped, 0), 2) AS fulfilment_cost_per_order
FROM shipping s
JOIN labour l ON l.month = s.month
ORDER BY s.month;
DAX · Power BI
Fulfilment Cost = CALCULATE(SUM(Payroll[GrossCost]), Employees[Department] = "warehouse") + SUM(Shipments[Cost])
Fulfilment Cost per Order = DIVIDE([Fulfilment Cost], DISTINCTCOUNT(Shipments[OrderID]))

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for fulfilment cost per order 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 fulfilment cost per order?

Add up warehouse staff, packaging, storage and shipping costs for a period and divide by the number of orders shipped. Show the figure with and without shipping, because shipping is often the largest item. Use the same period for costs and orders.

What is included in fulfilment costs?

Fulfilment covers everything between an order coming in and it being shipped: storage, picking, packing, packaging materials and often the shipping itself. Some businesses also include returns handling and warehouse systems. Record which items you include.

Is outsourcing fulfilment cheaper?

That depends on your volume, your order profile and what your own warehouse really costs. A fulfilment provider usually charges per order, per pick and per storage unit, whereas your own costs are partly fixed. Work out both options with the same cost categories and the same order volume.

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.