What reaches the order
| You sold | On the order | SKUs | Prices |
|---|---|---|---|
| Build-your-own or fixed set | One line per item, grouped under the set product. The set product itself is not a line | Each item's own SKU. The set product's SKU arrives on the group (lineItemGroup.variantSku) | Each item carries its share of the set's price. With Percent off items, Save more with more or Per-slot rules, each item's own price is its price in the set, so a free slot is a line at 0.00. With Set price, Shopify shares the set's price across the items by their prices |
| Collection set | The shopper's items as ordinary lines | Each item's own SKU | Full price, with the set's discount allocated to each line |
| Gift from a rewards ladder | An ordinary line | The gift's own SKU | Its full price, discounted 100% |
Stock comes off the items, never off the set product. Tax, refunds, returns and Shopify's reports all work per item.
Worked example
One order with the Coffee sampler (Per-slot rules, buy 3 get 3 free, 50.00), a candle collection set (any 5 for 40.00) and a gift. Settings > Data and integrations > Order data shows the same order.
| Line | SKU | Price | Discount | Total |
|---|---|---|---|---|
Coffee sampler (group, SKU SET-COFFEE-6) | 50.00 | |||
| Ethiopia Guji | COF-ETH-250 | 12.00 | 0.00 | 12.00 |
| Colombia Huila | COF-COL-250 | 12.00 | 0.00 | 12.00 |
| Kenya Nyeri | COF-KEN-250 | 14.00 | 0.00 | 14.00 |
| Brazil Cerrado | COF-BRA-250 | 0.00 | 0.00 | 0.00 |
| Guatemala Huehue | COF-GUA-250 | 0.00 | 0.00 | 0.00 |
| Peru Cajamarca | COF-PER-250 | 0.00 | 0.00 | 0.00 |
| Pour-over dripper (included) | ACC-DRIP-01 | 0.00 | 0.00 | 0.00 |
| Tasting journal (included) | ACC-JRNL-01 | 12.00 | 0.00 | 12.00 |
| Any 5 candles for $40 (collection set) | 40.00 | |||
| Fig candle | CND-FIG-S | 10.00 | 2.31 | 7.69 |
| Cedar candle | CND-CED-S | 10.00 | 2.31 | 7.69 |
| Amber votive | CND-AMB-S | 9.00 | 2.07 | 6.93 |
| Tea rose candle | CND-TEA-L | 12.00 | 2.77 | 9.23 |
| Vetiver candle | CND-VET-M | 11.00 | 2.54 | 8.46 |
| Gift: Canvas tote | GFT-TOTE-01 | 15.00 | 15.00 | 0.00 |
Line totals always add up to the set's price to the cent.
Before your first bundle set order
The bundle set editor's Go live card checks each bundle set under Orders in your ERP and warehouse, and Home flags live bundle sets with items missing a SKU.
- Give every item a SKU. Most ERPs and 3PLs match order lines by SKU and stop an order they can't match. This is the most common cause of failed imports.
- Give the set product a SKU (for example
SET-COFFEE-6). It names the set on the group and on the rare order where the set could not be expanded. - Track stock on the items, not on the set product. Orders take stock from the items. A set product that counts its own stock never goes down, and at zero it stops the set selling. Keep it tracked only if you use it to pause the set.
- Plan for 0.00 lines. Free slots and free included items arrive at 0.00, and gifts net to 0.00. Some ERPs refuse 0.00 stock lines (NetSuite Connector, for example); map them to a free or promotional item there, or give the item a small price in the set.
- Import items, not sets. If your ERP also holds the set as a kit, bundle or assembly item, either import the items (recommended: stock and revenue land on what ships) or build that item from the order summary below and skip its items. Never both, or the set counts twice.
Settings > Data and integrations > Order data
Settings > Data and integrations > Order data for your ERP adds two things to paid orders with a Luxe bundle set. Both are off until you turn them on. Both need permission to edit orders, which Luxe asks for on that page only; Luxe reads orders for billing already.
| Setting | What it writes | Use it for |
|---|---|---|
| Order summary | The order metafield luxe.kit_summary (JSON): every bundle set with its type, set product SKU, whether it was expanded, total, and each line's SKU, quantity, price, discount and total; every gift with its rung. Any app with order access can read it | Mapping bundle sets in middleware or an ERP without reading line properties |
| Order tag | A tag you choose, luxe-kit by default, on orders with a bundle set | Routing and filters: a Celigo flow, a ShipStation automation rule, a 3PL's special handling |
The summary for the example above (trimmed):
{
"schemaVersion": 1,
"order": "#1042",
"currency": "USD",
"kits": [
{
"kitId": "ck_sampler",
"type": "slot_kit",
"title": "Coffee sampler",
"quantity": 1,
"variantId": "gid://shopify/ProductVariant/100",
"sku": "SET-COFFEE-6",
"expanded": true,
"total": "50.00",
"lines": [
{ "lineItemId": "gid://shopify/LineItem/9001", "variantId": "gid://shopify/ProductVariant/301", "sku": "COF-ETH-250", "title": "Ethiopia Guji", "quantity": 1, "unitPrice": "12.00", "discount": "0.00", "total": "12.00", "role": "pick" }
]
},
{ "kitId": "ck_candles", "type": "collection_kit", "title": "Any 5 candles for $40", "quantity": 1, "variantId": null, "sku": null, "expanded": true, "total": "40.00", "lines": [] }
],
"gifts": [
{ "lineItemId": "gid://shopify/LineItem/9014", "variantId": "gid://shopify/ProductVariant/501", "sku": "GFT-TOTE-01", "title": "Canvas tote", "quantity": 1, "unitPrice": "15.00", "discount": "15.00", "total": "0.00", "rungId": "rung_tote" }
]
}
Amounts are in your store currency, exactly as Shopify allocated them. role is pick for a slot the shopper filled and fixed for an included item. expanded: false means the set product itself is the line; pick its items by hand.
The summary and tag are written when the order is paid. Editing the order afterwards (adding or removing items) does not rewrite them.
Mapping tips
Dynamics 365 Business Central (Shopify connector)
- Map items by SKU (Item No. or Item No. + Variant Code). Turn on Auto Create Unknown Items only with a template you trust.
- The connector imports set items as ordinary sales lines and does not import the group, which is the right result for stock. For a set as an assembly item, extend the connector to read
luxe.kit_summaryand post the set instead of its lines. - Gifts import as price and a matching line discount, so they net to zero.
- The connector skips fulfilment sync on orders with two lines of the same variant. A Per-slot rules set can produce that when the same item fills a paid slot and a free slot. Fulfil those orders in Shopify.
_luxe_*values appear under the line's attributes. They are reference ids, safe to ignore.
Dynamics 365 Finance and Operations, SAP
These go through a third-party connector or middleware. Map lines by SKU, and use the order tag to route bundle set orders to a flow that reads luxe.kit_summary when you need the set as a BOM or kit item.
NetSuite (Celigo, NetSuite Connector)
- Map each line's SKU to the NetSuite item. In Celigo, set a default item for unmatched SKUs so an order never stops.
- For NetSuite kits or item groups, choose Celigo's price spread (master or member component) or build the NetSuite kit from
luxe.kit_summaryin a custom flow, and skip the component lines. - NetSuite Connector refuses 0.00 inventory lines. Map free slots and gifts to a non-inventory or promotional item.
ShipStation and 3PLs
- Set items import as their own SKUs, ready to pick. There is no set line to explode, so leave ShipStation's own Product Bundles off for Luxe bundle sets.
- Hide 0.00 lines on packing slips with a template rule if you prefer, or keep them so the gift is packed.
- Use the order tag in automation rules, for example to add an insert or route to a kitting station.
- Line properties appear under Item Options. The Includes line lists a set's picks in words, handy on packing slips.
Middleware (Celigo, Pipe17, Patchworks)
Read luxe.kit_summary from the order metafields and use kits[].lines[].sku and total. Filter on the order tag. The Admin API also exposes the group directly (LineItem.lineItemGroup, or sales_line_item_group_id and line_item_groups in webhooks) if you prefer not to turn on the summary.
Refunds and returns
Refunds and returns are per item, in Shopify and in your ERP. Refunding one item of a set refunds that line's total. Luxe's fee is reversed only when every Luxe line of an order is refunded (billing).
Need a direct integration?
When your ERP, WMS or 3PL needs more than the summary and tag, Settings > Data and integrations > Order data > Need a direct integration? > Contact us sends Luxe the system, the middleware you use, your order volume and what the connection should do. Luxe builds direct connections on request, scoped with you and priced by that scope.



