Understand quotes and contracts

Quotes, contracts and framework agreements

Three things that all mean 'agreed price' — and the mechanism that turns a won quote into one.

Ask three people in a B2B company what "the agreed price" is and you get three different objects. All three are real, they behave differently, and confusing them is how a company ends up honouring a price it agreed once, forever.

Three objects, one phrase

QuoteContract priceFramework agreement
CoversOne dealOne article, ongoingA volume over a period
LifetimeDays or weeksMonths or a yearA financial year, usually
Ends byExpiry or acceptanceValid untilThe end of the term or the volume running out
The buyer sees itAs a documentAs their price in the shopAs remaining volume plus their price
BindsYou, until it expiresBoth sides, per orderBoth sides, including a commitment to buy
Lives inQuotesA price listAn agreement plus a price list

Read the last row twice. A quote is its own object. The other two are price lists — that is not an implementation detail you can ignore, it is the whole mechanism.

Quote: one deal, frozen

A quote answers one question at one moment: what does this basket cost this buyer, if they order it in the next four weeks? Its prices are a snapshot taken at send — see The quote lifecycle.

A quote is deliberately outside the price resolution chain. Resolution ran once, when the quote was drafted; the answer was copied onto the lines and the chain was never consulted again. That is why a price list change tomorrow does not move a sent quote, and why a quote cannot be used to price a second order.

Contract price: the customer's standing price

A contract price is what the buyer pays for an article every time, without asking. 4711-A is €19.90 on your catalogue and €16.20 for Müller Industriebedarf until the end of the year, and the shop shows €16.20 to anyone logged in at Müller.

That works because a price list can be bound to an organization, and an organization-bound list outranks a channel list, an open list and the default list. Specificity beats priority, always. The full ordering is in How pricing works; the setup is in Contract prices for a customer.

A contract price commits you to a number. It does not commit the customer to buy anything.

Framework agreement: the commitment

A Rahmenvertrag adds the part a contract price is missing: the customer's side of the deal. They commit to 12,000 metres of hose over twelve months; you commit to €4.80 a metre and a 48-hour delivery window. Individual orders against it are call-offs (Abrufe) — see Call-offs against a framework agreement.

An agreement therefore carries two things a contract price does not:

  • A committed volume, in units or in value, with a running balance.
  • Call-off rules — minimum call-off quantity, maximum per call-off, what happens when the committed volume is exhausted, and what happens if it is not reached by the end of the term.

The second one is where the money is. A framework price is usually the price for the whole committed volume. If the customer calls off 4,000 metres of the 12,000 they committed to and the term ends, you sold a third of the volume at the full-volume price. Decide in advance whether that triggers a retroactive correction, a renegotiation, or nothing — and write it into the agreement's terms. See Set up a framework agreement.

How a won quote becomes a contract price

This is the mechanism customers ask about most, so here it is precisely.

Accepting a quote produces an order. It does not, by itself, produce a standing price — a quote is one deal. When the deal you won is meant to hold for the next twelve months, you convert it into pricing, and there is exactly one way that works:

  1. A price list is created for the account. Bound to the organization, in the quote's currency, with the quote's net/gross basis.
  2. The accepted lines become price entries. One entry per article, at the agreed unit price. Where the quote agreed a ladder — €5.60 from 1, €4.80 from 500 — that is several entries on the same article, differing by quantity_min. The ladder is the set of entries; there is no separate tier object. See Scale and volume prices.
  3. Validity is set from the agreement's term. Valid from the start date, Valid until the end. This is what makes the price stop on its own.
  4. Priority is set above your standard customer list, so that where the two overlap, the negotiated one wins. Priority only sorts lists of equal specificity — it is not a substitute for binding the list to the account.
  5. Logged-in buyers only is switched on. Always. A negotiated price on a list anonymous visitors can resolve is a negotiated price your competitors can read.
  6. The quote keeps the reference. The list records which quote produced it, and the quote records which list it produced. Twelve months later, "why does Müller pay €4.80?" has a one-click answer instead of an archaeology project.
Do not put your whole catalogue in the list. Convert only the lines you actually negotiated. A customer list holding the 40 agreed articles can be checked against the signed document line by line; the same list padded to 40,000 articles silently freezes every other price for that customer at whatever it was on the day you copied it, and nobody will ever audit it.

The framework agreement then sits on top of that price list, holding the committed volume, the call-off rules and the term. The price list answers "what does it cost"; the agreement answers "how much is left and what are the rules".

Which one do you actually need

The situationUse
A buyer wants a written number for one projectA quote
You agreed a price for six articles for this customer, no volume promiseA contract price list
The customer committed to a volume in exchange for the priceA framework agreement with a bound price list
Everyone gets a lower price above 500 unitsA scale price on your standard list, not a contract
A price that runs for six weeks and then revertsA time-limited price or a promotion
A temporary incentive on top of the agreed priceA promotion — and read the margin warning there first

The last two rows are the ones people get wrong. A promotion is not a way to record an agreement, and a contract price is not a way to run a campaign. They sit at different points in the chain: contract prices are the resolved price; promotions apply after resolution, to whatever it produced. That distinction is the subject of Promotions vs. contract prices.

The failure mode: the agreement nobody ended

Contract prices do not rot loudly. They rot by outliving the negotiation that produced them. A price agreed in a bad quarter in 2023, on a list with no Valid until, is still being served today — at a margin nobody would sign off now, to a customer who has long since stopped mentioning it.

Two habits prevent it. Every negotiated list gets an end date at creation, not later. And every end date goes in a calendar with a name against it, because the day the price reverts is the day the customer phones. See Price list hygiene.

Next