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

# Blanket Order — Network-Level Reservation

When a seller signs a Blanket Order with a key B2B buyer, they may need to do more than record a commercial commitment — they may need to **protect the committed inventory** from the moment of signing, before the buyer places a single Call-Off Order. Blanket Order Network-Level Reservation is the mechanism that provides this guarantee.

A Blanket Order created in **network-level mode** immediately removes the committed quantity from general network availability, ring-fencing it for the entitled buyer. As the buyer places Call-Off Orders and inventory is progressively reserved, the ring-fence draws down in lockstep — ensuring that every committed unit is counted exactly once and never double-sold.

A Blanket Order in **call-off-level mode** (the default) records the same commercial commitment but protects no inventory in advance. Each Call-Off Order competes for stock when placed, just like any other order. The buyer carries the risk that inventory may not be available.

The mode is selected at Blanket Order creation and **cannot be changed after the order is created**.

<Note>
  **Note:** Network-Level Reservation is available only for tenants with the **B2B Wholesale OMS** feature enabled. Contact [Kibo Support](https://help.kibocommerce.com/) to enable this capability.
</Note>

***

## **Prerequisites**

Before using Blanket Order Network-Level Reservation, ensure the following:

* The **B2B Wholesale OMS** feature is enabled for your tenant.
* New Supply Demand UI (Inventory UI) is enabled for your tenant.  Contact [Kibo Support](https://help.kibocommerce.com/) to enable this capability
* At least one **Blanket Order** has been created in **network-level mode**. See [Create a Blanket Order](/pages/blanket-order) for steps.
* The **Ring-Fence Scope** site-level setting is configured before network-level Blanket Orders are placed. See [Ring-Fence Scope](#ring-fence-scope) below.
* You have **Admin** or **SuperAdmin** role permissions.

***

## **Key Concepts**

### **Modes**

Every Blanket Order is created in one of two immutable modes:

| **Mode**                       | **Inventory Protected at Signing?**                                                  | **How Call-Offs Are Filled**                                                                                    |
| :----------------------------- | :----------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- |
| **Network-level**              | Yes — the committed quantity is immediately ring-fenced through availability netting | Each Call-Off Order draws the ring-fenced balance down. Inventory is soft-reserved when the Call-Off is placed. |
| **Call-off-level** *(default)* | No — nothing is ring-fenced                                                          | Each Call-Off Order competes to reserve available inventory when placed.                                        |

<Note>
  **Note:** The only difference between the two modes is the ring-fence. In both modes, a Call-Off Order reserves real inventory when it is placed.
</Note>

***

### **The Called / Uncalled Ledger**

For every network-level Blanket Order, Kibo maintains a live **Called / Uncalled ledger** that tracks the reservation position of the commitment at all times.

| **Field**      | **Definition**                                                                                                                  |
| :------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| **Contracted** | The total quantity committed on the Blanket Order                                                                               |
| **Called**     | The portion of the contracted quantity that has been successfully reserved (soft-allocated) against one or more Call-Off Orders |
| **Uncalled**   | The remaining contracted quantity not yet reserved — `Contracted − Called`                                                      |

**The invariant that always holds:**

> **Contracted = Called + Uncalled**

Any operation that would break this invariant is rejected. Every committed unit is counted exactly once: it is either in **Called** (reserved, in Allocated) or in **Uncalled** (ring-fenced, subtracted from network availability). It is never in both and never in neither.

**Example — ledger in motion:**

| **Event**                                               | **Called** | **Uncalled** |
| :------------------------------------------------------ | :--------- | :----------- |
| Blanket Order signed — contracted 1,000                 | 0          | 1,000        |
| Call-Off Order for 200 units, fully reserved            | 200        | 800          |
| Call-Off Order for 300 units, fully reserved            | 500        | 500          |
| Call-Off Order for 100 units, no stock — cannot reserve | 500        | 500          |
| Retry reserves the outstanding 100                      | 600        | 400          |

When the third Call-Off Order finds no stock, Called and Uncalled do not change — the 100 units remain in Uncalled, and the platform retries reservation automatically as new inventory arrives (see [Partial Reservation and Retry](#partial-reservation-and-retry)).

***

### **Availability Model**

Network-level ring-fencing works by subtracting the **Uncalled balance** from the network aggregate availability calculation. Call-off-level Blanket Orders have zero uncalled balance and therefore subtract nothing.

```text theme={null}
Network ATS = (On Hand − Allocated) − sum of Uncalled across all network-level Blanket Orders on the item
Network ATP = (On Hand − Allocated + Future) − sum of Uncalled across all network-level Blanket Orders on the item
```

**Location-level availability is unchanged.** Netting applies only to the network aggregate — never to an individual location:

```text theme={null}
Location ATS = On Hand − Allocated
Location ATP = On Hand − Allocated + Future
```

**No double-counting.** When a Call-Off Order reservation succeeds, the reserved quantity moves from Uncalled into Called and into Allocated simultaneously. At that moment, `(On Hand − Allocated)` drops by the reserved quantity while the Uncalled subtraction shrinks by the same amount — total network availability does not change at the instant of reservation.

<Note>
  **Note:** The network ring-fence is a **soft aggregate reserve**. It protects the availability number returned by network-level queries, but it does not hard-lock specific physical units at specific locations. Location-level orders — such as B2C sales orders, BOPIS, or store fulfillment — allocate against location availability, which is intentionally blind to the blanket's uncalled balance. This can drive network availability negative (see [Network Availability Going Negative](#network-availability-going-negative)).
</Note>

***

## **Ring-Fence Scope**

By default, a network-level Blanket Order's uncalled balance nets against **all locations** in the network. Administrators can optionally restrict the ring-fence to a specific **Location Group** — meaning netting and reservation apply only to locations within that group, not the full network.

This is a **site-level setting** that applies uniformly to every network-level Blanket Order on the site. It is not configured per Blanket Order.

| **Scope**                     | **Behavior**                                                                                                                            |
| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |
| **All Locations** *(default)* | The uncalled balance nets against the full all-locations aggregate. Call-Off Orders reserve from any location.                          |
| **Location Group**            | The uncalled balance nets against the configured group's aggregate only. Call-Off Orders reserve from locations within that group only. |

### **Configure Ring-Fence Scope**

1. Go to **Main** > **System** > **Settings** > **General**.
2. Select the **Site** tab.
3. Scroll to the **B2B** section.
4. Under **Blanket Order Settings**, set **Ring-Fence Scope** to **All Locations** or **Location Group**.
5. If **Location Group** is selected, choose a valid, existing location group from the **Location Group** field. Exactly one group may be configured per site.
6. Click **Save**.

<img src="https://mintcdn.com/kibocommerce-59e68a4a/RG4NtTb_m8dRsIDp/images/Blanket_Order_Settings.png?fit=max&auto=format&n=RG4NtTb_m8dRsIDp&q=85&s=200584e3e8e4cf90ff69d9af53d4f594" alt="Blanket Order Settings" width="1892" height="850" data-path="images/Blanket_Order_Settings.png" />

<Warning>
  **Important:** Configure the ring-fence scope **before** creating network-level Blanket Orders. Changing the scope after network-level Blanket Orders have been placed re-scopes the aggregate that all existing Blankets net and reserve against, which can produce unexpected availability behavior.
</Warning>

***

## Selecting the Reservation Mode

When creating a Blanket Order in the Kibo Admin UI, the reservation mode is selected via a single checkbox:

* Go to Main > Demand > Blanket Orders.
* Click Create Blanket Order.
* Enter the required header details (B2B Account, Start Date, End Date, etc.).
* Locate the Reserve inventory in advance (Guaranteed Supply) checkbox.
* Check or uncheck the box:

1. Checked — The Blanket Order is created in network-level mode. The committed quantity is ring-fenced from network availability at signing.
2. Unchecked (default) — The Blanket Order is created in call-off-level mode. No inventory is reserved in advance.

* Add line items and specify committed quantities.
* Click **Submit**.

<Note>
  **Note**: The reservation mode cannot be changed after the Blanket Order is submitted.
</Note>

<img src="https://mintcdn.com/kibocommerce-59e68a4a/RG4NtTb_m8dRsIDp/images/BLanket-Network-Mode.png?fit=max&auto=format&n=RG4NtTb_m8dRsIDp&q=85&s=e2c38378e9a75149f236e13b29a8eb2b" alt="B Lanket Network Mode" width="1896" height="992" data-path="images/BLanket-Network-Mode.png" />

## **How Network-Level Reservation Works**

### **At Blanket Order Creation**

When a network-level Blanket Order is created:

* The ledger initializes: **Called = 0**, **Uncalled = Contracted quantity**
* The uncalled balance is immediately subtracted from the network availability calculation (or Location Group availability, if configured)
* The entitled buyer's committed quantity is ring-fenced from the moment of signing — before any Call-Off Order is placed

No inventory is physically reserved or allocated at this point. The ring-fence is purely a subtraction in the availability formula.

### **When a Call-Off Order Is Placed**

When the entitled buyer places a Call-Off Order against a network-level Blanket Order, the reservation flow runs as follows:

1. **Validate commitment** — the requested quantity must be within the Blanket Order's remaining commitment. Any quantity in excess of the contracted balance is rejected.
2. **Reserve** — the platform attempts to soft-reserve inventory for the requested quantity using Order Routing, scoped to the configured ring-fence scope (All Locations or Location Group).
3. **Update the ledger** — for the quantity that reserves successfully: **Called increases** and **Uncalled decreases** by the same amount. The reserved units move into Allocated. This ledger update and the reservation are a single atomic operation — availability is never overstated between them.
4. **Retain the remainder** — any portion of the request that could not be reserved stays outstanding on the Call-Off Order and remains within Uncalled. The platform retries reservation automatically (see [Partial Reservation and Retry](#partial-reservation-and-retry)).

<Note>
  **Note:** At the moment a reservation succeeds, total network availability does not change. The reserved units move from Uncalled (subtracting from availability) into Called and into Allocated (also subtracting from availability). The subtraction simply shifts from one mechanism to the other.
</Note>

### **Partial Reservation and Retry**

A Call-Off Order reserves as much of its requested quantity as inventory allows — it does not require full availability to proceed. Whatever reserves successfully moves from Uncalled into Called; the unreserved remainder stays outstanding on the Call-Off Order and remains within Uncalled.

The platform automatically retries reservation for outstanding quantities at timed intervals via a background job. As new inventory arrives, the job reserves what it can — each success moving additional quantity from Uncalled into Called. The original requested quantity on the Call-Off Order is preserved throughout and is never reduced by partial reservation.

**Example:**

| **State**                           | **Called** | **Uncalled** | **Call-Off: Requested** | **Call-Off: Reserved** | **Call-Off: Outstanding** |
| :---------------------------------- | :--------- | :----------- | :---------------------- | :--------------------- | :------------------------ |
| Blanket signed — 1,000              | 0          | 1,000        | —                       | —                      | —                         |
| Call-Off for 100, only 20 available | 20         | 980          | 100                     | 20                     | 80                        |
| Retry reserves 30 more              | 50         | 950          | 100                     | 50                     | 50                        |
| Retry reserves remaining 50         | 100        | 900          | 100                     | 100                    | 0                         |

The invariant holds at every step: 1,000 = Called + Uncalled.

<Note>
  **Note:** The automated retry job, Reservation Rules, and Call-Off Order reservation are documented in detail in [Reservations](/pages/reservations) and [Reservation Rules](/pages/call-off-reservation-rules). The retry and partial reservation behavior described here is specific to how network-level Blanket Orders interact with those mechanisms.
</Note>

***

## **Entitlement**

The uncalled balance of a network-level Blanket Order belongs exclusively to its **entitled customer**. Only that customer can draw down the balance through Call-Off Orders against that specific Blanket Order.

While the ring-fence reduces network availability for everyone, the ring-fenced quantity is not available for purchase by any other customer — even though it is not physically reserved at a specific location. This protection is enforced on every reservation drawn against the Blanket Order.

***

## **Contract Increase**

The contracted quantity of a Blanket Order can be increased at any time. For a network-level Blanket Order, increasing the contracted quantity raises the uncalled balance by the same amount, which further reduces network availability immediately.

<Note>
  **Note:** Reducing the contracted quantity is handled through cancellation or reduction of Called quantity (see [Cancellation and Reduction](#cancellation-and-reduction)). There is no direct "reduce contract quantity" operation.
</Note>

***

## **Cancellation and Reduction**

When a Called quantity is cancelled or reduced:

* The Blanket Order's **Uncalled balance is restored** by the cancelled or reduced quantity
* The matching inventory reservation is released and returned to general availability
* The invariant is maintained: Contracted = Called + Uncalled

***

## **Supply-Shortfall Prioritization**

A drop in physical supply does not reduce a Blanket Order's uncalled balance. The committed quantity remains a contractual claim regardless of current on-hand position.

When supply cannot cover all commitments:

* Committed blanket quantities — including outstanding Call-Off Order quantities awaiting retry — are served **ahead of general demand** as new inventory arrives
* This ensures contracted buyers are protected under scarcity

***

## **Network Availability Going Negative**

It is possible — and expected — for network availability to go negative. This occurs when total commitments (uncalled balances) across multiple network-level Blanket Orders exceed the available on-hand stock, or when location-level orders consume physical stock that was backing the ring-fence.

**Why location-level orders can erode the ring-fence:**

The network ring-fence subtracts from the *aggregate* availability figure, but location-level orders allocate against *individual location* availability — which is intentionally blind to the blanket's uncalled balance. A B2C sales order, BOPIS pick, or store fulfillment order can therefore consume physical stock at a location even when network availability reads zero or negative.

***

## **Multiple Network-Level Blanket Orders on the Same Item**

When several network-level Blanket Orders exist for the same item, their uncalled balances are **summed** in the availability formula:

```text theme={null}
Network ATS = (On Hand − Allocated) − (Uncalled_B1 + Uncalled_B2 + ... + Uncalled_Bn)
```

Network availability may go negative when total commitments exceed On Hand — this is a permitted over-commitment state, resolved as supply arrives.

**Blanket Orders do not have priority among themselves.** Network ring-fencing is made in order of the Blanket Order received. Any prioritization between accounts is handled during actual reservation at the Call-Off Order level through [Reservation Rules](/pages/call-off-reservation-rules).

## **Viewing Blanket Network Reservations**

The **Blanket Network Reservations** view in the Supply Demand UI provides a consolidated, per-product picture of ring-fenced inventory and network availability. Use this view to see how much stock exists, how much is ring-fenced by blanket orders, how much is otherwise allocated, and how much is genuinely free to promise.

### **Accessing the View**

1. Go to **Main** > **Supply** > **Inventory** > **Supply Demand**.
2. Click the **Blanket Network Reservations** link.
3. The page opens with the title **Blanket Network Reservations** and a filter section at the top.

<img src="https://mintcdn.com/kibocommerce-59e68a4a/RG4NtTb_m8dRsIDp/images/Blanket-Network-Screen-on-inventory-UI.png?fit=max&auto=format&n=RG4NtTb_m8dRsIDp&q=85&s=98e4bd8ed58e472ea692c21341a4289a" alt="Blanket Network Screen On Inventory UI" width="1910" height="897" data-path="images/Blanket-Network-Screen-on-inventory-UI.png" />

### **Filters**

The filter section at the top of the page contains the following controls:

| **Filter**           | **Type**             | **Behavior**                                                                                                                                                                                                                                                                                       |
| :------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Site**             | Dropdown             | Select a site to scope the data. Required — no data loads until a site is selected.                                                                                                                                                                                                                |
| **Ring-Fence Scope** | Dropdown (read-only) | Appears only after a site is selected. Displays the ring-fence scope configured for the selected site: **All Location** or the name of the configured **Location Group**. This field is read-only — the scope is determined by the site-level setting (see [Ring-Fence Scope](#ring-fence-scope)). |
| **Master Catalog**   | Dropdown             | Allows users to choose master catalog , only visible when Catalog is enabled for the tenant                                                                                                                                                                                                        |
| **Child Catalog**    | Dropdown             | Allows users to choose Child catalog , only visible when Catalog is enabled for the tenant                                                                                                                                                                                                         |
| **Product Name**     | Dropdown             | typeahead (3+ characters), Variants product Support, multi-select; catalog-enabled only                                                                                                                                                                                                            |
| **UPC**              | Input field          | Product Code/Variant Code — single or multi-value chip input comma separated                                                                                                                                                                                                                       |

After applying filters, a **Selected Filters** summary section appears below the filter area, showing active filter chips.

### **Network Reservation Grid (Primary Grid)**

The primary grid displays one row per product (UPC) within the selected filters and scope. Each row shows the network-level inventory summary for that product.

| **Column**                                                            | **Description**                                                                                                                                                                                                                                        |
| :-------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **UPC**                                                               | Product Code/Variant Code                                                                                                                                                                                                                              |
| **Network on hand**                                                   | Total stock for this product across all locations in the ring-fence scope (all locations, or locations within the configured Location Group).                                                                                                          |
| **Blanket Network Reservations (Ring Fenced)**                        | Total quantity ring-fenced under all active network-level Blanket Orders for this product. This is the summed uncalled balance across all blankets.                                                                                                    |
| **Allocations (Direct Call Off Reservations + Shipment Allocations)** | Stock committed but not yet shipped. This includes **both** inventory allocated to active shipments **and** inventory reserved against Call-Off Orders — shown as a single combined figure.                                                            |
| **Network Available**                                                 | What is genuinely free to promise to new orders: Network on hand minus Blanket Network Reservations minus Allocations. This value **may be negative** — a negative number indicates over-commitment and is a valid replenishment signal, not an error. |

Each row includes an **view** action on the right side. Click the view icon to open the blanket detail sidebar for that UPC (see below).

<img src="https://mintcdn.com/kibocommerce-59e68a4a/RG4NtTb_m8dRsIDp/images/blanket-network-reservation-data.png?fit=max&auto=format&n=RG4NtTb_m8dRsIDp&q=85&s=76738ede2d404ea47c7144c89f25219a" alt="Blanket Network Reservation Data" width="1892" height="837" data-path="images/blanket-network-reservation-data.png" />

### **Blanket Detail Sidebar (Secondary Grid)**

Clicking the **eye icon** on a primary grid row opens a right-side sidebar showing the individual Blanket Orders that contribute to that UPC's ring-fenced quantity. The sidebar uses the same interaction pattern as the Inventory record view.

**Sidebar header** displays:

* The selected **UPC**
* The **site** selection details

**Sidebar body** contains a secondary grid and a B2B account filter.

#### **B2B Account Filter**

Above the secondary grid, a **B2B Account** filter allows you to filter the blanket order rows by customer account. Select an account from the dropdown to show only blanket orders belonging to that customer.

#### **Blanket Detail Grid**

| **Column**            | **Description**                                                                                                                       |
| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |
| **Blanket**           | The Blanket Order number, displayed as a clickable link. Clicking the link opens the Blanket Order Details page in a new browser tab. |
| **Blanket Order Qty** | The total committed quantity on this Blanket Order for this product.                                                                  |
| **Called**            | The quantity already drawn down (reserved) against this Blanket Order for this product.                                               |
| **Uncalled**          | The remaining quantity available to be ordered (`Blanket Order Qty − Called`).                                                        |

<img src="https://mintcdn.com/kibocommerce-59e68a4a/RG4NtTb_m8dRsIDp/images/blanket-orders-for-the-product.png?fit=max&auto=format&n=RG4NtTb_m8dRsIDp&q=85&s=0e1008e431964f6254c92d4e61caa9a3" alt="Blanket Orders For The Product" width="1903" height="727" data-path="images/blanket-orders-for-the-product.png" />
