Pricing and checkout

How configured prices reach Shopify checkout on Plus and non-Plus stores, currencies and rounding.

Moddify Studio does not create extra variants to carry prices. A Shopify Cart Transform function, installed with the app, sets the price of each configured cart line at checkout.

How a configured line is priced

  1. The builder adds the base variant to the cart with hidden line properties: the design id, a compact list of the selected answers and the customizer version.
  2. In the cart and at checkout, the function reads those properties and the published price table stored on the product.
  3. It computes the price with the same engine the builder uses, including rules and rounding, and applies it.

The function never trusts a price sent by the browser. If someone edits the cart line properties, the function either prices what they selected or ignores answers that do not exist.

Shopify Plus: one line

On Shopify Plus the function updates the line in place: one cart line, the full price, the product title. Order exports and ERPs see a single sales row.

Other plans: base product plus parts

Shopify only lets Plus stores change a line's price directly. On other plans the function expands the line into a bundle: the base variant plus one component for every priced answer that has a Parts variant. Each component gets its exact price and keeps its own SKU and stock. Price changes on answers without a parts variant are added to the base line.

Both modes charge the same total.

Choosing the mode

In Settings, How configured items appear in the cart is set to Automatic: single line on Plus, bundle elsewhere. You can force the bundle on a Plus store. The single line is only available on Plus.

Currencies

Prices live in your shop currency. When a buyer shops in another currency through Shopify Markets, the builder and the function convert with the same rate and the same integer math, so the builder shows exactly what checkout charges.

Rounding

Round totals up to an ending such as .95 or .99 in the customizer settings. Rounding applies to the total, never to single answers. Each market can have its own ending, for example x9.99 for euros.

The price re-check

When an order arrives, our backend prices every configured line again from the version it was made with. If the paid price does not match, the order gets the tag cm-price-mismatch. Look at those orders before fulfilling them.

Limits

The checkout function reads its price table from a product metafield, which Shopify limits to 10,000 bytes for functions. Publishing tells you if a customizer is too large. Very large customizers usually fit once long ids are shortened and unused answers are removed.