---
title: "B2B quotes and RFQ: how quote-to-order works"
description: "How B2B quotes and RFQ work in Medusa: request, merchant counter-offer, accept or reject, and conversion to an order, compared with Adobe and Oro."
url: https://medusajs.com/kb/b2b/b2b-quotes-rfq
last_updated: 2026-10-29T06:55:50Z
topic: "b2b"
type: "concept"
applies_to: "Medusa v2.x"
related:
  - "https://medusajs.com/kb/b2b/b2b-ecommerce-platform.md"
  - "https://medusajs.com/kb/b2b/b2b-company-accounts-approvals.md"
  - "https://medusajs.com/kb/b2b/b2b-customer-specific-pricing.md"
sources:
  - "https://docs.medusajs.com/resources/examples/guides/quote-management"
  - "https://github.com/medusajs/b2b-starter"
  - "https://docs.medusajs.com/resources/commerce-modules/order/order-change"
  - "https://docs.medusajs.com/user-guide/orders/draft-orders"
  - "https://github.com/medusajs/examples/tree/main/quotes-management"
  - "https://experienceleague.adobe.com/en/docs/commerce-admin/b2b/quotes/quotes"
  - "https://doc.oroinc.com/user/storefront/"
  - "https://doc.oroinc.com/user/back-office/sales/rfq/"
  - "https://doc.oroinc.com/user/back-office/sales/quotes/flows/"
---

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

> 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](https://github.com/medusajs/b2b-starter) includes a Quote module, and the [quote management guide](https://docs.medusajs.com/resources/examples/guides/quote-management) 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](https://docs.medusajs.com/resources/commerce-modules/order/order-change). 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 `createRequestForQuoteWorkflow` creates a draft order from the cart, begins an order edit on it, and creates a quote with status `pending_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 (`pending_customer`) or rejects it (`merchant_rejected`).
4. **Review.** The customer previews the order with the staged changes, then accepts or rejects it (`customer_rejected`).
5. **Order.** On acceptance, the workflow confirms the order change and converts the draft order into a regular order with status `pending`.

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

| Status | Meaning |
| --- | --- |
| pending_merchant | The customer requested a quote. The merchant has not responded. |
| pending_customer | The merchant sent a quote. The customer has not responded. |
| accepted | The customer accepted. The draft order is now an order. |
| merchant_rejected | The merchant declined the request. |
| customer_rejected | The 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 get | B2B Starter | Quote management guide |
| --- | --- | --- |
| Quote module, workflows, API routes | Yes | Yes |
| Medusa Admin quote pages | Yes | Yes |
| Quote messages | Yes | No, see the starter |
| Storefront UI | Yes, Next.js | No, Store API routes only |

## How Medusa quotes compare with Adobe Commerce and OroCommerce

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

| Aspect | Medusa (Starter, Official guide) | Adobe Commerce negotiable quotes | OroCommerce RFQ and quotes |
| --- | --- | --- | --- |
| Who starts a quote | Logged-in customer, from the cart | Buyer from the cart, or seller in Admin | Customer in the storefront, guests optional |
| Seller counter-offer | Edit prices and quantities, then send | Discounts, quantity and item changes, comments | Sales rep creates a quote from the RFQ |
| Buyer edits | Accept or reject in the guide | Change quantities, remove items, add notes | Check vendor docs |
| Expiry | Custom | Expired status | Quote can be expired |
| Quote approvals | Custom | Check vendor docs | Quote 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.

## Documentation

- [Implement Quote Management in Medusa](https://docs.medusajs.com/resources/examples/guides/quote-management)
- [Order Change](https://docs.medusajs.com/resources/commerce-modules/order/order-change)
- [Draft Orders in Medusa Admin](https://docs.medusajs.com/user-guide/orders/draft-orders)

## Related

- [B2B ecommerce platform with quotes, company accounts and approval flows](https://medusajs.com/kb/b2b/b2b-ecommerce-platform.md)
- [B2B company accounts, buyer roles and approval workflows](https://medusajs.com/kb/b2b/b2b-company-accounts-approvals.md)
- [How to build a B2B store with custom pricing per customer](https://medusajs.com/kb/b2b/b2b-customer-specific-pricing.md)
