Request a Quote for Magento 2

Trade and bulk buyers ask for a price from the product page or the cart, you reply with a proposal from the admin, and the agreed prices go into their cart, locked. Quick order and hidden prices included. Hyvä and Luma. One-off payment, no subscription.

  • Magento 2.4.6 – 2.4.9
  • PHP 8.2 – 8.5
  • Hyvä and Luma
  • Version 2.0.6
$229

One-off payment, with 12 months of updates.

What is included

  • Install with Composer, or download a zip from your account
  • Licence for one production domain, staging and development copies included

No subscription or automatic renewal. Keep using the versions included in your update period. Update and licence details

Key features

  • "Add to Quote" on product pages, lists and the cart
  • Guests and chosen customer groups
  • Admin proposals with per-line prices and a valid-until date
See all features

Composer package commercegears/module-request-quote

Request a Quote lets trade and bulk buyers ask for a price on the quantities they need without leaving your Magento 2 store. You reply with a proposal from the admin, and when the customer accepts it, every line goes into their cart at the agreed price and quantity. Quick Order (order by SKU) and Hide Price are included in the same module.

How it works

  1. The customer asks for a price. "Add to Quote" sits next to "Add to Cart" on the product page (optionally on category and search lists too), and "Request a Quote for This Cart" turns the cart into a request. Chosen options such as size and colour are kept. Guests can ask too, unless you limit quotes to chosen customer groups.
  2. You send a proposal. In the admin you change quantities, enter a price per line or a discount on all lines, set the valid-until date (14 days by default) and write to the customer. Internal notes and the full history stay with the request.
  3. The customer accepts in one click. From My Account, or from the personal link in the e-mail for guests. The lines go into the cart at the agreed price and quantity, and they check out with your usual payment and shipping methods. The order is linked back to the request.

Agreed prices stay agreed

  • The quantity and price of a quoted line cannot be changed in the cart, the mini cart, REST or GraphQL, and only one cart line per quoted line gets the agreed price.
  • Cart price rules do not discount quoted lines again.
  • The price only applies while the proposal is accepted and valid. After the valid-until date the request expires and the line falls back to the normal price. You can reopen it with a new proposal.

Quick Order and hidden prices

  • Quick Order at /quickorder: SKUs with suggestions as the customer types, a pasted list or a CSV file of up to 200 rows. "Check" shows stock, price and missing options before the products go into the cart or a quote.
  • Hide Price (off until you switch it on): hide prices and "Add to Cart" for chosen customer groups, for all products or only for chosen products and categories, with a "Request a Quote" button instead. Hidden products cannot be added to the cart on the server either, including REST and GraphQL.

Who it is for

Shops that sell to businesses, schools, clubs and other bulk buyers, where the price depends on the quantity or the customer. Shops that want to show prices to trade customers only can use Hide Price on its own.

Good to know: each request belongs to one customer or guest; there are no company accounts or approval rules. The admin cannot add new products to a request (quantities and prices can be changed and lines removed), and quote requests have no file attachments.

Compatibility and demo

Magento Open Source or Adobe Commerce 2.4.6 – 2.4.9, PHP 8.2 – 8.5, Hyvä and Luma (on Hyvä the checkout uses the Luma checkout fallback). One-off payment, no subscription. Try it in the live demo: the Luma storefront, the Hyvä storefront and the admin. A guided tour signs you in as a trade customer with a proposal waiting, so you can accept it and see the agreed prices in the cart.

  • Win bulk and trade orders

    Schools, clubs and businesses ask for a price on the quantities they need instead of leaving the shop to send an email.

  • The agreed price, in the cart

    Accepting a proposal adds every line at the agreed price and quantity. Customers check out as usual; the order links back to the quote.

  • Prices that cannot be bent

    Quantities and prices of quoted lines are checked again before every totals run, in the cart, REST and GraphQL, and stop applying when the quote expires.

All features

What is included

Storefront

  • "Add to Quote" on the product page, optionally on category and search lists
  • "Request a Quote for This Cart" moves the cart lines into a quote
  • Quote basket with quantities, contact details and a comment
  • Header link with the number of products in the quote
  • Luma and Hyvä templates included

Proposals and workflow

  • Proposed unit price per line or a discount on all lines
  • Valid-until date, 14 days by default
  • Messages both ways and internal notes
  • Statuses: New, Proposal Sent, Accepted, Ordered, Rejected, Expired, Cancelled
  • Reopen a closed request with a new proposal

Cart and order

  • Accepted lines added at the agreed price and quantity
  • Quote reference on the cart line, order and emails
  • No further cart price rule discounts on quoted lines
  • Request marked Ordered and linked to the order
  • Dynamic bundles supported

Quick order and hidden prices

  • Quick order page with SKU suggestions, pasted lists and CSV upload
  • Stock, price and option check before adding
  • Hide prices and "Add to Cart" for chosen customer groups
  • All products, or flagged products and chosen categories
  • Hidden products blocked from the cart on the server, REST and GraphQL included

Feature tour

Everything your shoppers and your team see

01 / 06

"Add to Quote" next to "Add to Cart"

Works for every product type the cart supports and keeps the chosen options and quantity. Optional on category and search lists, and "Request a Quote for This Cart" in the shopping cart.

02 / 06

Check the quantities, add a comment, send

The quote basket shows the catalogue prices for reference. Guests give their name and email address and get a personal link to follow the request. Shown here on Hyvä.

03 / 06

Price every line, then send the proposal

Change quantities, enter proposed unit prices or a discount on all lines, set the valid-until date and write to the customer. Internal notes stay in the admin.

04 / 06

Accept and add to cart in one click

Customers see the proposed prices and the valid-until date under My Quote Requests. They accept, reject or send a message; guests do the same from their emailed link.

05 / 06

Every request and its status at a glance

Colour status badges, proposed totals, valid-until dates and linked orders. Search by reference, name, email address or company.

06 / 06

Order by SKU, on any screen

Type SKUs with suggestions, paste a list or upload a CSV file. "Check" shows stock, prices and missing options before the products go into the cart or a quote.

Live demo

Try it before you install it

A full Magento store with the module installed, on Luma and on Hyvä. The admin demo signs you in with one click.

Compatibility

Requirements and compatibility

Compatibility of Request a Quote
Magento2.4.6 – 2.4.9
PlatformsMagento Open Source and Adobe Commerce (one price)
Storefront themes Luma Blank Hyvä
PHP8.2 – 8.5
Latest version 2.0.6
composer.json requires php ~8.2.0||~8.3.0||~8.4.0||~8.5.0 magento/framework ~103.0.6 commercegears/module-core ^2.0 free, installed by Composer with this module magento/module-backend * magento/module-catalog * magento/module-checkout * magento/module-config * magento/module-configurable-product * magento/module-customer * magento/module-directory * magento/module-eav * magento/module-email * magento/module-quote * magento/module-sales * magento/module-sales-rule * magento/module-store * magento/module-ui *

Installation

Up and running in minutes

After you buy, create a Composer key in your account. Then, in the root of your Magento project:

  1. 01Add the repository and your key (once per project)

    composer config repositories.commercegears composer https://repo.commercegears.com
    composer config --auth http-basic.repo.commercegears.com PUBLIC_KEY PRIVATE_KEY
  2. 02Install the module

    composer require commercegears/module-request-quote
  3. 03Enable it

    bin/magento setup:upgrade
    bin/magento setup:di:compile
    bin/magento setup:static-content:deploy
    bin/magento cache:flush

    The last three are only needed in production mode.

Prefer a zip? Every version you are entitled to can be downloaded from My modules. More about Composer access

User guide

Setting up Request a Quote

The user guide has its own page: how to install Request a Quote, what each option does and how to use it in your store. Written for version 2.0.6; a copy ships with the module.

In the guide

Read the user guide

Changelog

Release notes

2.0.6

Latest
  • Fix: messages to the store from a quote page are limited to 20 per visitor an hour (no e-mail floods).

2.0.5

  • Improvement: the command that created an example request for our demo store is no longer included.

2.0.4

  • Fix: customers can ask for more than is in stock of a size, colour or bundle item, as with simple products.
  • Fix: the Luma header no longer shows "Quote Request (0)" while the quote basket is empty.
  • Improvement: when stock is short on accepting a proposal, the message names the product.
  • Improvement: FAQ on asking for more than is in stock.

2.0.3

  • Fix: on Hyvä product pages "Add to Cart" and "Add to Quote" no longer wrap onto two lines.
  • Improvement: quick order has a styled file upload and compact one-line rows on phones.
  • New: German translation.

2.0.2

  • Improvement: compatible with Magento 2.4.6 (PHP 8.2).

2.0.1

  • Improvement: user guide screenshots and links updated for the CommerceGears name

2.0.0

  • Improvement: renamed to CommerceGears (new Composer package, admin menu and settings paths)

FAQ

Questions, answered

Something else on your mind? The developers who wrote the module answer before and after you buy.

Ask a question →

Already installed it? Open a support ticket

Can guests request a quote?

Yes, unless you limit quote requests to chosen customer groups. Guests give their name and email address in the quote basket. They get a personal link by email to see the proposal, accept it, reject it or reply. Every email carries a new link; earlier links keep working, and each link is valid for 90 days.

Which products can be added to a quote?

Every product type the cart supports, with the options the customer chose on the product page (sizes, colours, bundle selections). Products with a file upload option cannot be quoted; those show a message instead.

Can customers ask for more than is in stock?

Yes. Trade customers often ask for larger quantities than you hold, so a quote request is not limited by stock, for simple products as well as sizes, colours and bundle items. Stock is checked when the customer accepts the proposal; if it is still short then, they see a message and you can send a new proposal with other quantities.

How does the customer pay the agreed price?

When the customer accepts the proposal, every line goes into the cart with the agreed unit price and quantity. They check out as usual with any payment and shipping method. When the order is placed the request becomes "Ordered", is linked to the order, and the order gets an internal comment with the quote reference.

Can the customer change the quantity or get the agreed price twice?

No. The quantity of a quoted line is set back before every totals calculation (cart, mini cart, REST and GraphQL) with a notice in the cart, and only one cart line per quote line gets the agreed price. The same product added normally is a separate line at the normal price. Removing quoted lines is allowed.

Do cart price rules give an extra discount on quoted lines?

No. Lines with agreed prices are not discounted further by cart price rules. Other lines in the same cart are discounted as usual.

What happens when a proposal expires?

Every proposal has a valid-until date (14 days by default, changeable per request). After that date an hourly cron job sets the request to "Expired", it can no longer be accepted, and quoted lines still in a cart fall back to the normal price. You can reopen the request with a new proposal.

Can I reject a request after the customer has accepted it?

No. An accepted quote is an agreement, so the store can only send a new proposal. The customer can still withdraw it (Reject Proposal) until they order. The store can reject New and Proposal Sent requests.

Can I add products to a request in the admin?

Not in this version. You can change quantities and prices and remove lines. The customer can send a new request with other products.

What is Quick Order?

A page at /quickorder where customers enter SKUs and quantities (with suggestions as they type), paste a list or upload a CSV file of up to 200 rows. "Check" shows stock, price and missing options for each row, then the products go into the cart or a quote request. You can limit it to customer groups or switch it off.

Can I hide prices for guests?

Yes, with Hide Prices (off by default). For the customer groups you choose, prices and "Add to Cart" are hidden on lists, product pages, widgets, compare and the wish list, and a text such as "Log in to see prices" appears instead, with a "Request a Quote" button where that group may request quotes. Adding those products to the cart is blocked on the server too, including REST and GraphQL. You can hide prices for all products or only for chosen products and categories.

Does it work with Hyvä?

Yes. Hyvä templates are included for the product page, lists, cart button, quote basket, My Quote Requests and Quick Order. The checkout on Hyvä uses the Luma checkout fallback.

Does it conflict with Adobe Commerce B2B Negotiable Quotes?

The module uses its own tables and names (commercegears_rfq_*), so both can be installed. Running two quote workflows side by side is rarely useful, though.

Which emails are sent?

To the store: new request, and the customer accepted, rejected, cancelled or replied. To the customer: request received, and proposal, message or rejection from the store. All four templates can be replaced under Marketing > Email Templates, per store view.

Support

Help from the developers who wrote it

From the blog

Guides and articles