Fulfillment Operations
How to Reconcile Shopify Committed Inventory
By Anata Inc. ·

The short answer.
Reconcile Shopify committed inventory by location, SKU, and source record instead of subtracting the committed number from a warehouse count. Shopify defines committed units as stock set aside for placed orders, reserved draft orders, or transfers marked ready to ship. Export the inventory states and the open fulfillment workload at the same timestamp, then map each committed unit to an unfulfilled or in-progress fulfillment, draft reservation, or outbound transfer. Separate on-hold, partially fulfilled, canceled, edited, app-managed, and multi-location orders because their top-level order status can hide line-level work. Investigate unmatched commitments through order timelines and transfer histories before changing stock. Correct the business record that owns the reservation, then recount the affected location and confirm available, committed, unavailable, incoming, and on-hand quantities. Never make a blanket inventory adjustment to clear a reporting mismatch; preserve the snapshot, source IDs, action, owner, and post-change balance.
Section 01
Freeze the location and state snapshot
Choose a reconciliation timestamp and export inventory by variant and location with available, committed, unavailable, incoming, and on-hand states. Shopify defines on hand as available plus committed plus unavailable; incoming is tracked separately until received. Record the store time zone, export time, location identifiers, product and variant IDs, SKU, and whether a fulfillment app manages each location. Do not combine locations before resolving their own reservations.
Freeze the matching work queues as close to the same moment as possible: open orders, unfulfilled and in-progress fulfillments, fulfillment holds, reserved draft orders, and transfers marked ready to ship. New orders and fulfillment updates can change committed units while an analyst is exporting data. If a perfect freeze is unavailable, record the start and end times and isolate movements created during the window instead of treating every delta as an error.
Section 02
Map committed units to source records
Build a line-level bridge keyed by location, variant ID, and fulfillment or transfer record. For orders, include order ID, fulfillment ID, line item, ordered quantity, fulfilled quantity, canceled quantity, current status, hold state, assigned location, and app owner. For draft orders, identify only reservations that actually commit inventory. For transfers, include items in the ready-to-ship state because Shopify says those units are committed at the origin.
Sum each source class separately and compare it with the committed quantity in the inventory snapshot. Keep a small tolerance only for events created inside the export window, not for unexplained units. When one order contains items assigned to several locations or delivery methods, reconcile the individual fulfillments rather than the top-level order. Shopify can split an order into multiple unfulfilled sections when items cannot be fulfilled together, so the order header alone is not enough evidence.
Section 03
Separate holds partial work and app requests
Review held fulfillments explicitly. Shopify notes that on-hold work can reserve inventory and that an order with several fulfillments may display a status based on the combination of held, unfulfilled, and fulfilled work. A view filtered only to Unfulfilled can omit on-hold items. Include the hold reason, created time, owner, and release condition in the bridge so legitimate reservations do not appear as stranded stock.
For app-managed fulfillment, compare the Shopify request state with the provider's accepted, rejected, canceled, and shipped records. Shopify warns that reverting an order to unfulfilled does not itself stop a fulfillment service from shipping. Do not release committed stock or reassign an order until the provider confirms cancellation. Preserve the request and cancellation messages, timeline events, tracking state, and responsible system before correcting any mismatch.
Section 04
Investigate exceptions without forcing stock
Classify unmatched commitments as timing difference, edited order, canceled work, partial fulfillment, wrong location, stale app request, reserved draft order, ready-to-ship transfer, duplicated source row, or unknown. Open the order timeline and transfer history for the exact record. An inventory adjustment should not be the first response because it changes available or on-hand stock without repairing the workflow that created the commitment.
If physical stock is uncertain, count the affected SKU at the affected location and quarantine the investigation from normal picking when necessary. Compare physical units with on-hand inventory, not committed inventory alone. A correct on-hand count can coexist with an operationally wrong reservation. Decide whether the fix belongs to the order, fulfillment location, hold, transfer, draft reservation, app integration, or physical stock record, and require the appropriate owner for that system.
Section 05
Correct the owner record and verify the balance
Apply the smallest safe correction. Release a valid hold only after its reason is resolved. Cancel or revert fulfillment work only after the provider state agrees. Move unfulfilled work only when the destination location can own it. Cancel a ready-to-ship transfer when the movement will not happen, or receive it when the stock actually arrived. Adjust physical inventory only from a counted variance with an approved reason and evidence.
After the correction, export the same location and SKU again. Confirm the source record, committed quantity, available quantity, on-hand quantity, and fulfillment workload changed in the expected direction. Pick a canary order and ensure it remains fulfillable from the intended location. Check that no second order became oversold and that the app or transfer did not recreate the reservation on its next sync.
Create a recurring exception report with committed units, mapped source units, unmatched delta, oldest source record, location, SKU, and owner. Alert on aging and material imbalance rather than every normal reservation. Archive each resolved case with the two snapshots, source IDs, timeline evidence, physical count when used, correction, and verifier. Trend categories without claiming that a lower committed balance is inherently better. The goal is explainable reservation ownership and accurate fulfillment capacity. Review the report with fulfillment, inventory, and integration owners using the same timestamp and location filters. Sample one resolved and one open exception to prove that links still reach the source records. If the bridge depends on an export or app field, version that dependency and alert when its schema changes so a blank column cannot masquerade as zero committed demand.


