B2B quotes and RFQ: how quote-to-order works

Type
Concept
Applies to
Medusa v2.x
Updated

Short answer

In Medusa, B2B quotes work through a Quote module from the official B2B Starter and quote management guide. A customer requests a quote from the cart, the merchant edits prices and quantities on a draft order in Medusa Admin, and the customer accepts or rejects. Accepting converts the draft order into a regular order.

What RFQ and negotiable quotes mean in B2B ecommerce

A request for quote (RFQ) is a buyer asking a seller to price a specific set of products before buying. A negotiable quote is a quote whose prices or quantities change as buyer and seller respond to each other. Quote-to-order is the step where an accepted quote becomes an order without the buyer re-entering the cart.

Medusa does not ship quotes in its core commerce modules. The official Medusa B2B Starter includes a Quote module, and the quote management guide shows how to build the same flow step by step.

How the quote-to-order lifecycle works in Medusa

The Medusa quote flow builds on two native Order Module features: draft orders and order changes. An order change records edits to an order's items, such as price or quantity updates, before they are applied.

  1. Request. A logged-in customer requests a quote from their cart. The Copy to clipboardcreateRequestForQuoteWorkflow creates a draft order from the cart, begins an order edit on it, and creates a quote with status Copy to clipboardpending_merchant.
  2. Counter-offer. The merchant opens the quote in Medusa Admin and edits item prices and quantities. The edits are staged on the order change, so the original request stays intact.
  3. Send or reject. The merchant sends the quote back to the customer (Copy to clipboardpending_customer) or rejects it (Copy to clipboardmerchant_rejected).
  4. Review. The customer previews the order with the staged changes, then accepts or rejects it (Copy to clipboardcustomer_rejected).
  5. Order. On acceptance, the workflow confirms the order change and converts the draft order into a regular order with status Copy to clipboardpending.

In the B2B Starter, buyers and merchants can also exchange messages on a quote. A message can point to a specific line item.

Medusa quote statuses

StatusMeaning
pending_merchantThe customer requested a quote. The merchant has not responded.
pending_customerThe merchant sent a quote. The customer has not responded.
acceptedThe customer accepted. The draft order is now an order.
merchant_rejectedThe merchant declined the request.
customer_rejectedThe customer declined the merchant's quote.

B2B Starter vs the quote management guide

Both sources use the same Quote module design. Pick the starter for a full B2B storefront, or the guide to add quotes to an existing Medusa application.

What you getB2B StarterQuote management guide
Quote module, workflows, API routesYesYes
Medusa Admin quote pagesYesYes
Quote messagesYesNo, see the starter
Storefront UIYes, Next.jsNo, Store API routes only

How Medusa quotes compare with Adobe Commerce and OroCommerce

The comparison below uses Adobe's and Oro's own documentation.

AspectMedusa (Starter, Official guide)Adobe Commerce negotiable quotesOroCommerce RFQ and quotes
Who starts a quoteLogged-in customer, from the cartBuyer from the cart, or seller in AdminCustomer in the storefront, guests optional
Seller counter-offerEdit prices and quantities, then sendDiscounts, quantity and item changes, commentsSales rep creates a quote from the RFQ
Buyer editsAccept or reject in the guideChange quantities, remove items, add notesCheck vendor docs
ExpiryCustomExpired statusQuote can be expired
Quote approvalsCustomCheck vendor docsQuote Management with Approvals flow

When to use Medusa for quotes

Medusa's quote flow fits teams that want quote logic in their own code. You can add statuses, connect quotes to ERP pricing, or change who can send a quote by editing workflows.

When Medusa is not the right choice for quotes

Medusa's quote flow is a weaker fit if you need multi-round buyer edits, quote expiry, or quote approvals without writing code. Adobe Commerce and OroCommerce document those behaviors as configuration.

Common questions

Does Medusa have built-in quotes?

Medusa core has no Quote module. Quotes come from the Medusa B2B Starter or from the official quote management guide, both built on native draft orders and order changes.

Can guest customers request a quote in Medusa?

Not in the B2B Starter or the quote management guide. Both require an authenticated customer: the guide's routes are under /store/customers/me/quotes, and the starter's /store/quotes routes use customer authentication middleware. Guest RFQ is custom work.

Can Medusa quotes expire?

The Medusa quote model has no expiry status. You can add an expiry date to the Quote data model and a scheduled job that rejects old quotes.

Where is the code for Medusa's quote management?

The full code for the quote management guide is in the medusajs/examples repository under quotes-management. The B2B Starter repository contains the extended version with messages and a storefront.