Cart-to-Quote for WooCommerce

Convert a WooCommerce cart into a quote at the checkout. Great for large orders and unusual shipping. Includes an optional Purchase Order payment gateway too.

Licences for this plugin need to be renewed annually.

(1 customer review)
SKU: N/A Category: Current: 1.5.1
Flag for en_USFlag for de_DEFlag for en_GBFlag for es_ESFlag for fr_FRFlag for it_ITFlag for nl_NL
money-back guarantee sticker

100% No-Risk, Money Back Guarantee!

We're excited to have you experience the power of our plugins. So over the next 14 days, if any Power Plugins aren’t the best fit for your project, simply reach out! We’ll happily refund 100% of your money. No questions asked.

About Cart to Quote for WooCommerce

This plugin makes it easier to convert carts that don’t resolve to any valid shipping methods. It also allows you to turn any cart into a quote regardless of the shipping conditions. These two methods are illustrated below. The plugin also allows for Purchase Order numbers to be entered (as a payment gateway).

Convert a WooCommerce cart into a quote at the checkout when there are no shipping methods available.
Convert a WooCommerce cart into a quote at the checkout when shipping methods are available.

In summary

  • When no shipping methods are available, customers can convert their basket into a quote. You (the Store Owner) can review the quote, adjust/add shipping and then set it to “Pending Payment”. The customer can pay for their quote while still it’s valid (e.g. 30 days).
  • Optionally, add a “Convert cart into a quote” button for cart that can already be shipped (optional).
  • Create manual, custom quotes on behalf of a customer.
  • Let your customers to pay by Purchase Order (payment gateway) – optional and configurable
Request a bespoke quote for large WooCommerce orders
An example large order
WooCommerce orders pending quote and payment
Quotes and orders at different stages

By default, the “Request a Bespoke Quote” button is visible at the checkout when no shipping methods are available (so no payment methods are available). This is a great way to capture high-value and unusual orders.

You can also add a button that lets any customer request a quote at the checkout. Great when you want to capture orders from large companies who need a quote before they can raise a Purchase Order.

All quotes are stored as regular WooCommerce orders, with their Order Status set to “Pending Quote“. When you change an order from “Pending Quote” to “Pending Payment”, the customer is sent an email saying their quote is ready for payment.

And there’s more…

Although we like to do one thing and do it well, we’ve also included a Purchase Order payment gateway, as the functional requirements for both features are closely aligned.

InformationGot a question about how the plugins works? Send us an email

Request a Bespoke Quote

The main cart-to-quote feature works straight out of the box, but you should review the plugin’s settings to see if anything needs tweaking for your shop’s workflow.

When you’ve installed the plugin, go to WooCommerce > Settings and click the “Cart to Quote” tab.

The main setting of note is the option to use quotes for all orders. By default this option is unchecked, which means the “Request a Bespoke Quote” button will only be visible if an order can’t be shipped (and therefore can’t be paid for). If you check this option, every user will go through the quote stage at the checkout.

The other options you should review are the email notifications. You’ll probably want to enter your store administrator’s email address for the “New Quote Created” setting, otherwise you won’t receive email notifications for new quotes.

Settings for creating quotes form the checkout in WooCommerce
Settings for converting a WooCommerce cart into a bespoke quote

Let Any User Request a Quote

If you enable the option to let any customer convert their cart to a quote, you’ll see a new button beneath the Place Order button at the checkout.

Important Customers need to be able to create accounts before they can convert their cart into a quote, because the quote will reside in their My Account page while it is pending review/payment.

Cart-to-quote button on a WooCommerce checkout
Let any user request a quote

WooCommerce My Account Page

Quotes are stored as regular WooCommerce orders, but with a new order-status of “Pending Quote”. This means that the quote is not yet available to be paid, usually because the store admin needs to calculate shipping, or apply a customer-specific price adjustment.

WooCommerce My Orers and Quotes
WooCommerce My Account orders and quotes

When an order has been moved from “Pending Quote” to “Pending Payment”, the customer is able to pay for it.

There’s also a neat feature that lets the customer email the quote to an external address (i.e. their accounts department) and attach a note to the order. This is great when the person who has requested the quote needs to get an internal Purchase Order raised.

Send a WooCommerce quote to an external email address
Send quote to external party

Manually Created Quotes

Quite often you might find that you want to create a quote on behalf of a customer. Thankfully, Cart to Quote makes that process is easy!

Simply do the following steps:

  1. Firstly, make sure you have the ‘Some Users can create Quotes for other customers’ option selected in WooCommerce > Settings > Cart to Quote. Make sure to add the users roles you want to have this capability.
    Cart to quote create a quote on behalf of a customer settings
  2. Go to the website frontend and add the products in question to your cart.
  3. Proceed to Checkout.
  4. At the top of the Checkout page you’ll see this panel (only visible to the user roles selected in step 1):
    Creating a quote on behalf of a customer in WooCommerce
  5. Now, either search for an existing customer or click on ‘Create a new customer’.
  6. Click ‘Create the quote now’.

A quote will now be generated in the usual fashion ready for adjustment, approval, or completion.

Purchase Orders

Enabling the Purchase Order payment gateway is a two-stage process. If you’re using another Purchase Order payment gateway plugin, you don’t need to take any action – this plugin won’t interfere with it.

One: Make the PO Payment Gateway available to WooCommerce

In the back-end of your website, Go to WooCommerce > Settings and select the “Cart to Quote” tab. Enable the Payment Gateway option and then save the options:

Enable the pourchase order payment gateway
Enable the Purchase Order payment gateway

Two: Activate the Payment Gateway

In the back-end of your website, Go to WooCommerce > Settings and select the “Payments” tab. Locate the “Purchase Order” payment gateway and enable it.

Activate the pourchase order payment gateway
Activate the Purchase Order payment gateway in WooCommerce

Restricting Access to the Purchase Order Payment Gateway

A common requirement is to only make the PO payment gateway available to some customers by their account role. You can add the following code snippet to your child theme’s functions.php, or use a code-snippets plugin.

 * If a user is not in the "trade_customer" role, remove Purchase Order from
 * the list of available payment gateways.
function conditional_po_gateway($gateways) {
	if (is_admin()) {
		// If we're in the back-end of the website, don't make any changes.
	} elseif (current_user_can('administrator')) {
		// If the user is an administrator, don't make any changes.
	} elseif (!empty($user = wp_get_current_user()) && in_array('trade_customer', $user->roles)) {
		// If the user is a "trade_customer", don't make any changes.
	} else {
		// Remove the PO payment gateway.

	return $gateways;
add_filter('woocommerce_available_payment_gateways', 'conditional_po_gateway', 10, 1);

Actions & Filter Hooks

filter : bool
$is_cto_forcedSet to true to force the checkout to remove all shipping methods and show the Request a Bespoke Quote” button. Return false to let the plugin make its own decision as to whether or not to show the button.
filter : string
$response_textShort text message that’s shown to the customer after their cart has been converted into a quote.
filter : string (URL)
$response_urlThe URL to redirect customers to after their quote has been created. The default is to redirect logged-in users to their My Account area.
filter : bool
$are_emails_enabledReturn false if you want to prevent the system sending emails to the customer and site-admin when a new quote is created.
filter : string
$labelThe text to show on the checkout button. Default is “Request a Bespoke Quote”
filter : string
$subjectSubject for the customer-facing email stating that the store has received their request for a quote.
filter : string
$subjectSubject for the customer-facing email stating that their quote is ready.
Hooks you can override with the Purchase Orders and Cart-to-Quote plugin

Conditional Force Cart-to-Quote

If you want to force guests (non-logged-in users) to go through a quote stage, but let logged-in customers pay with your usual gateways, you can do something like this:

 * Guests are forced to go through the quote stage, but logged-in users can use
 * any available payment gateway.
function force_guests_to_use_quote_stage($is_cto_forced) {
	if (is_admin()) {
		// Don't make any changes if we're in the back-end of the website.
	} elseif (is_user_logged_in()) {
		// Don't make any changes if the user is logged-in to the site.
	} else {
		// Non logged-in users are forced to go through the quote stage.
		$is_cto_forced = true;

	return $is_cto_forced;
add_filter('cto_is_cart_to_quote_forced', 'force_guests_to_use_quote_stage', 10, 1);

ImportantYou should disable the “User for all orders” option in the settings page before using this snippet.

Changelog: Cart to Quote

Version 1.5.1

Released: 2023-01-16

Minor update to the core Power Plugins support library.

Version 1.5.0

Released: 2022-12-14

  • New feature. Allow some users (e.g. Store Managers) to create quotes for other customers at the checkout. Add items into your cart, go to the checkout and search for an existing customer... or enter your own billing/shipping details and save the quote against your own account. Great when you've got a sales team who want to create quotes for their clients.
  • Updated Dutch 🇳🇱 translations (machine-translated)

Version 1.4.1

Released: 2022-11-29

Minor update to fix an edge-case issue similar to that in release 1.4.0. In some cases, a quote that transitioned straight to "pending payment" status wasn't picking up the shipping address. This only affected sites that had custom JavaScript running on the checkout page.

Older releases

  • New feature : Send out reminder emails before a quote expires. note By default, this feature is not enabled. Go to your WooCommerce Settings > Cart-to-Quote and configure how many days before reminder emails are sent.
  • Fix: There was an edge case that caused the billing and shipping addresses to be blank on new quotes - if there was custom JavaScript in the checkout. This has been resolved.

Fixed a bug with the new automatic quote-to-pending-payment function. If a customer requests a bespoke shipping quote, we need to bypass the automatic jump-to-pending-payment so the store owner can adjust the quote before it is ready for payment.

  • New option to move new quotes straight to the Pending Payment stage, if all the packages can be shipped.
  • New option so customers can send their quotes to a third party, right from their My Account / Orders page. Useful when the customer needs to send a quote to their accounts department to get a PO reference.
  • Added version one of the es_ES translations (machine-translated).
  • Added version one of the it_IT translations (machine-translated).
  • Added version one of the fr_FR translations (machine-translated)
  • Tidied up the emails sent to administrators when new quotes are made and paid for
  • Added version one of de-DE customer-facing translations (machine-translated).
  • Tidied up the customer email templates and added comment-headers to them.
  • Moved public-templates/cart/convert-cart-to-quote-button.php to public-templates/checkout/convert-cart-to-quote-button.php
  • New feature. Enable a button at the checkout so users can request a quote, even if the Pay Now button is available. Configurable and hookable.
  • Added Dutch translations to customer-facing strings

Minor update. Prevent the Mini WP GDPR plugin from enforcing GDPR/Terms acceptance when creating a new user (while creating a quote) at the checkout.

  • Replaced internal template functions with calls to the standard wc_get_template()
  • Tidied some bits-and-bobs. Removed some old/unused code.

Initial public release on Power Plugins.

  • New Feature: Allow certain user roles to convert their cart into a quote at the checkout, for other users. Great for when a shop manager needs to create a quote for a client, and it's easier to use the front end of the website to put together the order. When it gets converted to a quote, you can adjust the order before notifying the customer (adjust the shipping, apply discounts, etc.
  • Partial implementation of the new Purchase Order Payment gateway - to be extended in the next release.
  • Added support for new filters and hooks to better-control special situations in the checkout.
  • Initial release.

1 review for Cart-to-Quote for WooCommerce

  1. Daniel Seirawan

    Daniel Seirawan

    I am so glad I found the Cart-to-Quote plugin. To start, the authors answered my pre-sales questions very promptly. They have made a simple and elegant solution for a common problem, Quotes — very flexible ones.

    This plugin solves some common problems: Allows customers to Request a Quote (any time) OR uses a Quote Pending status for the order IF a shipping method is NOT available. Once reviewed by the Sales team, it auto-sends emails allowing the customer to access it and pay from their My Account page.

    I like it because Quotes are NOT separated out from the Orders in a separate Post Type. Quotes simply have a different order status WITHIN the Orders area and quickly revert to a normal order.

    The authors are very keen to get feedback for improvements. I suggested allowing Admins & Shop Managers to create quotes for clients. They said, we actually already have that code waiting in the wings and were looking for a good reason to push it forward … < 24 hrs later, it is part of the plugin and working well.

    • Elliot


      Hi Daniel, thank you for your kind review of Cart to Quote. We are always aiming for continuous improvement, so the type of feedback you’ve been providing us with on this plugin is extremely appreciated. Kind regards, Elliot.

Add a review

Your email address will not be published. Required fields are marked *