> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aimventory.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sales, reservations, and allocation

> How AIM links an order to inventory, moves a reservation through fulfillment, and applies the named flow's restoration result.

Sales, reservations, and allocation answer different questions. A **sale** records an order and its channel status. A **reservation** records a commitment and, on the flows that use one, the work still to do for that commitment. **Allocation** is the set of links and consumed unit-and-cost evidence that shows which inventory a sale uses. There is no single allocation record that explains every channel.

## How it fits together

```mermaid theme={null}
flowchart LR
    SALE["Sale / order"] -->|"can link to"| ITEM["Inventory item + location"]
    SALE -->|"can identify"| UNIT["Inventory unit"]
    SALE -->|"when the flow creates one"| RES["Reservation"]
    RES -->|"tracks quantity and flow-specific evidence"| PROGRESS["Flow-specific commitment state"]
    RES -->|"reserve: Available decreases; Reserved increases"| COMMIT["Committed"]
    COMMIT -->|"fulfill or release: Reserved decreases"| NEXT["Next fulfillment state"]
    COMMIT -->|"named flow-specific outcome"| RESTORE["Flow-specific restoration result"]
```

The sale keeps the channel's own status. AIM can also group that status into one operational stage: **pending**, **in transit**, **completed**, **cancelled**, or **attention**. A reservation is conditional: some Shopify-backed and manual flows create one, while this page does not claim that every marketplace sale does.

## The objects and states

| Object or state        | What it holds or answers                                                                                                                                         | Where you meet it in AIM                 |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| Sale                   | The order, customer and channel context, the channel-native status, and links to inventory or post-sale records when those links exist.                          | Sales and Fulfillments                   |
| Operational sale stage | A common queue view of a sale: pending, in transit, completed, cancelled, or attention. The original channel status remains available as source detail.          | Fulfillments                             |
| Inventory item         | Counters for a variant at a location, including the Available pool that reservations draw from.                                                                  | Inventory                                |
| Inventory unit         | One identifiable physical pair with its own cost, status, and ownership. A sale can identify a unit when the flow selects one.                                   | Inventory Units and fulfillment work     |
| Reservation            | A commitment tied to a quantity and location, with flow-specific fulfillment evidence when the path tracks it.                                                   | Inventory Reservations                   |
| Allocation evidence    | The sale's inventory-item and location links, a selected unit when present, consumed unit-and-cost details, and a reservation record when that flow creates one. | Sale, fulfillment, and reservation views |

## One example, carried through

Harbor Kicks has two owned pairs of the fictional Jordan 4 “Harbor Blue,” size 10, at its Indianapolis back room. A Shopify customer orders one pair for shipping.

Before the order is reserved, Harbor has 2 Available and 0 Reserved. When the Shopify order creates its reservation, Available decreases to 1 and Reserved increases to 1. The reservation identifies the location, and AIM records the selected unit-and-cost evidence for the sale. If the reserved pair is still waiting on the shelf, the building can still contain both pairs; Available is not a count of every pair in the building.

When Harbor picks and ships the order, the reservation moves through the fulfillment work and Reserved decreases to 0. Available does not decrease a second time: that happened when the reservation was made. The Fulfillments view gives Harbor the order, location, tracking, and pick evidence needed to verify the handoff.

For this Shopify-backed cancellation path, if Harbor cancels the order and the authoritative cancellation path establishes that the pair is back, that path restores the existing unit and cost evidence once. Available is restored through that path; AIM does not create a second, synthetic pair. Harbor should not release a reservation and then apply a separate inventory restoration for the same event.

## What is always true

* **Reserved is not a second sellability deduction.** Reservation already lowers Available. Subtracting Reserved from Available counts the same committed pairs twice.
* **The reservation change is a paired movement.** Reserving `n` lowers Available by `n` and raises Reserved by `n`. Fulfilling or releasing the existing commitment lowers Reserved by `n`; updates across matching condition rows still represent one requested quantity, not one debit per row.
* **Restoration belongs to the named flow.** Cancellation, return, reservation release, and sale reversal are different actions. Each named flow defines its restoration result; follow that flow's authoritative path and do not apply a second separate restock for the same event. Shopify cancellation restores existing unit-and-cost evidence once without a synthetic pair, while manual reservation release has the exceptional legacy shortfall behavior described below.
* **AIM keeps source detail and operational stage separate.** The channel-native sale status remains intact while the operational classifier groups the sale into pending, in transit, completed, cancelled, or attention. For a Shopify-backed sale, linked Shopify truth can refine a pending-looking sale, but an explicit terminal sale state wins.
* **Allocation evidence is distributed.** The sale links, selected unit, consumed unit-and-cost evidence, and reservation record each answer part of the question. A reservation record appears only on a flow that creates one.
* **Unit selection follows the fulfillment ownership policy in effect for the sale.** The fallback prefers owned inventory, not as a universal rule. Other supported choices can use only owned inventory, only consigned inventory, consigned inventory first, the oldest unit first, or a manually selected unit. AIM does not promise that this page exposes or changes the active policy.
* **Ownership and custody are separate.** Fulfillment work can authorize and track a unit without changing who owns it.

<Warning title="Do not subtract Reserved from Available">
  The Reserved number tells you what is committed and lets you trace the commitment. It is not a second amount to remove from Available. When Harbor's example moves from 2 Available to 1 Available and 1 Reserved, the pair has already left the Available pool.
</Warning>

## Where the channels differ

The same Harbor Blue size can enter AIM through different paths. The timing below belongs to the named path; do not carry one channel's reservation timing to every marketplace.

| Channel or path                                                              | What happens when the sale or reservation is created                                                                                                                                              | What happens during fulfillment or reversal                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Shopify-backed sale, including TikTok orders that arrive through Shopify** | A SHIP, PICKUP, or DELIVERY order can create a reservation at order time. AIM consumes the selected unit-and-cost evidence and lowers Available, then raises Reserved for the consumed amount.    | Shipping or pickup consumes the active reservation and lowers Reserved once; it does not lower Available a second time. Cancellation releases the reservation without restocking in that release step, then restores existing unit-and-cost entries once through its authoritative path without a synthetic pair; refund uses its own path.                                                                                    |
| **Manual reservation**                                                       | AIM checks aggregate Available across the relevant locked rows, creates a reservation, consumes the selected unit-and-cost evidence, and changes Available at creation.                           | Releasing the reservation lowers Reserved once and first restores the exact units tied to that reservation; Available rises by the units actually restored. If that exact restoration has an unmatched shortfall, the current legacy fallback can create replacement inventory-unit/cost entries for that shortfall. This exceptional fallback must be audited. Do not perform a second separate restock for the same release. |
| **StockX, GOAT, eBay, Square, Depop, and other marketplace or POS sales**    | Do not assume a universal reservation at order creation. The directly evidenced generic marketplace path deducts Available through the sale-deduction flow; some sale modes skip local inventory. | A blocked deduction is review and listing containment territory, not an automatic restock or relist. Marketplace state is recorded only after an exact, identity-scoped confirmation. Cancellation choices can be no action, restock only, or restock and relist; some post-shipment paths wait for physical receipt before restoring inventory.                                                                               |

For Harbor's Shopify order, reservation time is the inventory event. For other channel paths, do not infer that timing merely from the fact that the product is the same.

<Warning title="Do not perform a second manual restock">
  Manual reservation release first restores exact reservation-linked units, then applies its current legacy shortfall fallback when needed. Operators must not perform a second separate restock for the same release; audit the exceptional fallback instead.
</Warning>

## Where you see this in AIM

* **Fulfillments** shows the platform and order, location, pick sublocation or serial, tracking, raw status, and the action available to complete or mark an item unable to be fulfilled.
* **Inventory Reservations** shows the customer, product, SKU and size, location or sublocation, quantity, pickup information, and a normalized stage. It does not expose a separate Reserved sellability number.
* **Cancelled Sales** presents explicit physical-outcome choices such as **No action**, **Restock only**, and **Restock and relist**. Those choices are decisions about what happened to the inventory, not replacements for the sale's original channel status.
* **Marketplace Sales** provides channel, payout, shipping, and tracked-or-not-tracked linkage context. Use the fulfillment and reservation surfaces to verify the inventory handoff; the sales view alone does not establish the inventory movement.

## Common misconceptions

**“Reserved is still inside Available, so I should subtract it.”** No. Reserving lowers Available immediately. Subtracting Reserved again double-counts the commitment.

**“Every reservation is only a hold until shipment.”** Not across AIM. Reservation timing, unit-and-cost evidence, and fulfillment or release steps belong to the named flow that created the commitment.

**“The first unit always comes from owned inventory.”** Not as a universal rule. Unit selection follows the fulfillment ownership policy in effect for the sale; the fallback prefers owned inventory, but another policy can choose consigned or manually selected units.

**“Every sale uses one allocation ledger.”** No. AIM's evidence is split across the sale's inventory links, selected unit, consumed unit-and-cost details, and a reservation record when the flow creates one.

**“Reversing fulfillment always puts the pair back into Available.”** No. Restoration depends on the named flow and the physical evidence it establishes; follow that flow's authoritative path rather than assuming a status change restored inventory.

**“A blocked sale will automatically restock or relist.”** No. A blocked deduction needs review and listing containment. A relist is not recorded automatically from the blocked path.

**“A cancelled sale always restocks.”** No. The cancellation path records an explicit physical outcome. Depending on the channel and where the order is in its lifecycle, the outcome can be no action, restock only, or restock and relist; some paths wait for the item to return before restoration.

## Related

* [Product, inventory, listing: what each one is](/understand/product-inventory-listing) — the object chain that a sale and its allocation links point into.
* [How the inventory numbers fit together](/concepts/inventory-numbers) — how Available and Ready to list differ, and why Reserved is not a second subtraction.
