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.
EU Withdrawal is a free Magento 2 extension that adds the EU 14-day right-of-withdrawal button your store now needs. 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-withdrawalA quick glance at frontend and backend functions.
The EU withdrawal button is a mandatory “Withdraw from contract” function that online stores selling to EU consumers must display from 19 June 2026 under EU law. Under Art. 11a of Directive 2011/83/EU (added by Directive (EU) 2023/2673), every online seller with EU consumers must now 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.
Three concrete things. All three are now mandatory across the EU.
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.
A short guided form: the customer looks up the order, selects the items to withdraw, and confirms. Partial, per-item withdrawals are supported, not just the whole order.
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.
If any of these is your store, this law applies, no matter where the business is registered.
Even if your business is registered outside the EU. The law follows the consumer, not the trader.
Any physical product delivered to an address in an EU member state, even just occasionally.
Storefront prices listed in euros, alongside or instead of your home currency.
A drop-in solution
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 guided 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. Set up in about 15 minutes.
Five steps. One deliberate confirmation. One email.
A customer withdraws in five steps: start the request from the order page, account, footer or order email; find the order (guests enter their order number plus email, signed-in customers pick from history); select the whole order or individual items; confirm with refund details shown; then receive an automatic timestamped email receipt.
Step 01
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 14-day right of withdrawal, the one shoppers now expect to find.
Step 02
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.
Step 03
Withdraw from the whole order, or set a quantity for individual items only. Partial withdrawal is handled the same way, in the same form.
Step 04
A separate confirmation page, the second step EU law requires. The customer sees the items and the total refund before they commit.
Step 05
A timestamped withdrawal receipt lands automatically: the durable-medium record EU law requires, carrying the refund total and the legal basis.
A dedicated queue inside your Magento admin. No new tool to learn.
Every technical piece the withdrawal-button requirement needs is in Free. Pro adds proof and forensics on top, not the basics.
Button label, two-step flow, email receipt, partial withdrawal, configured to what Art. 11a describes.
Logged-in shoppers go straight to their orders. Guests look up the order with their order number and email.
Required by EU law (Art. 11a). We handle the routing and the second-step confirmation page.
Timestamped email with the withdrawal details, items and reference number. Becomes the permanent record.
Run the form in full-order mode, or let customers pick specific items and quantities. Configurable per store.
Order page, customer account, footer and order confirmation emails. It happens automatically, no template editing needed.
Every EU locale Magento ships with, with verbatim legal text taken straight from EU sources. Override per store view if needed.
Filter by status, date, customer, order. Export to CSV for accounting. Standard Magento admin look and feel.
Sender, subject, layout: edit per store view from the admin. Multistore-aware.
Free Hyvä companion modules ship alongside. Breeze (Swissup) is supported out of the box. Luma just works.
Selling downloads, software or services? The required "I want to start using this now" consent is collected and recorded at checkout, automatically.
Zero data sent to our servers. Customer data stays in your Magento database.
Show the withdrawal flow only in the countries where it applies, and hide it from the customer groups that do not need it.
Exclude specific order statuses, decide how orders never marked as delivered are handled, and detect digital items inside bundles.
Every request, approval, denial or cancellation is logged on the order itself, with the refund amount, the reason and who acted.
Pick the withdrawal emails from the standard Sales Emails dropdown, and drop the withdrawal link anywhere in a custom theme.
Pro upgrade · optional
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.
Pro feature · 1 of 5
Every withdrawal request gets a full timeline: who pressed which button, when, and from where. The log is locked: not even your own admin can edit or delete past entries. When a regulator or a lawyer asks "how do you know what happened", you can show them.
Pro feature · 2 of 5
EU law has two proof requirements. Free's confirmation email proves what you sent after a withdrawal. Pro proves what your customer saw before they paid. That is the other half of the proof a regulator looks for. Every checkout view of the terms is timestamped, the exact text is saved, and the proof is one tab away on the request page.
Pro feature · 3 of 5
Every withdrawal confirmation email gets a personal verification link. Your customer, or anyone they show it to (a bank, a dispute lawyer, a regulator), clicks the link and instantly sees the receipt wasn't edited after you sent it.
Pro feature · 4 of 5
For sealed goods (cosmetics, hygiene items, supplements, software, media), the right of withdrawal ends once the seal is broken (Art. 16(e) of Directive 2011/83/EU). Seal Photos adds an optional step to the withdrawal flow: the customer attaches photos of the item’s seal, so you can judge its condition before you approve or decline.
Pro feature · 5 of 5
When a customer files a claim, a bank requests evidence, or a regulator opens a case, you need to provide "all the evidence" for one withdrawal. Pro packs everything into one signed file: order details, withdrawal log, customer's receipt, the terms they were shown. The other side can verify it offline, no access to your store needed.
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) | ||
| Country and customer-group targeting | ||
| Guest and logged-in customer flows | ||
| 22 EU languages | ||
| Automatic email receipt (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 | ||
| Order-timeline notes on the order | ||
| Eligibility rules: order status, bundles, undelivered orders | ||
| 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 | — | |
| Seal-photo evidence for sealed items | — | |
NewSeal Photos, an optional Pro add-on for sealed goods (cosmetics, hygiene, supplements, software, media). It adds a photo-upload step to the withdrawal flow, so the seal's condition is on record before you approve or decline. The right of withdrawal ends once the seal is broken (Art. 16(e) of Directive 2011/83/EU).
Compatibility
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
About compliance
Yes. EU law (Art. 11a) 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.
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: under the EU Omnibus Directive (2019/2161), fines for widespread consumer-law breaches can reach up to 4% of annual turnover, and the exposure exists in every member state.
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.
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
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.
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.
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.
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 receipt.
Order number, customer email, the items being withdrawn, an optional reason, and timestamps, all 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
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.
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.
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, with no reinstall and no migration. You get a Composer command and a short upgrade guide right after purchase.
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.
Be the first to leave a review