Skip to main content

Pricing

Quantaprice is built around a single central problem: every customer should see the right price for every product, automatically, without manual maintenance at scale. That means a wholesale segment gets its discount applied across your entire catalog when a base price changes. A specific account gets its negotiated overrides preserved without anyone touching them. A new product added to the catalog inherits the correct pricing for every segment immediately. The pricing model — hierarchy, rules, bundles, scheduling, and history — is the mechanism that makes this work.

Pricelist hierarchy

Pricelists are organized as a parent-to-child tree. A base pricelist holds your catalog prices. Segment pricelists (wholesale, distributor, retail-EU) inherit from the base and apply rules — for example, 15% below catalog across all SKUs. Customer account pricelists inherit from a segment and can carry manual overrides on individual SKUs. When you update a price at the base, all downstream pricelists re-evaluate their rules automatically. Manual overrides are flagged and protected — automation never overwrites them.

Price rules

Rules are the logic that turns a parent price into a child price. Each rule is scoped to a pricelist, optionally filtered to a subset of products (by category, brand, or any article attribute), and expresses a calculation — for example, take cost and apply a 40% margin, or take the catalog price and discount by 15%. Rules compile at startup and evaluate in microseconds. The first matching rule wins, so you can express complex tiered logic cleanly without conflicts.

Bundle pricing

Bundles are articles whose price is derived from component SKUs. In sum-of-parts mode, each component resolves at the customer's own pricelist — if a customer has negotiated discounts on two components, those discounts flow through to the bundle price automatically. In fixed mode, the bundle carries a single price that overrides the component sum. Both modes can coexist in the same catalog. Bundle prices are materialized at write time, so reads are always O(1) regardless of bundle complexity.

Scheduled pricing

Any price change can carry a future effective_from timestamp. The engine activates it at precisely the right moment — no manual intervention, no nightly jobs, no race conditions around midnight. A Q1 price increase, a weekend campaign, a flash sale starting Friday at midnight: all configured in advance and applied on schedule. Scheduled changes sit alongside current prices in the same model and are visible before they activate.

Price history

Every price is stored with full effective-dating (SCD2). Nothing is overwritten or deleted. Query any past timestamp to retrieve the exact prices that were live at that moment — reconstruct the pricing behind any historical order, audit a change after the fact, or trace exactly when and why a price shifted. History is retained permanently.


Markets — currencies, VAT, and rounding — are covered in the next section. They form the calculation pipeline that wraps the pricing model: once a net price resolves, Markets handles currency conversion, tax application, and the rounding rules that produce the number a customer actually sees.