---
schema_version: "1"
id: f601dca5aedcd100acefba1186cff83db113383ffdfe35dfa1c0e6c359b967bd
title: Capturing Offline Orders and Inventory Reconciliation
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/cc/264-0-0/oci_cocinventoryrecon.md
canonical_url: https://help.salesforce.com/s/articleView?id=cc.oci_cocinventoryrecon.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: b2b7c9fd65276225cbba1a03cfa65801e130ccdeb9b3dbcded3810809c1114a5
description: During Omnichannel Inventory service interruptions, Continuous Order Capture queues B2C Commerce orders to maintain business continuity. The system accepts orders based on the last known inventory data. To avoid overselling, B2C Commerce automatically decrements the Available-To-Order (ATO) value immediately after each order is created. The system marks these orders as Reservation Missing until Omnichannel Inventory recovers. After the connection is restored, the system automatically reconciles the inventory and creates reconciliation reports.
products:
  - Commerce
  - B2C Commerce
release: "264"
---
# Capturing Offline Orders and Inventory Reconciliation

During Omnichannel Inventory service interruptions, Continuous Order Capture queues B2C Commerce orders to maintain business continuity. The system accepts orders based on the last known inventory data. To avoid overselling, B2C Commerce automatically decrements the Available-To-Order (ATO) value immediately after each order is created. The system marks these orders as Reservation Missing until Omnichannel Inventory recovers. After the connection is restored, the system automatically reconciles the inventory and creates reconciliation reports.

## Automatic Reconciliation

After the Omnichannel Inventory connection for B2C Commerce is restored, a background job automatically reconciles inventory for orders in the Reservation Missing state. This job processes orders in batches. It typically takes 10–20 minutes for reconciliation to complete. Business Manager alerts automatically notify you of the current state and the reconciliation outcome.

After the job attempts a reservation, if the attempt is successful, the job clears the Reservation Missing state with one of these reconciliation outcomes:

- Completely Reserved: All items are reserved.
- Partially Reserved: Only some items are reserved.
- Nothing Reserved: No inventory is available for any items.
- Omnichannel Inventory Remains offline: The service is still unavailable. The order remains in the Reservation Missing state and the system retries to change the state in the next cycle.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note If you’ve configured Salesforce Order Management, after the reservation attempts, orders are automatically pushed to Order Management, even if they’re flagged as oversold due to partial or failed reservations. These transactions also appear in the reconciliation reports in Business Manager. To monitor these orders, see [View Orders Captured During Omnichannel Inventory Downtime](https://help.salesforce.com/s/articleView?id=cc.oci_cocsomb2c.htm&release=264.0.0&type=5 "To monitor the progress after reconciliation, view and track the B2C Commerce Continuous Order Capture orders captured during the Omnichannel Inventory offline mode.").

## Reconciliation Reports

The system generates reconciliations reports at \[SHARED\_DIR\_IMPEX\]/src/continuous\_order\_capture/ to help you audit offline activity:

- Offline: All the orders captured during the outage.
- Reserved: Orders with successfully secured inventory for all items.
- Oversold: Orders with partial or failed reservation attempt.

Here’s the directory structure:

```
continuous_order_capture/
├── work/                          # Temporary work files (transient)
│   ├── offline_<site>_<timestamp>_<orderNo>.json
│   ├── reserved_<site>_<timestamp>_<orderNo>.json
│   └── oversold_<site>_<timestamp>_<orderNo>.json
├── <yyyyMMdd>_offline_<site>.json # Daily merged offline orders
├── <yyyyMMdd>_reserved_<site>.json# Daily merged reserved orders
└── <yyyyMMdd>_oversold_<site>.json# Daily merged oversold orders
```

The file naming convention is:

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:33.33333333333333%">
          <col style="width:33.33333333333333%">
          <col style="width:33.33333333333333%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d145674e96">File Type</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d145674e99">Convention</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d145674e102">Examples</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="File Type" class="slds-cell-wrap" rowspan="3" style="vertical-align:top;" headers="d145674e96 ">Work files for individual offline, reserved, and oversold
              orders</td>

            <td data-label="Convention" class="slds-cell-wrap" rowspan="3" style="vertical-align:top;" headers="d145674e99 ">{prefix}_{site}_{yyyyMMdd}_{HHmmss}_{orderNo}.json</td>

            <td data-label="Examples" class="slds-cell-wrap" style="vertical-align:top;" headers="d145674e102 ">offline_MySite_20260202_120000_0000012345.json</td>

          </tr>
          <tr class="">
            <td data-label="Examples" class="slds-cell-wrap" style="vertical-align:top;" headers="d145674e102 ">reserved_MySite_20260202_120000_0000012345.json</td>

          </tr>
          <tr class="">
            <td data-label="Examples" class="slds-cell-wrap" style="vertical-align:top;" headers="d145674e102 ">oversold_MySite_20260202_120000_0000012345.json</td>

          </tr>
          <tr class="">
            <td data-label="File Type" class="slds-cell-wrap" rowspan="3" style="vertical-align:top;" headers="d145674e96 ">Daily merged offline, reserved, and oversold files by site</td>

            <td data-label="Convention" class="slds-cell-wrap" rowspan="3" style="vertical-align:top;" headers="d145674e99 ">{yyyyMMdd}_{prefix}_{site}.json</td>

            <td data-label="Examples" class="slds-cell-wrap" style="vertical-align:top;" headers="d145674e102 ">20260202_offline_MySite.json</td>

          </tr>
          <tr class="">
            <td data-label="Examples" class="slds-cell-wrap" style="vertical-align:top;" headers="d145674e102 ">20260202_reserved_MySite.json</td>

          </tr>
          <tr class="">
            <td data-label="Examples" class="slds-cell-wrap" style="vertical-align:top;" headers="d145674e102 ">20260202_oversold_MySite.json</td>

          </tr>
        </tbody>
      </table>

While B2C Commerce counts down Available-to-Order (ATO) based on the last known inventory data, other sales channels can also deplete stock managed in Omnichannel Inventory, potentially resulting in some overselling. Either cancel the orders that you aren’t able to fulfill or offer replacement items. If you’re able to fulfill the orders, use the Omnichannel Inventory REST APIs to manually update reservations.

#### See Also

- [Configure B2C Commerce Alerts in Business Manager and Slack](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_alerts_for_your_site.htm&language=en_US)
- [Omnichannel Inventory Service](https://help.salesforce.com/s/articleView?id=commerce.inv_omnichannel_inventory_service.htm&language=en_US)
- [B2C Commerce Continuous Order Capture for Omnichannel Inventory](https://help.salesforce.com/s/articleView?id=cc.oci_continuousordercapture.htm&release=264.0.0&type=5 "Turn on Continuous Order Capture to accept customer orders and maintain business continuity even if connectivity to Omnichannel Inventory is lost. When the service is unavailable, Continuous Order Capture automatically transitions to an offline mode and accepts transactions without immediate inventory reservations. By independently reconciling pending reservations and providing real-time recovery alerts, this feature protects your storefront from downtime while minimizing overselling risks.")