MageMe EasyQuote
for Magento 2
The complete B2B quote extension — 124 verified features across 8 categories, covering the path from a customer’s first enquiry through a branded PDF proposal to a one-click hand-off into the native Magento checkout.
The Complete Quote Management Extension for Magento 2
EasyQuote turns Magento 2 into a full B2B quoting platform — a private negotiation layer on top of your existing catalogue, with a 9-status quote lifecycle, per-line negotiated prices, multi-row volume tiers, branded PDF proposals, and a direct hand-off to the native Magento checkout.
Every category links through to its own dedicated page for full detail. The numbers below are live: 124 verified features, 11 REST endpoints, 2 native GraphQL resolvers, 17 transactional email templates, and one canonical quote record from request through to converted order.
Quote Creation & Customer Portal
Learn moreThree self-service entry points, admin quote-builder tools, and a buyer portal that lives alongside native Magento order history.
A button on the cart page turns an assembled basket into a formal quote request in one click.
The same action in the mini-cart drawer — useful on category pages where the buyer hasn’t hit the full cart.
Modal request form keeps the buyer on the current page. Name, email, phone, message, optional custom fields, file attachments.
Logged-in customers get pre-filled details; guests submit with just an email. An admin toggle can auto-register the guest as a Magento customer at submission time.
Admin can build a quote from scratch on the quote grid, pick a customer, search catalog, and add products with negotiated prices.
Any quote duplicates with all line items, negotiated prices, and tiers intact — repeat customers and recurring orders on rails.
Dedicated admin renderers for bundle, grouped, and downloadable SKUs; a pricing plugin fixes Magento’s children-calculated flag so bundle totals compute right on the quote and converted order.
Edit-screen Create Customer / Guest Customer actions mint a Magento account from a guest-quote’s buyer details and bind the quote to it.
A Quotes tab lists every quote the buyer has received, alongside orders — ready to review, accept, decline, or reply to.
One-click Accept records timestamped approval; Decline lets the buyer formally reject. Both transitions appear in the quote history.
Pending → Approved → Proposed → Accepted → Purchased, with Declined / Expired / Cancelled / Closed branches.
Every quote gets a human-readable number that never changes, and every status transition is timestamped on the record.
Pricing, Discounts & Tier Pricing
Learn morePer-line negotiated prices, multi-row volume tiers, tax-preserving currency handling, and per-store coupon controls.
A private per-line price overrides the catalog price on the quote, proposal PDF, email, and converted order.
MSRP can render as a strikethrough next to the negotiated price, so buyers see their saving on the quote and the PDF.
Every pricing change triggers a full totals refresh — subtotal, shipping, tax, grand total stay consistent.
Native Magento tax re-applies to the negotiated price, respecting tax-inclusive / exclusive stores and destination zones.
Totals render in the active store view’s currency; negotiated prices stay anchored to the base currency internally.
A per-store setting decides whether cart-rule coupons may further reduce a quote-sourced cart.
Per-quote tier tables that live on the line — different ladders for different buyers on the same SKU.
Adding a product to a quote pre-fills the tier table from its native Magento customer-group tier prices — the admin starts from what the group already qualifies for, not from a blank table.
Buyers pick which tier to purchase before accepting, and totals refresh in place.
The tier the customer picks flows through quick checkout into the converted order with no drift.
The proposal email template renders every tier inline alongside the selected one for approvers.
Proposals & PDF Documents
Learn moreBranded PDF proposals, store-view-aware transactional emails, and a one-click send that carries the current quote straight to the buyer’s inbox.
One admin action regenerates the branded email and attaches the latest PDF — safe to repeat.
Separate re-send action when the buyer forwards the proposal to an approver and needs a fresh copy.
One-click Approve transitions the quote into the approved state and triggers the customer notification.
The proposal email carries the generated PDF as an attachment — read-ready the moment the buyer opens the message.
The PDF is rendered on request from the current quote — every download reflects the latest negotiated data.
Admin downloads from the grid; customer receives the same PDF via email. Both sides read from the same document.
Per-store branding templates mean multi-store setups produce per-store PDFs from the same quote.
Separate configurable footer block for legal disclaimers, payment terms, or a per-store signature line.
Every line appears with its negotiated price, quantity, and full volume-tier table inline.
Store-level terms and a configurable footer cover the recurring copy every proposal needs.
Proposal templates receive quote, items, totals, and branding as standard Magento template variables.
Template selection follows the store view the quote was created on — DE quotes send DE, EN sends EN.
Inline-styled markup renders consistently across Outlook, Gmail, Apple Mail, and corporate filters.
Email Notifications & Messaging
Learn more13 real notification events covered by 17 transactional email templates — plus a two-way message thread on every quote.
Immediate confirmation to the buyer when a quote request is submitted — no “did you get my message?” follow-ups.
When the admin replies on the message thread, the customer is notified with the reply content.
When admin builds a quote proactively, the customer receives an email with the details to review.
Full proposal email with line items, pricing, and an accept link — the main conversion event.
Customer is notified when the admin approves the quote — pricing is locked.
Friendly nudge on silent quotes so negotiations don’t quietly expire.
Scheduled reminder before the quote expires — time to accept or re-negotiate before losing the offer.
Final notice when the quote crosses its expiry date — pricing is no longer valid.
Separate from the quote expiry — the proposal itself carries its own expiry window.
Closing email when the proposal lapses — admin can re-send or reopen as needed.
Goes to the configured admin address so your sales team sees the lead straight away.
Notifies the rep when a buyer accepts — the quote is ready to move to checkout.
Notifies the rep with the timing so they can follow up, adjust pricing, and re-send.
13 events ship as 17 templates — some events have separate admin and customer variants. Editable in Marketing → Email Templates.
The store view the quote was created on determines which template is sent — no admin configuration per customer.
Templates receive the quote, items, totals, and formatted helpers as standard Magento template variables.
Inline-styled, email-safe markup so every mail client renders the proposal consistently.
Shipping & Checkout Conversion
Learn moreDedicated quote shipping, one-click cart hand-off to the native Magento checkout, and an order linked to its source quote.
Visible only on quote-sourced carts at checkout — never offered on regular public carts.
Displayed name is configurable per store. Multi-store setups can carry different labels for different segments.
Method line is configurable so you can describe service level — “5-day freight,” “white-glove delivery.”
Admin types a shipping amount directly on the quote — matches a freight partner’s bespoke quote.
Subtotal, shipping, tax stay consistent when items or quantities change on the quote.
Store-level Allow customer to modify shipping toggle, overridable per quote — lock the negotiated carrier on freight-sensitive quotes, leave it open on others.
Accepting a quote hands the buyer off to the native Magento checkout in a single click — every line, negotiated price, tier selection, and shipping amount intact, no custom checkout skin to maintain.
Flag a quote as permanent so it can be purchased multiple times until its expiry date — ideal for standing contracts, recurring-order frameworks, and annual wholesale agreements.
Quote items live in the standard Magento cart — theme, mini-cart, saved-for-later UX all work.
Credit card, PO, third-party PO extensions, bank transfer — EasyQuote doesn’t dictate payment choice.
DE-created quote checks out through DE store with DE language, DE tax, DE payment.
Quick-checkout route is gated to the customer who owns the quote.
Every quote-sourced order stores a link back to its source quote, surfaced on both admin and customer views.
When the order is placed, the source quote’s status flips to Purchased automatically.
Converted orders keep negotiated prices on invoices, shipments, and credit memos.
Converted orders carry negotiated line prices, so Magento credit memos refund what was actually paid — not the catalog price.
Each quote carries an expiry date and an isQuoteExpired() helper; scheduled reminders and a final notice email go out before and after expiry.
A store-level “Enable backorder quotes” toggle bypasses Magento’s stock check on quote lines — for made-to-order SKUs.
Workflow, Status & Reporting
Learn moreNine lifecycle statuses, timestamped transitions, a shared admin grid, four mass actions, and CSV + XML exports.
Default state for a customer-submitted quote request — the rep’s inbox of work.
Admin reviewed and approved the quote — ready for proposal send.
Proposal has been sent to the customer with the PDF attached.
Customer accepted — quote is ready for quick checkout.
Customer explicitly declined — admin follows up and adjusts if appropriate.
Accepted quote was converted to a Magento order — stays linked.
Quote expired without acceptance — checkout path blocked, final notice sent.
Admin revoked the quote — audit entry stamped.
Admin-triggered archive for superseded or no-longer-relevant quotes.
Every transition is timestamped on the quote record — full audit trail.
Customer and admin messages on each quote, timestamped, read/unread indicator.
Respects active filters — pull “Pending over $10k” straight into Excel.
Same filter context in XML — for ERP import or structured downstream systems.
Single grid for the whole pipeline across store views.
Filter by status, customer, store, date range, total.
Each quote is assigned to a responsible admin / sales rep. The grid surfaces a sortable, filterable Managed By column so each rep can focus on their own pipeline.
Mass Approve, Mass Cancel, Mass Delete, Mass Set-Pending — batch triage in one action.
Any quote duplicates from the grid with line items, prices, and tiers copied.
API, Integrations & Themes
Learn more11 REST endpoints, 2 GraphQL resolvers, and native Magento extensibility patterns — integrate like any native module.
Fetch a single quote record by ID with its full payload.
Return every line item on a given quote with negotiated prices and tier data.
List all quotes with Magento search-criteria filtering — paginated, sortable.
Fetch a quote request by ID with its form payload, attachments, thread.
List all quote requests — a feed of inbound leads for CRM or lead-scoring.
Customer-scope list of the authenticated user’s quotes.
Customer-scope item detail for rendering the line-item view.
Moves every quote line into the native cart with negotiated prices preserved.
Customer-scope list of quote requests the authenticated user has submitted.
Submits a new quote request on behalf of the authenticated customer.
Submits a quote request derived from the customer’s existing cart in one call.
Quote (single by ID) and Quotes (customer list) ship as native GraphQL resolvers.
Works on default Magento Luma out of the box — no overrides needed.
Dedicated MageMe_EasyQuoteBreeze module for Breeze-based themes like Swissup Breeze Blank.
Dedicated Hyva_MageMeEasyQuote module — Hyvä/Tailwind templates, Hyvä Checkout integration, Tailwind CSS class purging.
Runs on Open Source, Adobe Commerce, and Adobe Commerce Cloud the same way.
Every API response respects the requesting store view — currency, locale, carrier title.
Every operation exposed through service-contract interfaces for DI injection and override.
Swap any service implementation via DI preference in your own module.
Standard Magento events plus easyquote_cart_add_items_after and mm_calculate_product_price_options.
B2B Use Cases & Configuration
Learn moreWholesale, manufacturing, and tender workflows, plus seven admin-configurable settings that shape how EasyQuote behaves across your stores.
Different tier tables per buyer on the same SKU — distributors don’t see each other’s deals.
Pairs with Magento customer-group visibility to hide wholesale-only catalogs from retail buyers.
Every configurable and custom-option product works on the quote the same way as the cart.
Store-level toggle lets quote lines bypass Magento’s out-of-stock check — on for made-to-order, off for strict-stock stores.
Per-quote expiry window — 60/90 day proposals without forcing short policy on everything.
Branded PDF for tender submissions, procurement portals, or any PDF-routed buyer workflow.
Line items, per-unit price, tiers, subtotal, shipping, tax, grand total in a predictable structure.
Timestamped transitions, preserved conversation thread, attachments bound to the record.
EasyQuote can be enabled per website or per store view — run it only where it fits.
Toggle the Get-a-Quote button independently on the cart page and the mini-cart drawer.
Store-wide default expiry that auto-fills on new quotes; per-quote overrides still available.
Configure the title and method label of the quote-specific shipping carrier per store.
Standard Magento admin ACL permissions for every quote action.
Configurable admin email per store view for new-request and accept/decline alerts.
Store-level toggle controls whether cart-rule coupons may further reduce a quote total.
Frequently Asked Questions
Licensing, tiers, compatibility, and how EasyQuote fits alongside other B2B tools in the Magento ecosystem.
Adobe Commerce B2B’s native quoting is part of the paid B2B bundle on Adobe Commerce. EasyQuote runs on Magento Open Source, Adobe Commerce, and Adobe Commerce Cloud with the same codebase, and ships a focused quote lifecycle without the rest of the B2B suite — simpler install when you don’t need the full Company / Requisition / Shared-Catalog feature set.
Cart2Quote has been in market longer and has a broader add-on ecosystem. EasyQuote is leaner, uses native Magento patterns exclusively (service contracts, DI preferences, standard REST / GraphQL), and ships a smaller, more predictable integration surface — better fit for stores that prefer a tight core to a wide feature list.
Aheadworks focuses on Company Accounts and multi-buyer hierarchies. EasyQuote focuses on the quote itself — its pricing, proposal, lifecycle, and conversion — rather than the organisational structure around the buyer. The two complement each other for teams that need both.
Magento 2.3.5+ through 2.4.x on Open Source, Adobe Commerce, or Adobe Commerce Cloud. PHP 7.4, 8.1, 8.2, 8.3, or 8.4. MySQL 8.0+ or MariaDB 10.4+ (same as Magento’s own matrix). Composer install, no extra services, no metered API. Upgrade paths track the Magento release schedule.
Yes. EasyQuote ships a dedicated Hyva_MageMeEasyQuote compatibility module with Hyvä/Tailwind templates, Hyvä Checkout integration (Magewire/LiveWire), and Tailwind class purging. Luma and Breeze.js are supported through their own dedicated compat modules. Full details on the API & Themes page.
The Lite edition is in development and not yet released. The current product is EasyQuote with the full feature set as catalogued on this page.
Two editions, one-time licence per Magento installation. Community Edition: €179 (Magento Open Source). Enterprise & Cloud Edition: €429 (Adobe Commerce, Adobe Commerce Cloud). Both include lifetime updates, dev and staging copies under the same licence, and a 30-day money-back guarantee. No metered API calls, no subscription.
No. The module is entirely self-hosted — no third-party cloud, no SaaS dependency, no metered API calls. Transactional emails use your store’s existing mail transport; PDFs are generated server-side.
Yes. EasyQuote focuses on quote lifecycle and doesn’t own Company Accounts, Shared Catalogs, or Requisition Lists — so it coexists with dedicated company-account modules, shared-catalog modules, and CRM integrations that cover those areas.
Composer install and module enable take minutes. Base configuration — admin email, store-view-specific carrier title, default expiry window, email template review — takes under an hour for a typical single-store site. Multi-store setups scale with the number of views requiring custom branding or locale routing.
Yes — a 30-day money-back guarantee applies. Contact MageMe support to arrange trial installs, staging licences, or refunds within the window.
Support tickets are answered within 24 hours, Monday to Friday. The response SLA covers every active licence — Community and Enterprise & Cloud. For ongoing development work (module tweaks, custom features, performance tuning), MageMe’s separate Support & Maintenance plan covers 20 or 40 hours per month.
Yes. EasyQuote uses standard Magento customer and quote data structures — no separate data silo, no third-party cloud. Customer-initiated data deletion removes linked quote records through the admin grid’s Mass Delete action, and the status history is removed with the parent quote. Transactional emails use your store’s existing mail transport; no data leaves the installation.
EasyQuote is built and maintained by MageMe, the same team behind WebForms, Schema, and the wider MageMe Magento extension catalogue.
Ready to Run Real B2B Quoting
on Magento 2?
Experience the most comprehensive quote management extension for Magento 2 — 124 verified features, native code, 30-day money-back guarantee.