# Available to Promise (ATP) Calculator

> Source: https://netray.co/tools/available-to-promise-atp-calculator
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Calculate discrete ATP from on hand, scheduled MPS quantities and committed customer orders, and find the earliest period that can cover a new request.

## Category

supply-chain

## Audience

- Master scheduler
- Customer service
- Sales operations

## Tool

**Kind:** calculator

**Inputs:**

#### Projected on hand now

**Key:** on_hand

**Type:** number

**Default:** 40

**Min:** 0

**Step:** 5

**Unit:** units

#### MPS receipt, period 1

**Key:** mps1

**Type:** number

**Default:** 100

**Min:** 0

**Step:** 10

**Unit:** units

#### Customer orders committed, period 1

**Key:** committed1

**Type:** number

**Default:** 85

**Min:** 0

**Step:** 5

**Unit:** units

**Help:** Orders promised up to the next MPS receipt

#### MPS receipt, period 2

**Key:** mps2

**Type:** number

**Default:** 100

**Min:** 0

**Step:** 10

**Unit:** units

#### Customer orders committed, period 2

**Key:** committed2

**Type:** number

**Default:** 60

**Min:** 0

**Step:** 5

**Unit:** units

#### MPS receipt, period 3

**Key:** mps3

**Type:** number

**Default:** 100

**Min:** 0

**Step:** 10

**Unit:** units

#### Customer orders committed, period 3

**Key:** committed3

**Type:** number

**Default:** 20

**Min:** 0

**Step:** 5

**Unit:** units

#### New customer request

**Key:** request

**Type:** number

**Default:** 120

**Min:** 0

**Step:** 5

**Unit:** units

**Outputs:**

#### ATP in period 1

**Key:** atp1

**Expr:** on_hand + mps1 - committed1

**Format:** integer

**Primary:** true

**Description:** First period includes stock on hand

#### ATP in period 2

**Key:** atp2

**Expr:** mps2 - committed2

**Format:** integer

**Description:** Later periods count only their own receipt less their orders

#### ATP in period 3

**Key:** atp3

**Expr:** mps3 - committed3

**Format:** integer

#### Cumulative ATP through period 2

**Key:** cum2

**Expr:** atp1 + atp2

**Format:** integer

#### Cumulative ATP through period 3

**Key:** cum3

**Expr:** atp1 + atp2 + atp3

**Format:** integer

#### Earliest period that covers the request (0 means none)

**Key:** cover

**Expr:** if(lte(request, atp1), 1, if(lte(request, cum2), 2, if(lte(request, cum3), 3, 0)))

**Format:** integer

**Primary:** true

#### Shortfall if promised in period 1

**Key:** short_now

**Expr:** max(0, request - atp1)

**Format:** integer

**Disclaimer:** Discrete ATP as taught in standard production planning texts. Your ERP may use cumulative ATP with look ahead or rules that allow borrowing from later periods. Confirm before promising dates.

## Content

**Intro:** Available to promise is the uncommitted part of your supply that sales can still promise to a customer. It comes from the master schedule, not from MRP, and gives customer service a defensible delivery date. This calculator walks through the discrete method.

**Sections:**

#### How to use it

**Body:** Enter projected on hand now, the MPS receipt for each of the next three periods, and the customer orders already committed against each. Orders count against the period where the receipt that will fill them lands. Enter the new request quantity and the calculator shows ATP by period, cumulative ATP and the earliest period able to cover the whole order.

#### The formula

**Body:** In the first period, ATP is on hand plus the MPS receipt minus committed orders, up to but excluding the next MPS receipt. In later periods that receive an MPS quantity, ATP is that receipt minus the orders committed before the following receipt. Periods without a receipt show no ATP of their own. Cumulative ATP adds the periods up, which is how a large order can be promised across batches.

#### Reading the example

**Body:** With 40 on hand, a 100 receipt and 85 committed, period 1 ATP is 55. Period 2 adds 40 and period 3 adds 80. A request for 120 cannot be met in period 1 or 2 (cumulative 95) but fits in period 3 (cumulative 175). The promise date is therefore the end of period 3, unless the customer accepts partial shipments of 55 now and the rest later.

#### Common mistakes

**Body:** The usual errors are counting on hand again in later periods, ignoring orders committed beyond the horizon and promising MPS quantities that are not yet firm. Also remember ATP ignores capacity: for custom or capacity limited work you need capable to promise, which checks components and capacity as well. Update ATP whenever MPS changes.

**Cta:** Netray can expose ATP from your ERP's master schedule and order book as a read-only answer for customer service, with the calculation shown.

**Faq:**

#### What is available to promise?

**Answer:** ATP is the quantity of an item not yet committed to customer orders that is available to promise to a new order by a given date. It is derived from on hand, scheduled supply and existing commitments.

#### What is the difference between ATP and CTP?

**Answer:** ATP looks only at planned supply that already exists. Capable to promise also checks whether materials and capacity could produce additional units in time, so it can offer dates beyond current planned supply.

#### Why is ATP only calculated in periods with an MPS receipt?

**Answer:** Because supply arrives in those periods. Orders between receipts draw on the preceding receipt, so ATP is attributed to the period that provides the supply, and cumulative ATP shows what has built up.

#### Can I use ATP with make to order products?

**Answer:** Rarely. Make to order items have no planned supply to promise against, so lead time and capacity based promising is used instead. ATP suits make to stock and assemble to order items planned in an MPS.

## Search terms

available to promise calculator, atp calculation mps, available to promise formula, atp vs ctp, cumulative atp, available to promise example, how to calculate atp

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
