# Reorder Point Calculator

> Computes the inventory level at which to place a new order: average daily demand × lead time plus safety stock, where safety stock is either given directly or derived from a service level and the standard deviation of daily demand (z × σ × √lead time).

- Calculator id: `reorder-point` · Category: Business & Marketing (`business`) · Tool name: `calculate_reorder_point`
- Canonical page: https://tttkmbb.com/business/reorder-point · This document: https://tttkmbb.com/business/reorder-point.md · JSON definition: https://tttkmbb.com/business/reorder-point.json

## Purpose

Computes the inventory level at which to place a new order: average daily demand × lead time plus safety stock, where safety stock is either given directly or derived from a service level and the standard deviation of daily demand (z × σ × √lead time).

**Use when:** You need the stock level that triggers a purchase order so that demand during the supplier lead time is covered with a chosen service level.

**Do not use when:** You need the order size rather than the trigger level (use eoq), or lead time itself varies substantially (the formula would need the lead-time variance term).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `daily_demand_units` | number | units/day | required | Mean units sold or consumed per day. (min 0, max 1000000000) |
| `lead_time_days` | number | days | required | Days from placing an order to receiving it. (min 0, max 3650) |
| `safety_stock_units` | number | units | optional | Buffer stock to hold. Used when demand_std_dev_daily is not given; 0 if neither is given. (min 0, max 1000000000) |
| `demand_std_dev_daily` | number | units/day | optional | Standard deviation of daily demand; when given, safety stock = z × σ × √lead_time (takes precedence over safety_stock_units). (min 0, max 1000000000) |
| `service_level_percent` | number | % | optional, default 95 | Cycle service level (probability of no stockout during lead time) used to derive z; 90 → 1.28, 95 → 1.64, 99 → 2.33. (> 0) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `lead_time_demand_units` | number | units | daily_demand × lead_time_days. |
| `safety_stock_units` | number | units | Given value or z × σ × √lead_time. |
| `z_value` | number |  | Standard normal quantile of the service level (only when computed from demand_std_dev_daily). |
| `reorder_point_units` | number | units | lead_time_demand + safety_stock. |
| `reorder_point_rounded_up` | integer | units | Reorder point rounded up to a whole unit. |
| `safety_stock_method` | string |  | How safety stock was determined. |

## Formula

`lead_time_demand = daily_demand_units × lead_time_days; safety_stock = z(service_level) × demand_std_dev_daily × √lead_time_days (or the given value); reorder_point = lead_time_demand + safety_stock`

Assumes normally distributed daily demand, independent from day to day, and a fixed lead time; the cycle service level is the probability of not running out before the order arrives, not the fill rate.

## Data Sources

- Wikipedia – Reorder point — https://en.wikipedia.org/wiki/Reorder_point (reference, retrieved 2026-09-24)
- Wikipedia – Safety stock — https://en.wikipedia.org/wiki/Safety_stock (reference, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/reorder-point?daily_demand_units=…&lead_time_days=…`
- `POST https://tttkmbb.com/api/v1/calculate/reorder-point` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/reorder-point · OpenAPI operationId `calculate_reorder_point` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "reorder-point", "inputs": {…}}`

## Example

- 20/day, 7-day lead time, 50 safety stock: inputs `{"daily_demand_units":20,"lead_time_days":7,"safety_stock_units":50}` → `{"lead_time_demand_units":140,"safety_stock_units":50,"reorder_point_units":190,"reorder_point_rounded_up":190,"safety_stock_method":"given"}`
- 100/day, 4-day lead time, σ = 30, 95 % service level: inputs `{"daily_demand_units":100,"lead_time_days":4,"demand_std_dev_daily":30,"service_level_percent":95}` → `{"lead_time_demand_units":400,"z_value":1.6449,"safety_stock_units":98.69,"reorder_point_units":498.69,"reorder_point_rounded_up":499}`

```
GET https://tttkmbb.com/api/v1/calculate/reorder-point?daily_demand_units=20&lead_time_days=7&safety_stock_units=50
```

## Limitations

You need the order size rather than the trigger level (use eoq), or lead time itself varies substantially (the formula would need the lead-time variance term). Assumes normally distributed daily demand, independent from day to day, and a fixed lead time; the cycle service level is the probability of not running out before the order arrives, not the fill rate. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Why √lead time?**

Demand over L independent days has variance L × σ², so its standard deviation is σ × √L; the safety stock covers z of those standard deviations.

**What if lead time also varies?**

Use σ_LT = √(L·σ_d² + d²·σ_L²) as the standard deviation of lead-time demand; this calculator covers only demand variability.

## Related

- [Economic Order Quantity (EOQ) Calculator](https://tttkmbb.com/business/eoq.md) — How much to order once the reorder point is reached.
- [Normal Distribution Calculator](https://tttkmbb.com/statistics/normal-distribution.md) — Origin of the z value for the service level.
