v1.0.7
Free EU Withdrawal Button

Magento 2 EU Withdrawal Extension - 14-Day Right-of-Withdrawal Button, Required by 19 June 2026

EU Withdrawal
Magento 2.4.4 - 2.4.9 · Community, Enterprise, Cloud
Hyvä Ready Breeze Ready

EU Withdrawal is a free Magento 2 extension that adds the EU 14-day right-of-withdrawal button your store needs by 19 June 2026. It delivers a clearly labelled withdrawal button, a deliberate two-step confirmation, an automatic email receipt, partial per-item withdrawals, an admin request queue with CSV export, and 22 EU languages - with native Hyvä and Breeze support. Install via Composer and be compliant in about 15 minutes. The optional Pro edition adds a tamper-proof audit log, customer-verifiable receipts, and a single signed evidence file for regulators.

Available on GitHub mageme/module-eu-withdrawal
  • check_circle 14-day Withdrawal Button
  • check_circle Two-step Confirmation
  • check_circle Automatic Email Receipt
  • check_circle Partial Withdrawal
  • check_circle Admin Queue + Csv Export
  • check_circle 22 Eu Languages
  • check_circle Hyvä & Breeze Ready
  • check_circle Privacy-first

Screenshots

A quick glance at frontend and backend functions.

Product Details

19 June 2026 — every online seller with EU customers must show a clear “Withdraw from contract” button. Without it, customers can withdraw for up to 12 months and 14 days instead of 14 days, and enforcement is delegated to each EU member state's consumer-protection authority.

EU law update

What the new EU law expects from your store

Three concrete things. All three have to be in place by 19 June 2026.

01
3D icon: a clearly labelled withdrawal button in a browser window

Clearly labelled “Withdraw from contract” button

A visible button or link the customer can find at any time during the 14-day withdrawal window — not buried in a help article or behind a contact form.

02
3D icon: a two-step form-then-confirm flow

Deliberate two-step confirmation

The withdrawal button opens a short guided confirmation form: the customer looks up the order (guests use order number + email), selects the items to withdraw, and confirms. Partial, per-item withdrawals are supported — not just the whole order.

03
3D icon: an automatic timestamped email confirmation

Automatic email receipt

A timestamped email with the withdrawal details and a reference number. A "we'll get back to you" message is not enough — that email itself is the legal record.

Who needs to comply?

If any of these is your store, this law applies — no matter where the business is registered.

You sell to EU consumers

Even if your business is registered outside the EU — the law follows the consumer, not the trader.

You ship goods to the EU

Any physical product delivered to an address in an EU member state — even just occasionally.

You price in euros

Storefront prices listed in euros — alongside or instead of your home currency.

A drop-in solution

One free module. All three implementation pieces, out of the box.

The module adds a “Withdraw from contract” button to every customer-facing place that matters — the order page, the customer account, the footer and order-confirmation emails. Customers complete a short two-click form, as guests or logged in, choosing the whole order or just specific items. A timestamped email confirmation goes out automatically, and every request lands in a dedicated queue inside your Magento admin. Five-minute setup.

How your customer withdraws from an order

Five steps. Two clicks. One email.

Always on the order page

Step 01

Click “Start withdrawal”

The button sits on the customer's order page, account area, store footer and order emails — available right through the 14-day window. It opens the EU right to withdraw from the contract — the 14-day right EU shoppers expect.

Two ways in — both quick

Step 02

Find your order

Guests enter their order number and email. Signed-in customers skip that — they just pick the order from their history. Either way it takes seconds.

The whole order — or just a few items

Step 03

Select the items

Withdraw from the whole order, or set a quantity for individual items only. Partial withdrawal is handled the same way, in the same form.

The full refund, shown before they commit

Step 04

Confirm the withdrawal

A separate confirmation page — the second step EU law requires. The customer sees the items and the total refund before they commit.

A timestamped, durable legal receipt

Step 05

Receive the email receipt

A timestamped withdrawal receipt lands automatically — the durable-medium record EU law requires, carrying the refund total and the legal basis.

How your team handles withdrawals

A dedicated queue inside your Magento admin. No new tool to learn.

Everything included in Free

Every technical piece the withdrawal-button requirement needs is in Free. Pro adds proof and forensics on top, not the basics.

Built to the directive

Button label, two-step flow, email receipt, partial withdrawal — configured to what Art. 11a describes.

Works for guests and customers

Logged-in shoppers go straight to their orders. Guests look up the order with their order number and email.

Two-step confirmation

Required by the new EU law. We handle the routing and the second-click confirmation page.

Automatic email confirmation

Timestamped email with the withdrawal details, items and reference number. Becomes the permanent record.

Withdraw from individual items

Customers can withdraw from specific items and quantities, not just the whole order.

Visible in all the right places

Order page, customer account, footer and order confirmation emails — automatically, no template editing needed.

22 EU languages

Every EU locale Magento ships with, with verbatim legal text taken straight from EU sources. Override per store view if needed.

Admin queue with CSV export

Filter by status, date, customer, order. Export to CSV for accounting. Standard Magento admin look and feel.

Editable email templates

Sender, subject, layout — edit per store view from the admin. Multistore-aware.

Works with Hyvä and Breeze

Free Hyvä companion modules ship alongside. Breeze (Swissup) is supported out of the box. Luma just works.

Digital-content waiver flow

Selling downloads, software or services? The required "I want to start using this now" consent is collected and recorded at checkout, automatically.

No tracking, no phone-home

Zero data sent to our servers. Customer data stays in your Magento database.

Pro upgrade · optional

When you need proof, not just the implementation

Free implements what Art. 11a of Directive 2011/83/EU describes. Pro is for the moment a regulator, a dispute lawyer, or a chargeback adjuster asks for proof — and you want to hand them something solid in one click.

Free vs Pro at a glance

Free delivers every technical piece the requirement covers. Pro adds proof, forensic-grade records, and one less click for the customer.

Feature Free Pro
Storefront & customer experience
“Withdraw from contract” button on order page, account, footer, emails??
Two-step confirmation flow??
Withdraw from individual items (not just the whole order)??
Guest and logged-in customer flows??
22 EU languages??
Automatic email confirmation (timestamped)??
Digital-content waiver flow at checkout??
One-click withdrawal links in customer emails?
Admin & operations
Dedicated queue inside Magento admin??
Filters, mass actions, CSV export??
Native Magento credit-memo hand-off??
Approve / reject with reason and customer email??
Records & proof
Searchable activity log in admin?
Tamper-proof activity log?
Customer-verifiable email receipts?
Proof of pre-purchase disclosure?
Signed, single-file evidence pack export?

See Pro modules in detail

Compatibility

Runs on your stack

Built for current Magento — every edition, modern PHP and the major themes, installed the way your team already works.

Platform

Magento 2.4.4 – 2.4.9

Editions

Open Source & Commerce

Runtime

PHP 8.1 – 8.5

Themes

Hyvä · Breeze · Luma

Checkout

Luma & Hyvä Checkout

Security

CSP-compatible

Frequently asked questions

About compliance

Do I really need a withdrawal button if I already have a returns process?

Yes. The new EU law expects a clearly labelled withdrawal button that's visible at all times during the 14-day window. A general returns form does not count — the law is specific about the wording, the placement and the two-step confirmation.

What happens if I do not comply by 19 June 2026?

Two things. First, your customer's withdrawal window automatically extends from 14 days to 12 months and 14 days — a full year of extra exposure. Second, enforcement is delegated to each EU member state's consumer-protection authority — penalties and procedures vary by country, but the exposure exists in every member state.

Does this apply to my non-EU store if I have EU customers?

Yes. The law applies to every store selling to consumers in the EU, regardless of where the business is registered. If you ship to the EU or price your products in euros, you are in scope.

Does this replace my full RMA or returns process?

No. The module adds only the legal withdrawal step. Your existing RMA, refund and shipping-return workflow stays as it is — your team uses it after the withdrawal request lands in the admin queue. The two systems sit next to each other.

About the extension

Is this really 100% free? What is the catch?

No catch. The Free edition is proprietary freeware under the MageMe EULA: free of charge, no trial limit, no tracking. Pro is a separate, optional upgrade for stores that want a tamper-proof activity log, verifiable receipts and signed evidence packs on top.

What is the difference between Free and Pro?

Free delivers every technical piece the requirement covers: the withdrawal button, two-step confirmation, automatic email confirmation, partial withdrawals, 22 EU languages, admin queue. Pro adds proof: a tamper-proof activity log, customer-verifiable receipts, proof of pre-purchase disclosure, one-click withdrawal links in customer emails, and a single signed evidence file you can hand to a regulator. Free is the implementation. Pro is for stores that want forensic-grade records on top.

Is the extension compatible with Hyvä theme?

Yes. Free Hyvä companion modules ship alongside the main extension (one for the storefront, one for the checkout). Breeze (Swissup) is supported out of the box. Luma works without anything extra. CSP headers, Tailwind classes and the Hyvä asset pipeline are all respected.

Does it work for guest checkouts?

Yes. Guests submit a withdrawal by entering their order number plus email. Logged-in customers see their orders directly in their account. Both flows go through the same two-step confirmation and generate the same email confirmation.

What customer data does the module store?

Order number, customer email, the items being withdrawn, an optional reason, and timestamps — stored in your own Magento database, never sent to any MageMe server. No tracking, no phone-home. Pro adds an automatic anonymisation schedule so personal details are erased after the retention period you choose (default 365 days).

Support and maintenance

Who maintains this extension?

MageMe (ACTEK d.o.o.), a Slovenia-based Magento extension vendor active since 2011. The Free module shares the same code, CI pipeline and release process as our paid products.

How do I get support for the free version?

Best-effort community support via support@mageme.com. Bug reports are triaged by the same engineers who work on the paid editions. Priority queue with a 24-hour SLA is part of the Pro tier.

How do I upgrade from Free to Pro?

Pro is installed as a small set of add-on modules that sit next to your existing Free install. Your data, settings and request history are preserved — no reinstall, no migration. You get a Composer command and a short upgrade guide right after purchase.

Will it stay free?

Yes. The Free edition is our long-term contribution to the Magento ecosystem. The implementation baseline stays in Free — anything that implements what Art. 11a describes lands in Free, not Pro.

PRICING

Choose your options.

EU Withdrawal

Everything the directive requires

€0.00
  • Labelled withdrawal button on every order
  • Deliberate two-step confirmation
  • Automatic email receipt for the customer
  • Partial, per-item withdrawals
  • Admin request queue with CSV export
  • 22 EU languages, guest & customer flows
  • Native Hyvä & Breeze support
  • No tamper-proof audit log
  • No signed evidence pack for regulators

EU Withdrawal Pro

Proof and evidence, on top

€249.00
  • Everything in Free, plus:
  • Tamper-proof activity log (hash-chained)
  • Customer-verifiable email receipts
  • Proof of pre-contractual disclosure
  • One-click withdrawal links in order emails
  • One signed evidence file for regulators
  • Automatic personal-data anonymisation schedule
  • 1 year of priority support & updates

REVIEWS

Be the first to leave a review

Write a Review

Write your own review:
Your Rating

CHANGE LOG

1.0.7
Jun 21 2026
  • New: Restrict by Customer Group - optionally hide the self-service withdrawal flow from selected customer groups (e.g. your B2B / wholesale groups), while guests and consumers keep it
  • New: a new "If delivery is never confirmed" setting decides whether orders that reached a delivered status without a recorded delivery date stay open or are treated as not eligible (default)
  • New: Statuses Excluded From Withdrawal - choose order statuses (such as a legacy import status) that should never be offered for withdrawal
  • New: submitting a withdrawal request now adds a note with the requested refund to the related order's timeline
  • Fix: the refund amount shown in the order-timeline notes and the durable-medium receipt now reflects the full amount instead of the shipping portion only
  • Other: the checkout pre-contractual withdrawal information now follows the country and customer-group scope, so it shows only where the self-service withdrawal applies
1.0.6
Jun 18 2026
  • the withdrawal-CTA order and shipment emails can now be selected directly from the Sales Emails template dropdown - no need to clone a template first
  • approving, denying or cancelling a request now adds a short note to the related order's timeline (refund amount, denial reason, or who cancelled), so the outcome is visible on the order itself
  • a drop-in "Withdraw from contract" link block for custom themes, so the link can be placed anywhere in the storefront
  • status emails now send guests to the withdrawal page instead of a login page they cannot use
  • the "Show Footer Link" setting now hides the storefront footer link when it is turned off
  • the withdrawal form no longer errors on themes that do not include the optional photo-evidence step
  • the submission notification email now lists all of its available variables in the admin template editor
1.0.5
Jun 17 2026
  • New: Seal Photos — optional seal-photo evidence step for sealed items (Pro add-on)
  • New: Item Selection setting - the withdrawal form can run in "Full order" mode where the request always covers all returnable items
  • Fix: final confirmation button now renders the legally required "Confirm withdrawal" label in the customer's language instead of "Submit return request"
  • New: Extension points for the Pro photo evidence step on the withdrawal form
  • Fix: request creation no longer fails when a third-party extension dispatches the request-created event without eligibility data
  • New: Country Scope setting - optionally limit the self-service withdrawal flow to customers in selected countries
  • Fix: the "Withdraw from contract" link in order and shipment emails now renders when the email is resent from the admin or sent by a background job
  • Fix: an order now stays available for withdrawal through the whole of its final eligible day
  • Fix: a logged-in customer opening a withdrawal link for an order that is not their own is now turned away
  • Other: Removed the redundant Eligibility column from the items table on the admin withdrawal request page.
1.0.4
Jun 11 2026
  • Fix: The digital-content waiver step no longer fails to save when the billing address is set during checkout.
  • Other: Removed a non-functional Privacy & Retention settings group.
  • Other: Internal cleanup, dead-code removal and a more robust order-lookup rate limiter.
  • Other: Module permissions now appear under the Sales section in admin role permissions (thanks to Ole Schäfer).
1.0.3
Jun 08 2026
  • The refund total now matches the order total when a payment-method discount, gift card or other order-level adjustment applies — such orders previously could not be withdrawn or showed an inflated refund.
  • The refund total shown right after submitting a withdrawal now includes the shipping refund.
  • Corrected the German translation of the "Withdraw from contract" label.
1.0.2
Jun 04 2026
  • Digital-content detection can now recognise digital items inside bundle products.
  • Submission confirmation email and the merchant copy now also send for requests made through the storefront app.
  • The store logo now appears in withdrawal emails.
  • Email USP and social icons now display in Gmail, Outlook and Yahoo.
  • Withdrawal emails are sent in the store's language instead of always English.
  • Storefront-app submissions now go through the same rate-limiting and audit logging as the form.
1.0.1
Jun 3 2026
  • New: "Show more" in the order picker — load more eligible orders on demand.
  • Fix: Order picker lists newest orders first.
  • Fix: Order picker honours a withdrawal period over 14 days.
  • Fix: Delivered date is consistent between the order list and detail.
  • Fix: Admin request view no longer crashes in the free edition.
1.0.0
Jun 1 2026
  • New: First public release. EU right-of-withdrawal management for Magento 2 — a guided customer withdrawal flow (find order, pick items, review, submit), eligibility rules, automatic refund calculation, and durable-medium receipt emails.
  • New: Admin request management — withdrawal request grid, request detail screen, approve/deny workflow, and configurable withdrawal period and return address.
  • New: Pre-contractual Annex I information notice on checkout, plus a downloadable model withdrawal form (Art. 6(1)(h)).
  • New: Digital-content waiver step with express consent and loss-of-right acknowledgement (Art. 16(m)).
  • New: Merchant alert email on each new request, and a "Withdraw from contract" call-to-action in order and shipment confirmation emails.
  • New: Translations for 22 EU locales.