Skip to content
SyncMyShop

Stock and availability

Kits and bundles: availability that follows every component

A kit can be sold as long as every component is there. The integration calculates each kit's quantity from its bill of materials and the free stock of its components, updates it after every loose sale of a component, and turns a kit order into the lines your warehouse picks.

A kit has no count of its own

A kit is not on the shelf. What is on the shelf are controllers and sensors, and the kit is an agreement: 1 controller and 2 sensors, sold under one item number. The ERP holds that agreement as a bill of materials. The store wants a number.

A number typed in by hand falls behind the first time a component sells on its own. Kit 40210 shows 25. That afternoon 8 controllers go out as loose items and 22 are left. The store sells kits 23, 24 and 25 without a controller for them.

The number of quantities that move together grows with the kits. With 40 kits built from 120 components, a common component sits in several of them. When sensor 40212 is in 6 kits, one sale of that sensor changes 7 numbers: the sensor and 6 kits. The integration calculates them on every change. Where the component quantities come from is on the stock and availability page.

How it works

A kit's quantity is the lowest result of: free stock of the component divided by the quantity per kit, rounded down.

Component Free Per kit Enough for
Controller 40211 30 1 30 kits
Sensor 40212 86 2 43 kits
Kit 40210 30

Rounding is always down. With 85 sensors, 85 divided by 2 is 42.5, which is 42 kits. The stock hub's smaller case works the same way: 2 of A and 1 of B, with 9 and 7 on the shelf, is the lower of 4 and 7, so 4.

Kit quantity calculated from its components Kit 40210 is 1 controller and 2 sensors. 30 controllers are enough for 30 kits. 86 sensors are enough for 43 kits, with 26 left over after 30 kits. The kit quantity is the lower number, 30. After 4 controllers are sold on their own, the kit drops to 26. Controller 40211: 30 free, 1 per kit 30 free Used by 30 kits 30 Kits this component allows 30 Sensor 40212: 86 free, 2 per kit 86 free Used by 30 kits 60 Left over 26 Kits this component allows 43 Controller 40211 after 4 are sold on their own 30 before Used by 26 kits 26 Sold loose 4 Kit 40210 written to the store 26
The controller sets the number. There are sensors for 43 kits, and the kit shows 30.

Four kinds of composite item

The word bundle covers four things that are handled differently:

Kind Quantity What the warehouse picks
Kit assembled at shipment calculated from the components the components
Kit assembled ahead its own stock, created by an assembly build the kit
Multipack, a case of 12 the item's stock divided by 12 12 of one item
Manufactured item with a BOM its own stock after production the finished item

This page is mostly about the first kind. With the second, the kit has its own count and the components change when the kit is built. A mix exists too: 6 kits built and on the shelf, components for 24 more, is 30 kits for sale, 6 of them ready today. Business Central makes the same split per item with its Assembly Policy: Assemble-to-Order creates an assembly order from the sales line, with the BOM quantities multiplied by the order quantity, while for an Assemble-to-Stock item it checks availability of the assembled item only, not of its components.

An order for a kit

The customer orders 5 kits on order #31944. The warehouse has to reserve 5 controllers and 10 sensors. Where the order is split into components is decided up front, and it happens in one place: in the ERP or warehouse system that holds the bill of materials, or in the integration.

{
  "order": "31944",
  "store_line": { "sku": "40210", "quantity": 5, "price": 189.00 },
  "erp_lines": [
    { "sku": "40211", "quantity": 5,  "amount": 820.66, "kit": "40210" },
    { "sku": "40212", "quantity": 10, "amount": 124.34, "kit": "40210" }
  ]
}

The kit price is split in proportion to the component prices: the controller at 165.00, two sensors at 12.50 each is 25.00, together 190.00. For 5 kits that is 945.00 times 165 divided by 190, which is 820.66 for the controllers, and 124.34 for the sensors. Together 945.00.

The trap is the unit price. 124.34 divided by 10 is 12.434. An ERP that calculates with 12.43 per sensor gets 124.30, and with 164.13 per controller gets 820.65. The order then adds up to 944.95, and the payment of 945.00 does not match automatically. The integration sends line amounts, or puts the 5 cents on the last line. The background is in the notes on money, tax and rounding.

One component, several kits

The controller is also in kit 40215, with a mounting plate. There are 30 controllers and 50 plates: both kits show 30. Together they offer 60 kits from 30 controllers. That is correct as long as every sale comes back into every number at once. After an order for 20 of kit 40210, 10 controllers are left and both kits show 10.

The fan-out sets the size of a run. 300 changed components, each in at most 6 kits, give at most 7 new quantities per component: 300 times 7 is 2,100. Written to Shopify as ordinary products in arrays of 250, that is 2,100 divided by 250, which is 8.4, so 9 calls. When the kits are Shopify bundles, Shopify calculates them itself and the integration writes only the 300 components: 2 calls.

What goes wrong quietly

What happens Example Result
The kit has its own number, typed by hand kit at 25, 22 controllers left 3 kits sold that cannot ship
The order is split twice the store sends component lines and the ERP explodes the kit again 10 controllers reserved for 5 kits
The order is split nowhere the kit arrives as one line in an ERP with no BOM for that item nothing reserved on the components
Rounding up 85 sensors divided by 2 becomes 43 one kit too many
The bill of materials changes 3 sensors per kit instead of 2 86 divided by 3 is 28; the store still counts 30
A buffer on the kit and on the components components with buffer 2, kit with buffer 2 again the kit shows 26 where 28 was intended

The second row depends on the platform. Shopify Bundles lists the component SKUs on the order, not the bundle SKU. An ERP that then explodes the kit again reserves twice. Buffers are covered on safety stock and channel buffers.

What it covers

  • One number per kit, from its components. 30 controllers and 86 sensors give 30 kits, recalculated after every change.
  • Loose sales count. 4 controllers sold on their own: the kit goes from 30 to 26.
  • Orders on the lines the warehouse picks. 5 kits become 5 controllers and 10 sensors, with amounts that add up to 945.00.
  • A change to the bill of materials comes through. From 2 to 3 sensors per kit: the kit goes from 30 to 28.
  • A date when a component is out. The kit follows the expected date of the missing component, as on delivery dates.

Which systems

System How it stores a kit What counts for stock
NetSuite Kit/Package item (kititem) with a members sublist of item and quantity; Assembly item (assemblyitem) for kits built ahead the integration reads the members and calculates the kit; an assembly item is produced ahead, with work order lead time fields on the item
Business Central Assembly BOM on the item; Assembly Policy Assemble-to-Order or Assemble-to-Stock the standard API v2.0 has no BOM resource; components are read through an API page added for the purpose
Shopify bundle created with productBundleCreate, components with productId and quantity (at most 2,000) Shopify calculates the bundle from its components; setting the parent's quantity fails with NON_MUTABLE_INVENTORY_ITEM
Adobe Commerce bundle product with options and a default quantity per option the bundle has no quantity of its own; it goes out of stock when the products of a required option are out of stock

Three things to plan for. Shopify Bundles tracks a bundle by overall stock and not per location, allows up to 30 components in a fixed bundle, and does not update the bundle price when a component price changes; the integration does. Adobe Commerce sets a bundle's status from the stock status of its options, so the rule is about in stock or out of stock and not about whether there are 2 sensors for the next bundle. Business Central's standard API has no resource for an assembly BOM, so the build includes reading it another way.

Checked on October 3, 2026 in the NetSuite Records Browser, Business Central's assembly documentation, Shopify's bundles help page, the Shopify Admin API reference and Adobe Commerce's bundle product guide. Per system: NetSuite, Business Central, Shopify and Magento. For companies with bills of materials in production: manufacturing.

Where standard connectors stop

Standard connectors and iPaaS platforms sync inventory one to one: one item number in the ERP, one quantity in the store. A kit with no stock of its own in the ERP gets no number that way, or a number someone maintains by hand. The bill of materials is not part of the fixed field set, and neither are lot, serial number and expiry, which split a component's stock into parts that count and parts that do not.

The price side has the same gap. One documented store connector does not apply tier pricing to bundle products, so a customer with a quantity break on the loose controller does not see it on the kit.

The integration we build reads the bill of materials where it lives, recalculates the kits after every component change and fixes the one place where an order is split. The first run is a dry run: per kit, the calculated number next to the number the store shows now. Tell us how your kits are set up in the ERP or warehouse system.

Frequently asked questions

How does the integration handle kits and bundles?

The kit gets no count of its own. The integration reads the bill of materials from the ERP or warehouse system, divides the free stock of each component by the quantity per kit, rounds down, and takes the lowest result. An order for a kit goes to the ERP as the kit item or as one line per component, depending on whether the ERP knows the kit.

What happens to a bundle when one component runs out?

The bundle goes to zero, even with hundreds of the other components on the shelf. When the missing component has a purchase order with an expected date, the bundle can stay orderable as a backorder with that date. The components that are in stock stay for sale on their own.

Can one component sit in several kits?

Yes. The integration keeps an index from each component to every kit that uses it and recalculates all of them when the component's stock changes. A controller in two kits with 30 controllers free puts both kits at 30. After an order for 20 of one kit, the other shows 10.

Does the kit have to exist as an item in the ERP?

That is the simplest setup: the ERP holds the bill of materials as a kit or assembly item and the integration reads it there. When the kit exists only in the store, the bill of materials is kept in the integration and orders reach the ERP as component lines. The composition then lives in two places, and a change has to be made in both.

How does the kit price reach the invoice?

As one line for the kit, or split over the components in proportion to their own prices. Splitting creates a rounding difference: 5 kits at 189.00 split into unit prices of 164.13 and 12.43 add up to 944.95. The integration therefore sends line amounts that add up to 945.00 instead of unit prices.

Tell us what you need

Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.

  • You know the price and the timeline before you commit to anything
  • We work out the connection that takes the work off your hands
  • We handle the build, hosting, monitoring and maintenance
  • Your team has less information to retype and fewer discrepancies to chase

Suppliers, products, orders per day, a rough estimate is fine.

Or email directly: carsten@syncmyshop.com