Quotes, price locking, and renegotiation

Understand the Quote as a binding offer, how Order creation preserves negotiated prices, and how the renegotiation loop works before an Order is created.

Ask about this Page
Copy for LLM
View as Markdown

After completing this page, you should be able to:

  • Explain the Quote states and the actions a buyer can take on a Pending Quote.

  • Describe how creating an Order from a Pending Quote preserves negotiated prices independently of catalog changes.

  • Trace the renegotiation loop and the creation of an Order from a Pending Quote.

A negotiation matters only if the agreed price holds. When Atlas Corporate creates an Order from a quote for 500 units, that price must survive a catalog update next week. The Quote resource is the binding offer that makes the agreed terms durable, from a seller's Pending offer through order creation, renegotiation, and acceptance recording.

The Quote as a binding offer

The seller issues a Quote from a Staged Quote. It is the formal, binding offer presented to the buyer, and it tracks the buyer's response through its states:

Use QuoteState as the canonical state reference. For architecture decisions, Pending is the actionable offer: the buyer can create an Order from it, decline it, or request renegotiation. Renegotiation moves the current offer out of the active path until the seller issues a new Quote, while a withdrawn or declined Quote ends that offer.
From a Pending Quote, the buyer can create an Order and record acceptance, decline, or request renegotiation, each governed by an Associate permission such as CreateMyOrdersFromMyQuotes, DeclineMyQuotes, or RenegotiateMyQuotes.

How price locking works

The Quote flow exists because a negotiated offer needs price locking, not only a discounted Cart. When the seller issues the Quote, the negotiated amounts are captured on the Quote itself. To turn the offer into an Order, the buyer creates the Order from a valid Pending Quote. If the request sets quoteStateToAccepted: true, order creation also records the Quote as Accepted. The Order uses the Quote's prices, not whatever the catalog says at order time.
This decouples the agreed deal from the live Price architecture you built in Configure B2B pricing. A Standalone Price change, a new Customer Group rate, or an expired validity period does not alter an already-agreed Quote. The negotiation result is a snapshot, insulated from the price-selection logic that would otherwise re-resolve at order time.

The renegotiation loop

B2B negotiation is rarely one round. If the buyer is close but not satisfied, they do not decline outright; they request renegotiation.

POST /{projectKey}/as-associate/{associateId}/in-business-unit/key=atlas-apac/quotes/{quoteId} HTTP/1.1
Content-Type: application/json

{
  "version": 3,
  "actions": [
    {
      "action": "requestQuoteRenegotiation",
      "buyerComment": "Close, but we need the unit price held for a 12-month term."
    }
  ]
}
This moves the Quote to DeclinedForRenegotiation. The seller reopens the Staged Quote, adjusts the quotationCart, and issues a new Quote; the original moves to RenegotiationAddressed. The loop repeats until the buyer accepts or declines for good. Only a Pending Quote can be renegotiated, so each round operates on the current offer, not a superseded one.
Because the seller issues a fresh Quote each round, every round keeps its own record. Each Quote carries the sellerComment that accompanied that offer and the buyerComment from the renegotiation request that prompted it, so the series of Quotes is a durable, round-by-round history of the negotiation. The Staged Quote's own sellerComment, by contrast, is mutable and always reflects only the seller's latest edit, so it is the working draft rather than the historical record.

From Pending Quote to Order

To accept the offer and place the order in one step, create the Order from the valid Pending Quote and set quoteStateToAccepted: true. The Order inherits the locked prices and the purchaseOrderNumber carried through the flow.
POST /{projectKey}/as-associate/{associateId}/in-business-unit/key=atlas-apac/orders/quotes HTTP/1.1
Content-Type: application/json

{
  "quote": { "typeId": "quote", "id": "{quoteId}" },
  "version": 5,
  "quoteStateToAccepted": true
}
Creating an Order from a Quote requires a permission such as CreateMyOrdersFromMyQuotes. For repeat purchasing on already-negotiated terms, the Order or its originating Cart can be replicated to seed a new basket, reusing the negotiated outcome as the starting point.

Worked example: an Order created after a catalog price rise

Atlas Corporate negotiates 500 units of ZET-MON-27. Trace what happens to the price:
  1. Negotiation. The seller issues a Quote with a negotiated unit price of AUD 240, captured on the Quote. The Quote is Pending.
  2. Catalog moves. Before Atlas responds, Zen Electron Trade raises the atlas-apac-pricing Channel Standalone Price for ZET-MON-27 to AUD 265. Live price selection would now resolve AUD 265.
  3. Order creation. Atlas creates the Order from the still-Pending Quote and sets quoteStateToAccepted: true. Because order creation uses the Quote's captured amounts, the agreed AUD 240 holds and the Quote records acceptance.
  4. Locked result. Every unit is ordered at AUD 240, not the new AUD 265, because the Order takes the Quote's locked prices rather than re-resolving against the catalog.
Had Atlas instead wanted the newer terms, they would have requested renegotiation while the Quote was still Pending, and the seller would have issued a fresh Quote. The lock protects whichever offer the buyer actually accepts.

Key takeaways

  • A Quote is a binding offer with states Pending, Accepted, Declined, DeclinedForRenegotiation, RenegotiationAddressed, and Withdrawn.
  • Creating an Order from a valid Pending Quote uses the Quote's negotiated prices; setting quoteStateToAccepted: true records acceptance during order creation.
  • Renegotiation moves a Quote to DeclinedForRenegotiation; the seller issues a new Quote and the original becomes RenegotiationAddressed. Only Pending Quotes can be renegotiated.
  • Each Quote round preserves its own sellerComment and buyerComment, giving a durable history of the negotiation; the Staged Quote's sellerComment is mutable and holds only the latest edit.
  • The buyer creates the Order from a valid Pending Quote with a permission such as CreateMyOrdersFromMyQuotes; the Order inherits the locked prices and the purchase order number.

Test your knowledge