# Distribution KPI formula sheet

> Every distribution metric used across these docs on one page, with its formula, its unit, which way is better and a link to the full guide and calculator.

Source: https://docs.lumina-erp.com/reference/kpi-formulas/

**In short.** One table per area: inventory, service, working capital, replenishment, pricing and forecasting. Use it as a cheat sheet, and follow the links when you need the reasoning or a calculator.

A one-page summary of the formulas used across our distribution guides. Each metric name links to its full guide and calculator. Every formula here is standard, but the inputs are where numbers go wrong. Before comparing a metric across periods, sites or companies, confirm that the inputs were measured the same way.

:::tip[Measure it the same way every time]
Pick one averaging method, one cost basis and one period length for each metric, write them down and keep them.
:::

## Inventory

These measure how much stock you hold, how fast it moves and how accurate the records are.

| Metric | Formula | Better when |
|---|---|---|
| [Average inventory](/distribution/inventory-turns-and-gmroi/) | (Beginning inventory + ending inventory) ÷ 2, or the average of month-end balances | n/a |
| [Inventory turns](/distribution/inventory-turns-and-gmroi/) | Cost of goods sold ÷ average inventory at cost | Higher, within reason |
| [Days on hand](/distribution/inventory-turns-and-gmroi/) | Days in period ÷ inventory turns | Lower, within reason |
| [Inventory-to-sales ratio](/distribution/inventory-turns-and-gmroi/) | Month-end inventory ÷ sales for the month | Lower, within reason |
| [GMROI](/distribution/inventory-turns-and-gmroi/) | Gross margin $ ÷ average inventory at cost | Higher |
| [Inventory record accuracy](/distribution/abc-analysis-and-cycle-counting/) | Counted locations within tolerance ÷ locations counted | Higher |

## Customer service

These measure how completely and how promptly you ship what customers order.

| Metric | Formula | Better when |
|---|---|---|
| [Line fill rate](/distribution/fill-rate-and-otif/) | Lines shipped complete on first shipment ÷ lines requested | Higher |
| [Unit fill rate](/distribution/fill-rate-and-otif/) | Units shipped on first shipment ÷ units requested | Higher |
| [Order fill rate](/distribution/fill-rate-and-otif/) | Orders shipped complete on first shipment ÷ orders | Higher |
| [OTIF](/distribution/fill-rate-and-otif/) | Orders delivered on time and in full ÷ orders | Higher |

## Working capital

These measure how long cash is tied up between paying suppliers and collecting from customers.

| Metric | Formula | Better when |
|---|---|---|
| [DSO](/distribution/cash-conversion-cycle/) | Average accounts receivable ÷ revenue × days in period | Lower |
| [DIO](/distribution/cash-conversion-cycle/) | Average inventory ÷ cost of goods sold × days in period | Lower |
| [DPO](/distribution/cash-conversion-cycle/) | Average accounts payable ÷ cost of goods sold × days in period | Higher, within terms |
| [Cash conversion cycle](/distribution/cash-conversion-cycle/) | DSO + DIO − DPO | Lower |

## Replenishment and cost

These set when to reorder and how much to buy, and give the landed cost of an item.

| Metric | Formula | Unit |
|---|---|---|
| [Reorder point](/distribution/safety-stock-reorder-point-eoq/) | Average daily demand × average lead time in days + safety stock | units |
| [Safety stock](/distribution/safety-stock-reorder-point-eoq/) | z × √(lead time × σ demand² + average demand² × σ lead time²) | units |
| [Economic order quantity](/distribution/safety-stock-reorder-point-eoq/) | √(2 × annual demand × order cost ÷ annual carrying cost per unit) | units |
| [Landed cost per unit](/distribution/landed-cost-and-freight-terms/) | (Goods + freight + duty + other costs) ÷ units | $ per unit |

In the safety stock formula, σ is standard deviation, demand is measured per day and lead time is measured in days. z is the number of standard deviations for the service level you want (about 1.64 for 95%).

## Pricing

These convert between cost, price and margin, and put an annual rate on a skipped supplier discount.

| Metric | Formula | Unit |
|---|---|---|
| [Gross margin %](/distribution/pricing-and-margin/) | (Price − cost) ÷ price | % |
| [Markup %](/distribution/pricing-and-margin/) | (Price − cost) ÷ cost | % |
| [Price for a target margin](/distribution/pricing-and-margin/) | Cost ÷ (1 − target margin) | $ |
| [Cost of passing up an early-pay discount](/distribution/cash-conversion-cycle/) | Discount % ÷ (100% − discount %) × 365 ÷ (net days − discount days) | % a year |

## Forecast accuracy

These produce a simple forecast and measure how far it misses.

| Metric | Formula | Better when |
|---|---|---|
| [Moving average forecast](/distribution/demand-forecasting-basics/) | Sum of the last n actuals ÷ n | n/a |
| [Exponential smoothing](/distribution/demand-forecasting-basics/) | α × latest actual + (1 − α) × previous level | n/a |
| [Mean absolute error (MAE)](/distribution/demand-forecasting-basics/) | Average of the absolute difference between actual and forecast | Lower |
| [MAPE](/distribution/demand-forecasting-basics/) | Average of absolute error ÷ actual, as a percentage | Lower |
| [Bias](/distribution/demand-forecasting-basics/) | Average of (actual − forecast) | Closer to zero |

## Margin and markup

Margin and markup are the most commonly confused pair in distribution pricing. A 25% markup on cost is a 20% margin on price. To convert, or to try your own numbers in the calculator on [Pricing and margin](/distribution/pricing-and-margin/):

| From | To | Formula |
|---|---|---|
| Markup | Margin | Markup ÷ (1 + markup) |
| Margin | Markup | Margin ÷ (1 − margin) |

---

Epicor, Prophet 21, P21 and DynaChange are trademarks or registered trademarks of Epicor Software Corporation registered in the United States and other countries. Kinetic is a trademark of Epicor Software Corporation. Lumina ERP is an independent consultancy and is not affiliated with, sponsored by or endorsed by Epicor.
