Description
NuxWP Devis (devis is French for “quote”) lets your customers build their cart as usual and, instead of paying, ask for a quote — with one button on the cart page.
Most quote plugins replace “Add to cart” and hide prices behind a separate “quote basket”. NuxWP Devis does the opposite: the cart stays a cart, and becomes a quote only when the customer wants one. Perfect for B2B shops, wholesalers and any store where large baskets deserve a negotiated price.
How it works
- The customer fills the cart and clicks Request a quote on the cart page.
- A confirmation modal opens — with an optional message — and the request is sent. The cart is emptied, a PDF quote is generated, e-mails go out to the customer and to you.
- In WooCommerce Quotes you review the request, apply line discounts and/or a global discount, set the expiry date and change the status (Pending Quoted Accepted). The PDF is regenerated and the customer is notified at every step.
- In My Account My quotes the customer sees the quote, downloads the PDF and, once accepted, clicks Accept and pay: the quote is loaded back into the cart with the negotiated prices, the cart is locked (no quantity change, no coupon, no extra product) and goes to checkout.
- The quote is marked Ordered once the order is paid / confirmed. Quotes expire automatically on their expiry date.
For your customers
- Request a quote button on the cart page — classic cart and block cart (WooCommerce Blocks slot)
- Optional message with the request
- My quotes tab in My Account: list, detail, status, PDF download, customer message
- Accept and pay on accepted quotes: frozen negotiated prices, locked cart, one-click checkout
- E-mails at every step: request received, priced, accepted, declined, expired, ordered (responsive HTML, PDF attached)
For you
- WooCommerce Quotes dashboard: counters per status, search, filters, pending badge in the menu
- Line discounts and a global discount, exact tax computation with the real product tax rates for the customer, single rounding — no phantom cents
- Expiry date, status workflow, message to the customer, delete
- Automatic PDF quote (zero dependency) with your logo, company details, registration and VAT numbers, footer note
- Who can request: any logged-in customer or selected roles
- Cart button styled from the settings: filled / outline / text link, colours, hover, size, radius, full width, icon, live preview
- Texts settings: rewrite the phrases your customers see (cart, modal, My account, statuses, e-mails) without a translation plugin
- EN / FR switch for the admin screen (per user); other languages via translate.wordpress.org or Loco Translate
- HPOS compatible, no theme dependency, no external service, no tracking
NuxWP Devis Pro (separate add-on)
This plugin is complete and fully functional on its own. A separate, paid add-on adds: a quote button on single product pages and in product grids, product rules (categories, per-product “Quote” tab, quantity threshold), out of stock quote, customer file attachments and an ERP bridge (Sage, Odoo, EBP…). Learn more at https://nuxwp.com/nuxwp-devis-pro.
All settings
Everything is in WooCommerce Quotes Settings.
Quote requests
- Show the “Request a quote” button on the cart page — on/off. In the block cart the button is placed automatically in the totals area; the
[devisqr_button]shortcode places it anywhere else. - Minimum cart total (incl. tax) — 0 = no minimum. Computed on the products at catalog price including tax (shipping, fees and coupons are not part of a quote). Below the minimum the button stays locked and shows “From X”.
- Who can request a quote — Any logged-in customer or Only the selected roles (role chips). Shop managers and administrators can always request. Guests are sent to the login page.
- Quote validity (days) — default 15. Printed on the PDF and in the e-mails; quotes past their date switch to Expired automatically (daily) and can no longer be paid.
- Quote number prefix — letters and digits, e.g.
QTQT-202610-0001(sequential per month). - Let the customer add a message to the request — on/off.
Cart button
- Position (classic cart) — after the cart totals / before “Proceed to checkout” / after “Proceed to checkout” / top of the cart / manual (shortcode only).
- Alignment — left / center / right (on phones the cart button is always full width).
- Button text — default “Request a quote”.
- Style — Look (filled / outline / text link), Size (small / medium / large), Corner radius, Background, Text, Border, Hover background, Hover text, Full width, Show the icon, with a live preview.
Texts & translations
Rewrite the essential phrases without a translation plugin (they apply to what customers see; back-office screens keep the original wording). Each field shows the current wording in grey; type yours to replace it (applies to PHP and JavaScript). Keep the %s placeholders where they appear. Groups: Cart & quote request (button label, minimum notice, modal title/text/fields/buttons, success message, locked-cart messages, contact link), My account (tab title, empty state, PDF button, pay button, back link, team message label), Status labels, E-mails (the three subjects, greeting, every sentence of the “request received” and status e-mails, button labels, footer line, shop notification title/button).
E-mails & contact
- Notification e-mail(s) for new requests — one or more addresses, comma-separated. Default: the site admin e-mail.
- Sender e-mail (From) — default: the WooCommerce sender address.
- Contact e-mail shown to customers — in e-mails and “contact us” links. Default: the site admin e-mail.
- Contact page URL (optional) — used for the “contact us” links instead of a mailto link.
- Send me a test e-mail — sends the “request received” e-mail with sample data to your own address, using the saved settings. Handy to check your SMTP setup and the rendering of your logo, colour and texts.
E-mails share one sober, responsive template: your logo (the one chosen in Company details & PDF, else the theme logo) or the site name, a thin accent rule, the message, a quote card (number, date, validity), the products and totals, one button, and your company details in the footer. The accent colour (default dark blue) can be changed with the devisqr_email_accent_color filter.
Company details & PDF
- Logo (PDF & e-mails) — PNG, JPEG, WebP, GIF or AVIF from the media library (no SVG); falls back to the theme’s site logo. Non-PNG/JPEG files are converted once to PNG in
uploads/devisqr-branding/so they print on the PDF and display in every e-mail client. - Company name, Address, Postcode, City, Phone, E-mail printed on the PDF, Company registration no., VAT number — empty fields fall back to the site name and the WooCommerce store address.
- Footer note on the PDF — default “This document is a quote, not an invoice. Keep it for your records.”
Uninstall
- Delete all quotes, PDFs and settings when the plugin is deleted — off by default. When on, deleting the plugin drops the two tables, the options, the rate-limit transients and the
uploads/devisqr-quotesfolder.
Admin language
At the top of WooCommerce Quotes: EN / FR switch (per user) and a ↺ button to follow the site language again. The switch changes the admin screen, status labels and menu for this plugin only.
Shortcodes
[devisqr_button]— the cart quote button (respects the minimum, the roles and the locked-cart state). Useful in a block cart layout or a custom cart template.
Developers
Actions: devisqr_quote_created (quote_id), devisqr_quote_status_changed (quote_id, status, old_status), devisqr_quote_converted (quote_id, order), devisqr_before_delete_quote (quote).
Filters: devisqr_settings, devisqr_user_can_request (bool, user), devisqr_allowed_roles, devisqr_min_cart_total, devisqr_cart_button_hook (hook, position), devisqr_account_endpoint (default quotes), devisqr_pdf_company_info, devisqr_converting_order_statuses (default processing, completed, on-hold), devisqr_email_accent_color, devisqr_buttons_inline_css.
REST namespace: devisqr/v1 — customer routes (/submit, /quotes, /quotes/{id}, /quotes/{id}/add-to-cart) require a logged-in user; admin routes (/admin/*) require manage_woocommerce.
Data: tables {prefix}devisqr_quotes and {prefix}devisqr_quote_items; option devisqr_settings; files in uploads/devisqr-quotes/ (unguessable names, .htaccess protected, served only through nonce-protected links to the owner or shop managers).
Screenshots







Installation
- Upload the plugin to
/wp-content/plugins/or install it from the Plugins screen. - Activate it. WooCommerce must be active.
- Go to WooCommerce Quotes Settings: minimum cart total, who can request, company details, PDF logo, buttons.
FAQ
-
Does it hide prices or replace “Add to cart”?
-
No. NuxWP Devis keeps your shop working normally. Customers fill their cart and request a quote from the cart page. (Product-page buttons and the out-of-stock quote mode are part of the Pro add-on.)
-
Can guests request a quote?
-
Quotes are tied to a customer account so they can be followed up, accepted and paid. Guests are invited to log in or register.
-
Does it work with the Cart block?
-
Yes. The button is rendered inside the block cart’s totals area. The
[devisqr_button]shortcode remains available to place it anywhere else. -
How is the minimum cart total computed?
-
On the products in the cart at catalog price, including tax — shipping, fees and coupons are not part of a quote.
-
What happens when the customer pays an accepted quote?
-
The quote lines are loaded into an empty cart at the negotiated prices (all or nothing: if a product is no longer available in the requested quantity, the customer is asked to contact you). The cart is locked; the order is placed normally; the quote becomes Ordered once the order is processing / completed / on hold (filterable). A failed or abandoned payment leaves the quote payable.
-
Which languages does the PDF support?
-
The built-in PDF generator supports Latin-script languages (English, French, Spanish, German, Italian, Portuguese…). The interface, e-mails and admin are fully translatable; English and French are included.
-
Does it work with HPOS?
-
Yes. The plugin declares compatibility with WooCommerce High-Performance Order Storage.
-
Where are the PDFs stored?
-
PDFs are stored in
wp-content/uploads/devisqr-quotes/with unguessable file names, protected by.htaccess(Apache) and only served to the quote owner or shop managers through a nonce-protected link. On Nginx, addlocation ~* /uploads/devisqr-quotes/ { deny all; }to your server block. -
E-mails are not arriving
-
The plugin uses
wp_mail()like WooCommerce. If your site has no SMTP configured, install an SMTP plugin; the “Sender e-mail” setting must be an address your server is allowed to send from.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“NuxWP Devis – Quote Requests for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “NuxWP Devis – Quote Requests for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.5.2
- Removed the free-form “Custom CSS” field: the cart button is styled through the form fields of the style editor (colours, size, outline, icon).
1.5.1
- Renamed to NuxWP Devis. The cart button style editor is part of the free plugin. Translations now come from translate.wordpress.org.
1.5.0
- First public release on WordPress.org.
- Cart quote request flow (classic cart and Cart block), minimum cart total, allowed roles, validity and automatic expiry, optional customer message.
- PDF quote (zero dependency) with your logo and company details; “My quotes” account tab; accept & pay in one click.
- Admin: quotes list with search and statuses, line editing and global discount, pending badge, EN / FR switch per user.
- E-mails: one sober responsive template, every sentence editable from Settings Texts & translations, “Send me a test e-mail” button.
- Logo: PNG, JPEG, WebP, GIF or AVIF (converted to PNG for the PDF and e-mails).
