Skip to main content
Back to Resources
Inventory Control10 min read

Stop Selling On-Hand Inventory. Sell Available-to-Promise or Pay for It.

M
Marc Verhoeven·Jul 7, 2026
Warehouse pallet storage used to calculate available-to-promise inventory

On-hand inventory is a warehouse fact. Available-to-promise is a customer promise.

Multichannel sellers get hurt when they publish the warehouse count directly to every channel. The sellable number has to subtract reservations, pick-in-progress units, quarantine, damaged stock, channel buffers, and risky inbound quantities.

A SKU has 200 units on the shelf. Forty are reserved for open orders, 20 are in a wholesale hold, 10 are in a damage review, and Amazon needs a 15-unit buffer because cancellation penalties are expensive. Publishing 200 units everywhere is not aggressive. It is mathematically careless.

That is why stop selling on-hand inventory is an operating test, not just a provocative headline. The question is whether the business can explain what happened, decide what should happen next, and prevent the same exception from becoming a weekly manual ritual.

In aTP discipline, the failure is not effort. It happens when the seller promises stock that the warehouse cannot safely confirm. The storefront knows the promise, the marketplace knows the sale, the warehouse knows the pick, and finance sees the result too late.

The operating principle behind aTP discipline

ATP discipline turns inventory from a static count into a promise rule. Each SKU needs a sellable calculation that changes by channel, not a single number copied into every marketplace.

Use aTP discipline as a practical diagnostic, not a slide-deck phrase. A good inventory control idea should change what the operator checks on Monday morning. It should make a bad count easier to explain, a risky channel easier to throttle, a bundle easier to trust, or a warehouse handoff easier to audit.

The useful version is specific enough to run against real data. Pick the SKU, channel, order, warehouse, and timestamp. Then trace the chain of events. If the team cannot trace the chain behind aTP, the next priority is not forecasting, AI, or another dashboard. The next priority is event quality.

The multichannel pressure behind aTP discipline

A single-channel store can survive some aTP discipline cleanup because the truth lives close to the sale. Once the same inventory is published across Amazon, Shopify, Walmart, eBay, TikTok Shop, wholesale, and POS, manual cleanup becomes a liability. Every channel has its own timing, retries, order states, cancellation pressure, and support expectations.

Amazon can penalize cancellations and late corrections. Shopify exposes inventory at location level, which means location mistakes can become promise mistakes. Walmart and other marketplaces add their own feed behavior, latency, and operational expectations. The seller has to keep aTP defensible across systems that do not behave the same way.

The problem compounds because each channel can be technically correct in isolation. The marketplace can show the last published count, the warehouse can show the last scanned count, and the OMS can show the last imported order. The customer only experiences the combined promise. If aTP discipline makes that promise wrong, the architecture is wrong even when every individual system has an excuse.

The event trail behind aTP discipline

Do not begin with a summary report. Begin with the event trail. For the SKU or workflow in question, collect order creation time, reservation time, channel update time, warehouse release time, pick time, ship time, return time, and every manual adjustment. The timeline matters because aTP is not just a quantity. It is a quantity at a moment in a process.

The minimum useful record for aTP discipline includes SKU, channel SKU, marketplace item ID where relevant, warehouse location, inventory state, order ID, adjustment reason, owner, previous quantity, new quantity, and publish status. Missing fields are blind spots.

Separate physical stock from sellable stock. Physical stock answers what exists. Sellable stock answers what can safely be promised. ATP discipline fails when those two ideas are treated as the same number.

  • Order events: created, paid, reserved, cancelled, fulfilled, refunded, and returned.
  • Inventory events: receipt, reservation, pick, shipment, adjustment, damage, quarantine, transfer, and release.
  • Channel events: publish request, accepted update, rejected update, retry, throttle, and direct manual edit.
  • Warehouse events: bin movement, pick exception, substitution, short pick, pack correction, and carrier handoff.

The calculation that makes the gap visible: aTP discipline

Use this as the working model for aTP discipline before you buy another app, add another channel, or blame the warehouse. It will not be perfect on the first pass, but it will expose the part of the system that needs attention.

ATP = on-hand - reserved - pick-in-progress - damaged/quarantine - channel buffer + eligible inbound

Run it on the top 20 SKUs by order volume, then run it again on the SKUs that create the most exceptions. The painful SKUs are usually the better teachers because they reveal where aTP discipline is weakest.

Do not let the team debate the aTP formula forever. The first version only needs to identify a repeated gap between what was available, what was promised, and what was fulfilled.

Run the aTP discipline model by channel and warehouse, not only by SKU. A SKU that is safe in one warehouse can be risky in another. A count that works on a low-velocity storefront can fail during a marketplace promotion. A bundle that behaves in DTC can break when a marketplace requires a different SKU structure.

Reading the signal without hiding the exception: aTP discipline

A healthy aTP result has two qualities: the number is acceptable and the explanation is clear. Low variance with no event history is not healthy. It only means the current count happens to look right.

Look for repeated patterns. If the same channel creates most retries, the integration needs attention. If the same warehouse creates most adjustments, the receiving or pick process needs attention. If the same SKU creates most exceptions, the catalog, bundle, alias, or product setup needs attention. If every team has a different explanation for aTP discipline, the source of truth is not strong enough.

Set thresholds for aTP discipline before the next incident. Decide what level of variance, retry count, manual adjustment volume, cancellation risk, or support volume triggers action. Thresholds keep the operation from depending on whoever happens to notice a problem first.

Where aTP discipline fools teams

The failure modes below are the traps that make operators think aTP discipline is healthier than it is.

1. Inbound purchase orders are counted as sellable before receipt.

For aTP discipline, "Inbound purchase orders are counted as sellable before receipt" is not a generic mistake. It is the moment the seller promises stock that the warehouse cannot safely confirm, and that means the customer promise is already weaker than the dashboard suggests.

Replay the last affected order and mark the first event that made the promise unreliable. If the team cannot connect that evidence back to aTP, the next fix will be another manual cleanup instead of a durable inventory control.

2. All channels receive the same inventory number despite different penalty risk.

For aTP discipline, "All channels receive the same inventory number despite different penalty risk" is not a generic mistake. It is the moment the seller promises stock that the warehouse cannot safely confirm, and that means the customer promise is already weaker than the dashboard suggests.

Compare the channel record, OMS event, and warehouse scan before deciding which system is wrong. If the team cannot connect that evidence back to aTP, the next fix will be another manual cleanup instead of a durable inventory control.

3. Warehouse pick waves reserve stock after channels have already sold it.

For aTP discipline, "Warehouse pick waves reserve stock after channels have already sold it" is not a generic mistake. It is the moment the seller promises stock that the warehouse cannot safely confirm, and that means the customer promise is already weaker than the dashboard suggests.

Look for the private workaround that fixed the symptom, because that workaround is often the missing product rule. If the team cannot connect that evidence back to aTP, the next fix will be another manual cleanup instead of a durable inventory control.

4. Returned units are added to ATP before inspection.

For aTP discipline, "Returned units are added to ATP before inspection" is not a generic mistake. It is the moment the seller promises stock that the warehouse cannot safely confirm, and that means the customer promise is already weaker than the dashboard suggests.

Separate physical stock, sellable stock, reserved stock, and published stock before drawing conclusions. If the team cannot connect that evidence back to aTP, the next fix will be another manual cleanup instead of a durable inventory control.

The operator moves that reduce the next exception: aTP discipline

The playbook turns aTP discipline into repeatable work. Use it during normal operations, not only after a bad sale event.

Step 1: Define which inventory states are allowed to contribute to ATP.

Write "Define which inventory states are allowed to contribute to ATP" as an operating rule, not a suggestion. The rule should name the owner, the trigger, the system of record, the data used, and the decision that follows.

The control should reduce the next exception, not merely explain the last incident. If the team cannot run "Define which inventory states are allowed to contribute to ATP" the same way twice, aTP discipline is still dependent on memory.

Step 2: Set channel-specific buffers for marketplaces with higher cancellation penalties.

Write "Set channel-specific buffers for marketplaces with higher cancellation penalties" as an operating rule, not a suggestion. The rule should name the owner, the trigger, the system of record, the data used, and the decision that follows.

The owner should be able to replay the event trail without asking another team for a spreadsheet. If the team cannot run "Set channel-specific buffers for marketplaces with higher cancellation penalties" the same way twice, aTP discipline is still dependent on memory.

Step 3: Separate physical on-hand reporting from sellable inventory publishing.

Write "Separate physical on-hand reporting from sellable inventory publishing" as an operating rule, not a suggestion. The rule should name the owner, the trigger, the system of record, the data used, and the decision that follows.

The first version should be narrow enough to ship this week and measurable enough to defend next month. If the team cannot run "Separate physical on-hand reporting from sellable inventory publishing" the same way twice, aTP discipline is still dependent on memory.

Step 4: Only include inbound stock when supplier ETA and receiving capacity are reliable.

Write "Only include inbound stock when supplier ETA and receiving capacity are reliable" as an operating rule, not a suggestion. The rule should name the owner, the trigger, the system of record, the data used, and the decision that follows.

The rule is only finished when the channel promise, warehouse action, and OMS event agree. If the team cannot run "Only include inbound stock when supplier ETA and receiving capacity are reliable" the same way twice, aTP discipline is still dependent on memory.

Step 5: Review ATP exceptions weekly for SKUs with high velocity or high margin.

Write "Review ATP exceptions weekly for SKUs with high velocity or high margin" as an operating rule, not a suggestion. The rule should name the owner, the trigger, the system of record, the data used, and the decision that follows.

The control should reduce the next exception, not merely explain the last incident. If the team cannot run "Review ATP exceptions weekly for SKUs with high velocity or high margin" the same way twice, aTP discipline is still dependent on memory.

The first month of cleanup: aTP discipline

Days 1-7: choose the highest-risk slice for aTP discipline. That might be the top 20 SKUs by order volume, the channel with the most cancellations, the warehouse with the most short picks, or the product group with the most bundle complexity. Export the raw events and keep every missing field visible.

Days 8-14: build the first aTP event timeline. Trace each selected SKU or workflow from inventory receipt to channel publication, order reservation, warehouse release, fulfillment, and return. Mark every place where the team relies on a spreadsheet, a manual edit, a private message, or a dashboard number that cannot be replayed.

Days 15-21: convert the highest-risk manual step into a rule for aTP. That rule might be a channel buffer, a quarantine state, a bundle component rule, a reserve-first workflow, a SKU alias cleanup, or an approval queue for manual adjustments. The rule should reduce the next incident, not merely document the last one.

Days 22-30: measure whether the aTP discipline rule changed behavior. Compare exception count, cancellation rate, retry count, manual adjustments, and support tickets before and after the change. If the metric improves but the team still needs the same manual cleanup, the root cause has not been fixed yet.

Numbers that show the fix is working: aTP discipline

  • ATP variance compared with physical on-hand. Track this for aTP discipline on a fixed cadence and review it by SKU, channel, and warehouse whenever possible. The blended number is useful for leadership, but the segmented number tells operators where to act.
  • Buffer consumption by channel. Track this for aTP discipline on a fixed cadence and review it by SKU, channel, and warehouse whenever possible. The blended number is useful for leadership, but the segmented number tells operators where to act.
  • Orders blocked by ATP rules that would have oversold. Track this for aTP discipline on a fixed cadence and review it by SKU, channel, and warehouse whenever possible. The blended number is useful for leadership, but the segmented number tells operators where to act.
  • Cancellation rate before and after ATP publishing. Track this for aTP discipline on a fixed cadence and review it by SKU, channel, and warehouse whenever possible. The blended number is useful for leadership, but the segmented number tells operators where to act.

Metrics for aTP discipline should create action. If a metric is reviewed every week but never changes a rule, buffer, SKU setup, routing path, or owner, it is probably a vanity metric. Keep the dashboard small enough that every number has a decision attached to it.

Implementation mistakes around aTP discipline

The first mistake with aTP discipline is solving the visible symptom only. Overselling, negative inventory, phantom stock, and bad routing usually point to a missing event, delayed reservation, weak SKU map, bad state transition, or unaudited override.

The second mistake is treating every channel equally while reviewing aTP. Channels have different update speeds, penalties, order velocity, return behavior, and customer expectations.

The third mistake is letting spreadsheets remain the hidden control plane. Spreadsheets are useful for analysis. They are dangerous when they become the place where the real aTP discipline rule lives. If a spreadsheet decides what can be sold, the OMS is no longer the source of truth.

The fourth mistake is buying software before defining ownership for aTP discipline. Name owners for SKU mapping, returns quarantine, bundle logic, channel buffers, and manual adjustments before expecting a system to fix the workflow.

Operating guides that support this fix: aTP discipline

For aTP discipline, use multichannel inventory management software to evaluate the platform layer, order lifecycle tracking to trace customer promises, and marketplace inventory management to pressure-test channel-specific rules.

The operating record this problem needs: aTP discipline

Nventory gives ATP a central place to live. Instead of asking Shopify, Amazon, the 3PL, and a spreadsheet to agree, the system calculates safe sellable units once and publishes channel-appropriate availability everywhere.

Nventory fits here because aTP discipline does not live inside one channel. It lives between channels, warehouses, products, orders, feeds, and people making manual fixes under pressure. A multichannel inventory system only earns its cost when it turns those moving parts into one operating record the team can trust.

Centralization does not remove judgment around aTP discipline. Operators still decide when to hold stock, when to favor a channel, when to accept backorders, when to quarantine returns, and when to override a rule. The difference is that those decisions become explicit events instead of hidden edits.

That is the OMS quality bar: it should not merely show aTP. It should explain the count, defend the promise, and show which system or person changed the state.

Before the fix is considered done: aTP discipline

  • Pick five recent problem orders and trace every inventory event from order creation to fulfillment or cancellation.
  • Document the current owner for SKU mapping, channel buffers, bundle rules, warehouse handoff, and manual adjustments.
  • Mark any step that depends on a spreadsheet, private Slack message, or direct marketplace edit.
  • Convert the highest-risk aTP discipline step into a rule, approval queue, or automated sync event.
  • Review the result after 30 days using exception count, cancellation rate, support tickets, and manual adjustment volume.

Frequently Asked Questions

Multichannel sellers get hurt when they publish the warehouse count directly to every channel. The sellable number has to subtract reservations, pick-in-progress units, quarantine, damaged stock, channel buffers, and risky inbound quantities.

Start with this working model: ATP = on-hand - reserved - pick-in-progress - damaged/quarantine - channel buffer + eligible inbound. Then run it on the SKUs, channels, or workflows creating the most exceptions.

The failure usually appears between systems: one channel sells, another channel lags, the warehouse sees a different SKU, or a manual edit bypasses the source of truth.

Nventory gives ATP a central place to live. Instead of asking Shopify, Amazon, the 3PL, and a spreadsheet to agree, the system calculates safe sellable units once and publishes channel-appropriate availability everywhere.