What is CPQ? Configure, price, quote, defined
CPQ, defined
People ask this as: what is cpq, configure price quote software meaning
CPQ stands for configure, price, quote: software that assembles a quote from a product catalog, prices it under consistent server-side rules, and gates discounts through approval before the quote can proceed. Its purpose is that the price a customer sees is the price the policy allows, not the price a salesperson improvised. Accordo's commercial operations domain implements CPQ as catalog, price books, server-priced composite quotes, immutable quote versions and a versioned discount policy whose boundary outcome is a named human's decision — and it stops at the quote: nothing bills, invoices or takes payment.
Where this stops
Read this before the rest of the page. Every line below is a thing this does not do.
- CPQ here stops at the quote. Nothing bills, invoices, takes payment or recognises revenue, and MRR, ARR and TCV are not derived (L-10).
- The catalog provider is an offline fixture. No Stripe, Zuora, ERP or CPQ adapter ships, and no credential ships (L-05).
- There is no quote PDF and nothing is sent to a customer. The quote is records and Admin screens.
- requiredApprovalKey is a label, not enforced security. The server checks that the deciding actor is a user, never which user, because there is no authentication (L-01).
- Metered usage, overage, proration, ramps and minimum commitments are not quotable, and quoting one is a refusal rather than an approximation.
- The discount policy is proven for quotes. There is no general approval engine over arbitrary custom objects.
No authentication, tenancy or RBAC. The server is local-development-only. An actor header is an assertion, not an identity. Do not expose it to a network. Every claim and every limitation is on one page.
The definition, term by term
Configure: a quote is assembled from a catalog of products the business actually sells, in combinations the catalog allows, rather than typed free-form. Price: each line is priced by rule — list prices, one-time and recurring charges, quantity tiers — computed by the system so two salespeople quoting the same thing get the same number. Quote: the assembled, priced document is versioned and carries its own approval state, so what was offered, by which rules, at which time, remains answerable.
The discipline CPQ adds over a spreadsheet is authority: the server owns the arithmetic and the policy owns the discount. A discount inside policy proceeds; a discount outside it stops and waits for someone entitled to say yes. That gate — not the product picker — is the reason the category exists.
How Accordo's commercial operations domain implements it
Quotes price entirely on the server from a catalog and its price books — one-time and recurring charges with flat, per-unit, volume and graduated tiers — and freeze into immutable versions, so a submitted quote is evidence rather than a draft that can drift (C-08). Money is integer minor units with no currency conversion, and totals that would mix unlike periods or unlike currencies are deliberately never summed into a grand total.
The discount gate is a versioned policy: its thresholds live in fingerprinted config, its decision is stored on the quote version with the policy name, version and fingerprint that produced it, and its only outcomes at the boundary are auto-approve or stop and wait for a named human. An agent actor asking to approve a discounted quote is refused with a 403 (C-21), and every mutation along the path leaves an audit event and a step-level trace (C-16).
The catalog provider in this repository is a deterministic offline fixture. No Stripe, Zuora or ERP adapter ships and no credential ships (L-05) — synchronising an external catalog is partially supported in the job catalogue precisely because the provider seam exists and no real provider does.
Where this CPQ stops
The name stops at the quote. There is no invoice, no payment, no dunning, no tax and no revenue recognition anywhere in the framework, and MRR, ARR and TCV are deliberately not derived (L-10). There is also no quote PDF and no delivery to a customer: the quote exists as records and Admin screens, and no notification adapter sends anything to anyone.
The approval is bounded the same way everything here is. requiredApprovalKey values like sales-manager are labels printed on the approval, not enforced roles, because there is no authentication to check a role against (L-01). Metered usage, overage, proration, ramps and minimum commitments are recorded as not quotable rather than approximated — asking for one is refused, which is the honest behaviour.
The evidence this page rests on
Claims and limitations are printed from site/claims.json word for word. Job statuses come from docs/benchmarks/jobs.json; a job with no page of its own is listed with its status rather than linked.
Claims
- C-08 Quotes price on the server from a catalog — one-time and recurring, flat, per-unit, volume and graduated tiers — and freeze into an immutable version when a discount goes for approval.
LimitCatalog sync runs against a fixture provider; no real external catalog (Stripe, Zuora, ERP) is connected. Money is integer cents with no FX — currencies are never summed.
- C-16 Every mutation goes through a module service or a named workflow, and leaves an audit event and a step-level trace behind it.
LimitAudit records what the process did under an asserted actor. It is not a tamper-evident or externally attestable log, and it is not a compliance control.
- C-21 The same refusal holds where the money is: an agent actor asking to approve a discounted quote is refused with a 403, and only a human user actor can decide.
LimitThe assertion lives inside a composite end-to-end test rather than a test named for it, so the citation is a file and a line rather than a test name. Extracting it into a named test is tracked in docs/strategy/GO_TO_MARKET.md; until then, cite the line.
Limitations
- L-01 No authentication, tenancy or RBAC. The server is local-development-only. An actor header is an assertion, not an identity. Do not expose it to a network.
- L-05 No email, calendar or marketing integrations. An in-memory notification provider contract exists. No adapter sends anything to anyone.
- L-10 Nothing bills. No invoice, payment, tax, usage rating, proration or revenue recognition exists, and MRR, ARR and TCV are not derived from contract data.
Jobs it covers
- JTBD-CO-01 Create a Quote from a Price Book — validated end to end
- JTBD-CO-02 Synchronize an external catalog (Stripe/Zuora/ERP/custom) — partially supported
- JTBD-CO-03 Request a discount under a deterministic policy — validated end to end
- JTBD-CO-04 Obtain required commercial approval on a discount — partially supported
- JTBD-CS-05 Calculate MRR, ARR and TCV from real contract data — not supported