# Where prices come from

> The pricing building blocks — base price, answer prices, calculations, overrides — and how they add up.

Source: CBX documentation, version 3.x (released). Canonical page: https://docs.configbox.at/docs/admin-guide/pricing/where-prices-come-from. Last updated 2026-08-02.

---
> **Audience:** store admins · **Scope:** the pricing model, before you build anything · **Last reviewed:** 2026-07-20

**What this does** — Explains every place a price can be set and how they combine into the total
the customer watches while configuring. Knowing this map, you'll put each price in the right place
on the first try.

How the pieces assemble, whenever the customer changes anything:

```mermaid
flowchart LR
  BP["Product base price"] --> SUM["Configured price\n(recomputed live)"]
  AP["Static prices per answer"] --> SUM
  CALC["Calculations\n(formula / matrix / code)"] --> SUM
  SUM --> ADJ["Customer-group overrides\n· currency · taxes"]
  ADJ --> SHOW["What the customer sees"]
```

## The building blocks, in the order they add up

1. **Product base price** (product form) — the starting amount before any selections, with its
   **tax class**.
2. **Answer prices** (answer form) — each selected answer adds its static **Price**. This is the
   workhorse: for most products, base price + answer prices is the whole story.
3. **Question price calculations** (question form → Calculations) — a question whose price must
   be *computed* (e.g. a text/slider question priced by the entered dimensions) gets a
   **Price Calculation** instead of static prices; an optional **Price Multiplicator** scales the
   result (e.g. by a quantity).
4. **Answer price calculations** (answer form → Calculations) — a calculation attached to an
   answer **overrides** its static price for that question. Use it when one choice's surcharge
   depends on other selections.
5. **Delivery and payment** — shipping cost (by weight and zone) and any payment-method surcharge
   are added at checkout; they can be previewed in the live summary if enabled.

On top of the summed raw prices, CBX automatically applies:

- **Currency conversion** — you author every amount in the **base currency**; other currencies
  convert by their multiplier.
- **Per-currency / per-group price overrides** — explicit amounts you pin for a specific currency
  or customer group (on products and answers) beat the converted value.
- **Customer-group discounts** — volume-discount tiers from the customer's group, applied in the
  cart.
- **Tax** — per the item's tax class and the customer's place and B2B/B2C mode. Never put tax
  into a price or formula.

Regular and **recurring** (subscription) pricing run in parallel: nearly every field above has a
"… Recurring" twin, and the storefront shows both totals for products that use both.

## Choosing the right mechanism

| You want | Do this |
|---|---|
| "Leather seats cost €200 extra" | static **Price** on the answer |
| "Price is width × height × rate" | **Formula calculation** on the question |
| "This coating's surcharge depends on the chosen size" | calculation on the **answer** |
| "Glass price per size/thickness bracket" | **Matrix calculation** |
| "10% handling on everything" | **Code calculation** using the running total |
| "Trade customers pay less for everything" | customer-group **discounts** or per-group **overrides** — not formulas |
| "Max quantity depends on the chosen package" | a calculation as the question's **calculated maximum** |

## Seeing what the customer sees

The live **selection overview** beside the configurator itemizes prices per question and page —
its detail level is configurable globally (**Settings**) and per product. When checking your
pricing, configure the product on the storefront and watch the overview react to each change;
every number should be explainable by one of the building blocks above.

## Good to know

- A calculation does nothing until it's **attached** to something — a question's or answer's
  price/weight, a min/max bound, a rule condition, or another calculation.
- **Weight** works like price: static per answer, or computed by a weight calculation — the cart
  weight then drives weight-based shipping.
- **Was prices**, **price labels** ("from") and **custom price text** ("call for quote") change
  how a price is *presented*, not what is charged.
- Whether a customer group sees prices at all (or can only request a quote) is a **customer
  group** permission — see the commerce system.
