Shopify stock reconciliation becomes harder when a supplier feed and your warehouse both describe the same product. I would compare each source with the quantity it owns, using an agreed location, inventory state, and observation time. Trying to make every number equal can overwrite a valid warehouse count or advertise stock you cannot fulfill.
Which stock does each system actually own?
Start by naming the physical or contractual stock pool behind each feed. Is the supplier reporting everything in its warehouse, stock it will allocate to your store, or only an availability flag? Record the answer from the supplier instead of inferring it from a column called stock.
In BC Supply Ops, I built supplier operations for a 70,000+ product store with seven suppliers. Four used spreadsheets with different headers, currencies, SKU prefixes, and stock semantics. Supplier-specific parsers normalized those inputs into comparable snapshots; that normalization decision matters before any quantity comparison.
For a new integration, I would extend that discipline into an ownership map. The warehouse procedure below is a proposed design, not a description of BeautyCorner's location configuration. It should be reviewed by whoever owns inventory operations before development begins.
Shopify's multiple-location inventory guidance explains that quantities are tracked independently at each location. It also supports keeping inventory at your own locations alongside fulfillment apps. Use those boundaries deliberately, and check fulfillment configuration separately from quantity accuracy.
For each proposed destination, record the Shopify location identifier, inventory state, authoritative system, permitted writers, and human owner. If a supplier app and warehouse connector both replace the same quantity, resolve that conflict before enabling either schedule. “Whichever job runs last” is not an ownership rule I would approve.
Are you comparing the same inventory state?
A physical count and a sellable quantity answer different questions. Shopify's inventory state definitions distinguish On hand from Available: On hand includes Available, Committed, and Unavailable stock. Incoming inventory is not Available until received and placed in a sellable state.
I would therefore label every source column with its meaning before calculating a discrepancy. A warehouse count should be reviewed against the corresponding On hand quantity. A supplier's available-to-order figure needs its own agreed mapping; it is not evidence of goods physically received at your warehouse.
Ask whether the source has already deducted orders, reservations, damaged goods, or a safety buffer. Record where each deduction happens so the integration does not apply it twice. If the source cannot explain its quantity, mark the mapping unresolved instead of inventing a conversion formula.
Include the unit of measure in that review. A matching barcode alone does not resolve a case-versus-single-item conflict. Use the supplier barcode and packaging checklist to settle identity before interpreting any stock difference.
Are the sources independent, or describing the same stock?
I would ask this explicitly when the same product appears in multiple feeds. Two files can be separate exports without representing independently fulfillable units. Request confirmation of the underlying stock pool and allocation terms before proposing to add their availability together.
For example, consider a hypothetical supplier feed that includes goods reserved for delivery to your warehouse. Your receiving process later records those goods locally. The reconciliation design needs evidence of when the supplier stops advertising that allocation, rather than assuming both records always represent extra stock.
Treat a supplier availability flag differently from a verified quantity. If the supplier says only “in stock,” keep that as a source fact until the merchant approves a selling policy. I would not silently turn the flag into an arbitrary inventory count.
The location map also needs to distinguish inventory review from fulfillment policy. Shopify documents order assignment through routing and shipping configuration; a correct quantity does not by itself establish the intended shipping route. Include a separate test that confirms which location should fulfill a representative order.
What belongs in a reconciliation worksheet?
I would create one review row per matched variant, destination location, and inventory state. Keep supplier observations separate from warehouse observations, even when they concern the same listing. That makes it possible to approve a bounded correction without approving unrelated stock changes.
Record the source's observation time as well as the time your integration fetched it. Downloading an old export again does not make its contents current. Compare the source snapshot with Shopify's recorded state and intervening activity before deciding that a difference is an error.
| Field | Evidence to record | Decision it supports |
|---|---|---|
| Product identity | Source identifier, Shopify variant and inventory item, packaging | Are both records about the same sellable item? |
| Stock pool and location | Supplier or warehouse pool, destination location ID | Is this the quantity the source owns? |
| Quantity meaning | Source definition, unit, intended Shopify state | Is the comparison like for like? |
| Observation window | Source timestamp, fetch time, Shopify read time | Could intervening activity explain the difference? |
| Current and expected values | Original observations and any documented conversion | Can another operator reproduce the proposal? |
| Disposition | Match, investigate, hold, or propose correction; reason and owner | What happens next, and who decides? |
| Completion evidence | Approved proposal, write result if applicable, fresh destination read | Was the intended correction actually applied? |
Preserve a row when the values match, because a matching number can still come from the wrong location or state. Keep unknowns visible rather than filling them with zero. A rejected supplier file belongs in the feed-health hold workflow, not in a batch of routine quantity corrections.
Give each discrepancy a concrete next action. A packaging conflict goes to the catalog owner; an unexplained physical count goes to warehouse review; an unclear supplier reservation goes back to the supplier. This is more useful than a single “inventory mismatch” alert with no owner.
How should you resolve differences while orders continue?
I would first classify the difference: mapping error, state mismatch, stale observation, intervening movement, or a confirmed count correction. Only the last category is ready for a quantity proposal without further investigation. Keep the evidence that led to the classification alongside the proposed change.
For a warehouse discrepancy, review the count's observation window against receipts, orders, returns, and other movements. For supplier availability, check what the supplier snapshot includes and excludes. Do not apply the same subtraction rule to both simply because they share a SKU.
Shopify's inventorySetQuantities documentation reserves absolute quantity setting for a system acting as the inventory source of truth. It provides comparison checks for concurrent changes. The developer should use the documented behavior for the integration's API version and handle rejected comparisons explicitly.
I would rebuild a stale proposal after reading current state, rather than disabling its comparison to force it through. A destination comparison protects against a conflicting destination change; it cannot prove that the supplier snapshot is fresh or correctly interpreted. Both checks belong in the approval decision.
BC Supply Ops produces reviewable stock-sync plans before live writes, with typed confirmations and separate write guards. For this proposed reconciliation workflow, I would retain that review boundary and test it with a warehouse adjustment during review. The expected result is a conflict or a rebuilt proposal, with no supplier write to the warehouse-owned quantity.
Close the review only after recording the result and reading the affected destination again. If the result is uncertain, investigate before repeating the write. A job finishing successfully and a discrepancy being explained are separate acceptance conditions.
Where should you start?
Choose a product that exists in both a supplier feed and your warehouse records. Fill the worksheet with actual identifiers, state definitions, observation times, and the systems permitted to write. Then ask the operations owner to explain every difference without changing Shopify.
If the explanation depends on an unknown supplier rule, resolve that rule first. If two systems claim authority over the same quantity, agree on ownership before scheduling the sync. Add those decisions to your inventory integration developer brief.
Bring the ownership map and unresolved questions to my Shopify supplier automation enquiry page, or book a call. Include your store URL, current inventory systems, operational problem, and constraints. The first useful deliverable is a reviewable reconciliation sample with a clear boundary for any later writes.
