Acro Commerce

ERP reality checks

Can Cin7 Core hold one stock truth across DTC, wholesale and marketplaces?

Yes by design, with named exceptions. Cin7 states that “stock levels are always pushed from Cin7 Core to Shopify, never from Shopify to Cin7 Core”, and Cin7 Core computes each Shopify location’s quantity from the Cin7 Core locations that product is mapped to. It breaks in four documented places: finished-goods availability ignores raw materials and components, buffer inventory deliberately publishes a number that is not the real one, the BigCommerce integration exposes one Cin7 Core location per store, and no Cin7 document states a single sync interval.

Which system is the source of truth for stock on Cin7 Core?

Cin7 Core, unambiguously, and Cin7 says so in one sentence: “stock levels are always pushed from Cin7 Core to Shopify, never from Shopify to Cin7 Core.” That is a good architecture and it is the answer you want. Most The source of truth is the system that gets to be right when two systems disagree. For price, stock and customer terms in an ERP-run business, that is almost always the ERP. arguments in a commerce project are unresolved because nobody wrote that sentence down. Cin7 wrote it down.

Stock is also the one part of the Cin7 Core Shopify integration that does move on its own. Cin7 documents automatic updates whenever inventory changes in Cin7 Core through fulfilment, purchase orders, transfers, write-offs, adjustments or returns, and again whenever a product is listed or updated in Shopify. There is a manual Update stock quantities in Shopify button as well, which works even when automatic syncing is off.

Compare that to product data, which Cin7 states “must be manually updated to be exported to Shopify, it will never be updated automatically”. Stock moves by itself. Price and description do not. Anyone assuming one rule covers both will be wrong about half their catalogue.

Checked against: Cin7 Core: Stock levels in Shopify, Cin7 Core: Introduction to Shopify, Cin7 Core: List or update products in Shopify

How does Cin7 Core decide the number it sends to each Shopify location?

By product-to-location mapping, with a fallback. Cin7 documents the order of resolution: if a product is mapped to specific Cin7 Core locations, the quantity comes from those locations, summed when there is more than one. If the product has no mapping, the quantity comes from the location you nominated for online sales in the Shopify settings.

That fallback is where Multi-warehouse availability is showing a buyer what is in stock for them specifically, based on which warehouse or warehouses can actually serve their order, rather than a single company-wide total. quietly goes wrong. An unmapped product does not fail loudly and it does not show zero. It shows the number from one nominated location, which for a distributor with three warehouses is a plausible-looking figure that is simply not the one the customer can be served from.

Two more settings shape the published number. Buffer inventory “allows for an inventory buffer on stock quantities pushed to Shopify”, applied across listed products and adjustable per product, so the storefront shows a deliberately conservative figure. And Cin7 handles products with additional units of measure by expressing available stock across the configured unit variants, which is the piece to check carefully if you sell the same item by the each and by the case.

On Cin7 Omni the model differs and is closer to what a multi-site distributor expects. Omni maps branches to Shopify locations, and “each Shopify location will take its stock level from the Cin7 Omni branch or branches it’s mapped to”, with stock calculation options including Stock Available, SOH and variants that factor open orders within 7 to 30 days.

Checked against: Cin7 Core: Stock levels in Shopify, Cin7 Core: Shopify settings, Cin7 Omni: Shopify settings

Where does one stock truth break on Cin7 Core?

Each row below is a place where the number a customer sees stops meaning what they think it means. All quoted from Cin7’s own documentation, read on 20 August 2026.

Cin7 Core multi-channel inventory: documented places where the published number is not the real one
CriterionWhat Cin7 documentsWhat a customer sees
Manufactured goodsFor a manufacturer this is the most consequential sentence in the whole Cin7 Core Shopify FAQ.“Availability of finished products in Cin7 Core is taken from current stock, and does not take into account availability of raw materials and components.”A made-to-order product can show as unavailable when you could build it today, or a build-to-stock item shows finished-goods zero while a full bin of components sits behind it. Either way the storefront is not describing what you can ship.
Auto-assembly with serial or batch costingCin7 documents that Shopify POS orders are marked as not fulfilled, even when the setting says otherwise, if any line uses Special (serial), Special (batch), FIFO (serial), FIFO (batch), FEFO (serial) or FEFO (batch) costing. “These orders must be manually fulfilled in Cin7 Core.”Stock stays committed against orders a human has to close by hand, so available quantity drifts away from reality in the direction of understating what you have.
Buffer inventoryA buffer can be applied to quantities pushed to Shopify, across all listed products or per product.This is a good tool being honest about a real risk, and it means the published number is intentionally not the true one. Decide the buffer per product class rather than globally, or your slow movers go dark for no reason.
BigCommerce locationsOne Cin7 Core location is selected per BigCommerce store integration, or All Locations for “consolidated stock quantities across all locations”.A single aggregate across warehouses is a promise the business cannot keep for a customer who can only be served from one of them. BigCommerce is where per-warehouse availability gets hard on Cin7 Core.
Restocks and returnsCin7 Core “will automatically capture the restock operation from Shopify and will create a credit note properly, but only if you haven’t done it beforehand manually.”A returns process where somebody helpfully credits it in Cin7 Core first produces duplicate transactions, and duplicated stock movements are duplicated availability.
Rate limitsCin7 documents the Shopify constraint of 60 API calls per minute, and its FAQ names the error “failed to create or update the product in Shopify: you may have reached the API calls limit”.Under a bulk update or a busy hour, some updates do not land when you think they did. This is the mechanism behind most “the sync just stopped” reports.

Checked against: Cin7 Core: Shopify Integration FAQs, Cin7 Core: Shopify settings, Cin7 Core: Introduction to Shopify, Cin7 Core: BigCommerce

How fast does stock actually move between Cin7 and a channel?

There is no single number, and anyone who gives you one has read one page. Here is what the primary sources actually say, which is three different cadences for three different things.

The practical read: stock is event-driven on Cin7 Core and Shopify, orders arrive on a threshold or on a two-hour cycle depending on the product, and product data does not move at all without a person. If you are doing oversell arithmetic, do it on the order-capture side rather than on a mythical global sync interval, and use buffer inventory to absorb what is left.

  • Cin7 Core stock to Shopify: event-driven. Cin7 lists fulfilment, purchase orders, transfers, write-offs, adjustments and returns as triggers, plus a manual push button.

  • Cin7 Core orders from Shopify: on the capture threshold you choose, created, paid or fulfilled. Cin7’s FAQ says orders “are synced immediately when the order capture threshold is reached”.

  • Cin7 Omni orders from Shopify: the Omni Shopify settings offer automatic download every two hours.

  • SparkLayer customer sync on Cin7 Core: “the automatic sync is carried out every hour”, per SparkLayer’s own documentation.

  • Cin7 Core product and price data to Shopify: never automatically. It waits for a person to list or update.

Checked against: Cin7 Core: Shopify Integration FAQs, Cin7 Core: Stock levels in Shopify, Cin7 Omni: Shopify settings, SparkLayer: Cin7 Core integration docs

What does wholesale need from stock that DTC does not?

A consumer buying one unit needs to know whether it is in stock. A trade buyer ordering 40 cases needs to know something harder: how many can ship from the location that serves them, when the rest arrives, and whether they can commit to the backorder now. Those are different questions and only the first one is well served by a single published quantity.

Cin7 Core does carry pieces of the harder answer. The B2B portal has an Allow Backorders setting and three stock display options, Hide, In/out of stock, or Show Quantity, so a wholesaler can let trade buyers order beyond available stock while showing consumers a simpler picture. Cin7 Omni’s B2B online store shows stock “available (or incoming)”, which is closer to what a trade buyer wants.

What we did not find documented on either side is customer-specific availability, meaning showing a buyer only what the warehouse that serves them can ship. On BigCommerce, where Cin7 Core exposes one location per store, that gap is structural. If entitlement by warehouse is how your business works, design for it explicitly rather than hoping a stock field will carry it.

Checked against: Cin7 Core: B2B portal settings, Cin7 Omni: The B2B online store overview, Cin7 Core: BigCommerce

How do you prove your Cin7 stock truth in an afternoon?

Six checks, in this order. Every one of them has produced a surprise on a real project, and each is cheap enough to do before you commit to an architecture.

  1. Pick a product stocked in more than one Cin7 Core location and check whether it is mapped. Then compare the Shopify quantity against the sum of the mapped locations. If it matches the nominated online sales location instead, that product is unmapped.

  2. Check whether buffer inventory is on, globally or per product, and write down the number. A team that does not know its buffer does not know its available stock.

  3. Take a manufactured item and compare finished-goods stock against what you could actually build today. The gap between those two figures is what your storefront is getting wrong.

  4. Sell one unit of a serial or batch tracked item through every channel you run, and see which orders come back unfulfilled and need closing by hand.

  5. Process a return through Shopify and watch whether anyone in your team credits it in Cin7 Core first. That habit is what creates the duplicate transaction.

  6. Run a bulk product update at a busy hour and look for the API call limit error, because that is when it appears rather than when you test it quietly on a Sunday.

Checked against: Cin7 Core: Stock levels in Shopify, Cin7 Core: Shopify Integration FAQs

The wider picture

This page answers one narrow question. Acro Commerce covers the strategy around it.

Common questions

Does Shopify ever write stock back into Cin7 Core?
No. Cin7 states that “stock levels are always pushed from Cin7 Core to Shopify, never from Shopify to Cin7 Core”. Shopify orders reduce Cin7 Core stock through the order sync rather than through a stock write-back, so if a Shopify quantity looks wrong, the fix is in Cin7 Core or in the location mapping and not in Shopify’s inventory screen.
Why does my Cin7 Core stock look wrong on manufactured products?
Because Cin7 Core’s Shopify FAQ states that “availability of finished products in Cin7 Core is taken from current stock, and does not take into account availability of raw materials and components”. Anything you could build to order but do not hold in finished goods will publish as unavailable. For a made-to-order manufacturer this is a design constraint rather than a bug, and it usually means availability has to be expressed as lead time instead of as a quantity.
Can Cin7 Core show per-warehouse availability to a B2B customer?
On Shopify, Cin7 Core computes each location’s quantity from the Cin7 Core locations a product is mapped to, so per-location numbers exist and can be surfaced. On BigCommerce, Cin7 documents one Cin7 Core location per store integration or an All Locations consolidation, so per-warehouse availability is not native there. Showing a specific buyer only the warehouse that serves them is not documented on either platform, so treat that as custom work.
How often does Cin7 Core sync stock to Shopify?
There is no fixed interval to quote. Cin7 documents stock updates as event-driven, firing when inventory changes in Cin7 Core through fulfilment, purchase orders, transfers, write-offs, adjustments or returns, and again when a product is listed or updated. There is also a manual Update stock quantities in Shopify button that works even with automatic syncing disabled. Orders come the other way when your capture threshold of created, paid or fulfilled is reached.
Is buffer inventory a good idea or a workaround?
Both, and it is the right call for most multi-channel sellers. A buffer publishes a deliberately conservative quantity to Shopify, which absorbs the gap between an event-driven sync and a marketplace that sold the same unit ninety seconds ago. The cost is that your storefront now understates stock by a known amount, so set it per product class rather than globally, and keep the number written down where the sales team can see it.
Does Cin7 Core prevent overselling across Shopify, wholesale and marketplaces?
Cin7 Core reduces the risk rather than removing it, and it gives you buffer inventory as the explicit control. Because stock is pushed on inventory events rather than reserved at the channel, two channels can still sell the same last unit inside the same window. The honest design answer is a buffer sized to your busiest channel plus a documented rule for what happens when you do oversell, because you eventually will.

Last updated 2026-08-20. Facts on this page last checked against source 2026-08-20.