Skip to main content

Quotes and quotations

A quote is a priced offer in the quote store. A quotation is the order engine's record that a customer is considering that quote for a trip. The two work together: the quote store owns the price, the order engine owns the journey.

Quotes​

StepCallResult
Price and savePOST /quote-store/quotesA quote with a reference, status open, priced lines and totals, validUntil and retainUntil.
Retrieve (any allowed channel)GET /quote-store/quotes/{reference}?channel=The quote as that channel may see it; trade channels also see trade amounts.
RevalidatePOST /quote-store/quotes/{reference}/revalidateThe differences between the saved and the current price, with a differencesHash.
AcceptPOST /quote-store/quotes/{reference}/acceptThe quote becomes accepted and its commercial conditions are frozen into a handover with an integrity hash. If revalidation found differences, accept requires acknowledged_differences_hash.
Read frozen conditionsGET /quote-store/quotes/{reference}/frozen-conditionsThe frozen-conditions document the order engine converts from.

Quote store field names are snake_case. A quote saved on one channel can be retrieved and accepted on another channel the tenant allows, which is how a quote started on the web is resumed in the contact centre.

Price integrity​

The frozen-conditions document carries the accepted lines, amounts, promotions (with their post-booking policy: keep, recalculate or lose) and the configuration and price-store versions they were priced with. Always read it from GET …/frozen-conditions and pass it unchanged to the order engine; do not build it on the client.

A tenant can require the order engine to verify it (verify_frozen_conditions): conversion and handover then compare every line amount, quantity, product code and the total with the accepted quote, and refuse a difference with 409 frozen_conditions_mismatch. A channel cannot book below the accepted price.

Quotations​

StepCallNotes
CreatePOST /order-orchestration/quotationsOpens a trip in status quotation (or attaches to tripId). The channel must be in the orchestration configuration, and the fields the configuration requires for that channel must be present (for example agencyRef on the agency channel).
Add an alternativePOST /order-orchestration/quotations with the same intentIdEach alternative has its own trip until one converts.
ResumeGET /order-orchestration/quotations/{ref}?customerRef= or ?actorRef=Only the creator: the matching customerRef, or the actorRef that created it. Anyone else gets 403 not_creator. Returns the alternatives too.
ConvertPOST /order-orchestration/quotations/{ref}/convertCreates the booked purchase order from the frozen conditions. The quotation becomes converted; open alternatives become superseded and their empty trips are closed.
ReportGET /order-orchestration/quotations/reportVolume, conversions and ageing by market, channel and product.

Statuses​

StatusMeaning
openSaved and resumable.
convertedConverted into a purchase order; conversion records the order, when and by whom.
supersededAnother alternative of the same intent was converted.
expiredReserved. Quotations are not expired automatically today; quotations.inactivity_days in the configuration only affects reporting.

Who created it​

createdBy records the creator: { actorRef, kind } with kind customer, agent or agency. For an advisor quotation, set kind: agency and agencyRef; conversion carries agencyRef into the purchase order's attribution.agencyRef, which is where commission and agency reporting read it.

See the end-to-end example and the reference for Quotes and Quotations.