Skip to main content

Charging Methods

Shopify charges the price of real things in a cart. A configured price therefore has to become real cart contents somehow, and there are four ways to do that. You pick one per project, in Storefront settings.

If you are not sure, use Product lines. It is the recommended method for new projects: it works on every Shopify plan, handles every kind of pricing, and charges your own products at the price Shopify sets for them.

Product lines​

The configured price is assembled from real cart lines: your product, the products the configuration links, the variants its parts pick, and a hidden line for each amount 3D Bits works out - priced options, formulas, typed part prices.

Shopify prices your own products. Your product, every product linked to an option or a part, and every variant a part picks are charged at the price Shopify sets for them - in your currency, in other currencies and in every country. Change a price in Shopify and the configurator and checkout follow it, with no publish needed. 3D Bits works out only the rest: the amounts you set in the Composer. A project published before 3D Bits worked this way needs one more publish first - see Projects published before this change below.

At checkout the shopper normally sees one line at the full configured price - the extra lines are combined into it. The exception is a configuration that posts more than 2,000 units on one of those lines: Shopify will not combine a group that large, so the parts stay listed separately. Publishing warns you when a configuration of yours will do that. A configuration with a part picked from your variants checks out only as one combined line, so for it publishing stops instead and names the configuration.

In the cart, that combining has already happened too, but the combined row carries none of the chosen options: Shopify keeps only 3D Bits' own bookkeeping on it. So the cart row would show a price with nothing explaining it. 3D Bits fills that gap itself, adding a configuration summary under the row - collapsed to a count, expanding to every choice with its swatch or thumbnail. The full list is on the order either way.

  • ✅ Works on every Shopify plan
  • ✅ Handles everything: options, formulas, sliders, parts, linked products, parts picked from your variants, quantity
  • ✅ Every part appears on the order as your own product, so your team can see what to pick and make
  • ✅ Your own products always cost what Shopify says
  • ⚠️ Creates hidden helper products in your catalogue for the amounts 3D Bits works out (what they are)

Pick this if you are starting out, you price with formulas or sliders, or the configuration is made of real products you also ship.

Your product's price is the base price

In this method the base price of the configurator is your product's own price in Shopify. Publishing stops if no variant of the product the configurator sits on costs the base price you set, and the project page can set the price for you. Other variants of the product may cost something else: the project still publishes, with a warning naming what a shopper choosing each one pays. See Setting up pricing.

Projects published before this change​

A Product lines project you last published before 3D Bits began charging your own products at Shopify's price keeps working the old way until you publish it once more: it charges the prices you published, and checkout refuses a cart when a linked product's price has moved since. The projects list marks such a project Republish needed.

That publish can stop for three reasons, each named in the message:

  • No variant of your product costs the base price. Set one to match the other.
  • A part that links a product is marked Already part of the base price. Untick it and lower the base price by what the part costs.
  • A linked product is saved at two different prices. Sync the prices.

A Single line project with a linked option or part, or with a part that picks one of your variants, is charged through Product lines, so the same rules apply to it.

One line per option, or one combined charge​

Product lines has a second setting, in the project's Storefront settings: How option charges reach the order.

One line per chosen option is the default. Each priced option gets its own hidden product, so the order itemises the options as separate lines - which is what you want when your workshop reads the order line by line.

One combined charge collects the priced options together instead, so a configuration adds one extra line however many options were chosen.

The trade-off is capacity. Checkout re-verifies every line a configuration posts and can check only so many lines in one cart, so a configurator with many priced options lowers how many configured items one cart can hold. Publishing tells you the number. If shoppers are hitting that limit, switching to the combined charge is the fix.

Either way, options linked to your own products still ship as their own lines, and the order still carries the full breakdown of what was chosen.

Bundled parts​

For parts lists longer than a cart can hold. The same real parts as Product lines, reaching the cart a different way: the shopper adds one line, and Shopify nests the parts underneath it as a bundle. Bundled parts keeps working as it always has.

Two things follow from that, and they are the reasons to choose it:

  • A shopper cannot delete one part. Shopify enforces the tie: the whole configuration goes from the cart or none of it does. Nobody receives an assembly missing its fixings because they tidied their cart.

  • It holds more parts per item. Checkout re-verifies every line a configuration posts, and the whole cart may carry about 117 of those lines, shared by every configured item in it - which is what limits Product lines. A bundle is one line at checkout however many parts it holds, so its parts do not count against that. What limits a bundle instead is how much checkout may write when it nests the parts, counted as the parts one configuration can charge at once - parts that exclude each other on the same choice do not count together: about 130 of them for one configured item, fewer as a shopper buys more of it in one cart. Single line charging, which nests nothing, is limited by the size of the rules themselves - about 300 parts, or about 200 when each carries a few conditions. Publishing tells you when a project is over, and what is costing the most.

  • ✅ Works on every Shopify plan

  • ✅ Handles everything Product lines handles: options, formulas, sliders, parts, linked products, quantity

  • ✅ Every part appears on the order with its own price, inventory and fulfilment row

  • ✅ The bundle is priced entirely by its parts

  • ⚠️ Charges every part at the price you published - after a price change in Shopify, publish again to sell at the new one

  • ⚠️ Creates the same hidden helper products in your catalogue (what they are)

  • ⚠️ A part that picks one of your variants needs Product lines - publishing says so

  • ⚠️ The configured product is a grouping, not a pickable line: your team picks the parts listed under it

  • ⚠️ Not available for subscription or pre-order purchases (a Shopify restriction, shared with Product lines)

Pick this if your configurator is made of many real parts, or you want the parts held together so an order can never arrive incomplete.

A limit on how many of one part

Shopify caps how many of a single part one bundle may hold. Publishing works this out for your configurator: it refuses outright if one part already exceeds it, and otherwise checks it against your quantity control's own maximum. If that maximum lets a shopper ask for more than the bundle can hold, publishing tells you the number to set it to; if the control has no maximum at all, it says so. Lowering a part's quantity per set raises the number.

What the order looks like

Each part is its own line item with its own price and inventory, labelled "Part of: your product". The configured product itself is the heading they sit under, and it carries the configuration, the preview image and the order PDF. The price breakdown, the parts list and the re-open link all work exactly as they do in Product lines.

What each part costs on the order

Every part is priced individually, including each product an option links, so your per-product reporting is right. Two cases put 0.00 on a part rather than a share: a product you linked without a recorded price, and a configuration a formula discounts to nothing. The order total is exact in both.

Variant matrix​

3D Bits generates a real Shopify variant for every possible combination, on your own product. When a shopper configures, the storefront simply selects the matching variant.

  • ✅ Everything native: Shopify's own pricing, Markets, discounts and inventory apply untouched
  • ✅ Best choice when you sell internationally and want exact per-market prices
  • ⚠️ In a market that includes tax based on the shopper's country, checkout charges the per-country price but the configurator still shows your own country's total - see Other currencies
  • ✅ No helper products
  • ⚠️ Only possible when every priced choice is a discrete option - no formulas or sliders
  • ⚠️ Takes over the product's variants entirely, replacing what is there
  • ⚠️ Shopify caps variants per product, so very large combinations do not fit

Pick this if your options are all dropdowns, radios or checkboxes, the number of combinations is modest, and you want native Shopify behaviour everywhere - particularly across several markets.

It replaces your product's variants

Choosing this method rebuilds the product's option space. 3D Bits will refuse if the product has variants it did not generate, so your existing variants are never silently overwritten - but you should expect the product to be about the configurator once you switch.

Single line​

The configured product is charged as one line whose price is set to the configured total.

  • ✅ The cleanest cart: one line, no helper products at all
  • ⚠️ Requires Shopify Plus (or a development store not set to try a lower plan)
  • ⚠️ Requires the Standard or Pro 3D Bits plan
  • ⚠️ Overrides per-market price adjustments and per-country tax, so it suits single-currency, single-country stores better

Single line keeps working as it always has. A project with an option or a part linked to one of your products, or a part that picks one of your variants, is charged through Product lines instead, and publishing tells you so.

Pick this if you are on Plus, sell in one currency, and want the tidiest possible cart.

Which method to reach for first

Product lines, Bundled parts and Variant matrix are the most thoroughly reconciled at checkout, because the amount Shopify collects is made of real product lines it can check the configured total against. Single line buys a tidier cart by charging one line instead, and is the right choice when that presentation matters more to you. If you have no particular reason to prefer one, start with Product lines.

How many options each method supports​

The limits differ sharply, and they are the main reason a method may not be available to you.

Product linesBundled partsVariant matrixSingle line
Priced controlsNo fixed limitNo fixed limitAt most 3No fixed limit
Options per controlNo fixed limitNo fixed limitLimited by the combination totalNo fixed limit
Total combinationsNot enumerated - no limitNot enumerated - no limitAt most 2,048Not enumerated - no limit
Formulas and sliders✅✅❌ not possible✅
Parts✅✅❌ not possible⚠️ a linked part moves it to Product lines
A part picked from your variants✅❌ publishing refuses❌ not possible⚠️ moves it to Product lines
An option linking several products✅⚠️ the extras list at 0.00❌ not possible⚠️ moves it to Product lines
A shopper-chosen quantity on an option✅✅❌ not possible✅
Quantity control✅✅❌ not possible✅
Multi-select checkboxes✅✅❌ not as a dimension✅
Parts one configuration can carryabout 117, shared by every configured item in the cartabout 130not applicablenot applicable

Why the matrix is the strict one. It generates a real Shopify variant for every combination, so it inherits Shopify's own product limits: 3 option dimensions and 2,048 variants per product. Four priced controls, or 3 controls whose options multiply past 2,048, cannot be expressed as variants at all.

Multiply your options to check: 8 woods × 5 sizes × 6 finishes = 240 combinations, comfortably inside. Add a fourth control and it becomes impossible regardless of the total.

Why Product lines has no fixed limit. It creates one hidden product per priced control and one variant per option, and splits a control across several products when it exceeds 250 options. So a control with 400 colours is fine.

There is still an overall ceiling: a configuration with a very large number of priced options and conditions can grow past what checkout can verify. Publishing refuses such a project and names the size - see Troubleshooting. In practice this is far beyond what a shopper would sensibly navigate.

Why Bundled parts holds more. Checkout verifies each configured cart line, and a bundle is one line however many parts it holds. What limits it instead is how much the app may write when it nests the parts, counted as the parts one configuration can charge at once - parts that exclude each other on the same choice do not count together: about 130 parts for one configured item in the cart, about 65 each when a shopper buys two of them, about 32 each for four. Publishing works that out for your configurator and tells you the number. Product lines shares its roughly 117 lines across the whole cart, so a 60-part configurator holds one item through Product lines and four through Bundled parts - if you need more parts than Product lines allows, this is the method that gives them to you.

If the matrix is not possible, publishing says exactly why and uses Product lines instead rather than failing. It checks these in order, and names the first one it meets:

  1. A set multiplier control, which multiplies the whole configuration.
  2. An option that lets the shopper choose a quantity.
  3. A priced control that cannot be a variant dimension - only dropdowns, radio buttons and checkboxes can be.
  4. An option that links your own products - one or several - since they must reach the order as their own lines.
  5. Any part - a linked one is a real item needing its own line, and a priced unlinked one is an amount rather than a variant.
  6. Any formula, which produces amounts that cannot be enumerated.
  7. A multi-select control, since a variant holds one value per option.
  8. No priced option controls at all to build a matrix from.
  9. More than 3 option dimensions, which is Shopify's limit.
  10. More than 2,048 combinations, which is also Shopify's limit.

How many configured items fit in one cart (Product lines)​

With Product lines charging, every product, part and option charge a configuration adds is a cart line of its own, and checkout can check only so many lines in one cart, shared by every configured item in it. Publishing counts the most lines one configuration can add beside your product, and that sets how many configured items one cart holds:

Lines one configuration addsConfigured items one cart holds
up to 294
30 to 393
40 to 582
59 to 1171
more than 117none - publishing stops

A part picked from your variants takes a little more room than other lines - about 1.15 lines each - because checkout also reads which options its variant has. A configuration made only of such parts holds:

Parts picked from your variants in one configurationConfigured items one cart holds
up to 254
26 to 333
34 to 502
51 to 1011
more than 101none - publishing stops

Very many choices or text fields, long price formulas, long lists of parts, or product names longer than about 200 characters can hold a cart to fewer, since checkout reads the name of every product in the cart. Publishing always tells you the number, and a shopper who tries to add more is told how many fit - see Troubleshooting.

Choosing​

Your situationMethod
Just getting startedProduct lines
You price with a slider, a formula, or by area or lengthProduct lines
The configuration is made of parts you also shipProduct lines
One choice adds several of your own productsProduct lines
A part is one of your variants, picked by the shopper's choicesProduct lines
The configuration has more parts than Product lines will publishBundled parts
The parts must stay together, so nobody orders half an assemblyBundled parts
All options are discrete, and you sell in several currenciesVariant matrix
You are on Plus, sell in one currency, want the tidiest cartSingle line
More than 3 priced controls, or more than 2,048 combinationsProduct lines (the matrix cannot express it)

Changing your mind​

You can switch methods and republish. 3D Bits cleans up after the method you left - archiving helper products it no longer needs, or restoring your product to a single variant when you leave the matrix.

Two things to know before you switch:

  • Archived, never deleted. Past orders point at helper products, so they are archived rather than removed. Deleting them by hand breaks your order history.
  • After leaving the variant matrix, check your product's price. The matrix replaced its original variants, so 3D Bits restores it to a single variant priced at your authored base price, or at the cheapest combination it had generated if there is no base price - which may not be the price you want.
  • Moving between Product lines and Bundled parts changes nothing in your catalogue: both charge through the same helper products and the same linked products. What changes is the cart, the order's shape and how many parts a configuration may carry. Moving to Product lines can therefore be refused if the configuration has grown past what it can publish, and the message says so.
  • A cart built before the switch cannot be checked out. The two methods build different carts, so a shopper who added your product days earlier is asked to remove it and configure it again rather than being charged twice. Nothing is lost - only that shopper's in-flight cart is affected, and only until they re-add it.

If a method you picked is not available to your store or your configuration, publishing tells you and uses Product lines instead rather than failing.

Product lines is the fallback, so it has none of its own. When it cannot be provisioned either, publishing stops rather than going live with a configurator that would collect the wrong amount.

Bundled parts has no fallback either. Nesting the parts is what charges the order, so if the app cannot set that up on your store, publishing stops and says so rather than going live with a product that would collect its own price and ship none of its parts.