Withdrawal Button for Magento 2





Powerful Magento 2 Withdrawal Button for EU Right of Withdrawal Compliance
Make withdrawing from an order as easy as placing one
Under EU Directive 2023/2673, withdrawing from an online order must be just as easy as placing it. For Magento 2 merchants selling to EU consumers, that means a clear, accessible withdrawal button is no longer optional — it's a legal requirement.
The Withdrawal Button extension adds a compliant "herroepingsknop" to your store, so customers can exercise their right of withdrawal within the cooling-off period directly from your webshop. A simple two-step flow, multiple entry points, and automatic confirmation emails make the process effortless for shoppers and fully traceable for you.
Built for merchants, agencies, and developers, the extension handles withdrawal requests end to end — from the customer's click to your admin processing — directly from the Magento admin, without custom development or manual workarounds.

A Simple, Compliant Two-Step Withdrawal Flow
Instead of forcing customers through emails or phone calls, the extension guides them through a clear, friction-free withdrawal process that satisfies the EU requirement for an easy withdrawal path.
The flow has three simple stages:
- Step 1 — the customer clicks "Withdraw" and fills in their order number, email, and an optional reason.
- Step 2 — a confirmation page asks "Are you sure?" before they confirm the withdrawal.
- After confirmation — an instant confirmation email is sent with a timestamp and unique reference ID.
Every request is logged with a full audit trail — created, confirmed, and processed timestamps — so you always have proof the right of withdrawal was respected, on both Hyvä and Luma themes.

Multiple entry points
Offer withdrawal from the customer account, order view, footer link, magic link, and a public guest page.
Simple 2-step flow
A clear form-and-confirm flow with instant confirmation emails keeps withdrawal easy and compliant.
Flexible processing
Choose registration only, semi-automatic, or full automatic handling — and switch whenever you want.
Magento-native
Built specifically for Magento 2, Hyvä-compatible, with full EN and NL translations included.
Choose How Withdrawals Are Processed
Not every store wants the same level of automation, so the extension offers after-action modes you can switch between at any time, matching your operation rather than forcing a fixed workflow.
From manual to fully automatic
Start with registration only to log requests and send emails while your team handles the rest. Move to semi-automatic to notify admins with one-click action buttons, or enable full automatic to auto-cancel unshipped orders and create offline credit memos for shipped ones.
A safe fallback for complex cases
When an order is only partially shipped or otherwise hard to resolve automatically, full-auto mode falls back to registration plus an admin notification — so nothing is ever processed incorrectly behind your back.


Manage Every Withdrawal Request from One Admin Grid
All withdrawal requests live in a single, dedicated grid at Sales → Withdrawal Requests, giving your team one place to track and act on every request.
The grid shows order number, customer, email, store, status, action taken, and key timestamps. Each request can be viewed, processed, or rejected individually, and every request carries a clear status — pending, confirmed, processed, or rejected — plus a record of which admin handled it.
Mass actions for fast processing
Handle requests at scale with built-in mass actions — process or reject multiple requests at once. Combined with the full audit trail, you keep a complete, compliant overview of every withdrawal across all your stores.
Built-in Eligibility Rules and Exclusions
The extension only offers withdrawal where it's actually allowed, using configurable eligibility rules so you stay compliant without exposing orders that don't qualify. An order is eligible when the module is enabled for its store, the status is valid, and it falls within your configured withdrawal period (14 days by default).
Exclude products that don't qualify
You can exclude specific product types, categories, and SKUs — ideal for items exempt from the right of withdrawal, such as personalized goods or certain digital products. Orders with an existing pending or processed request are skipped automatically, and a daily cron job cleans up expired magic-link tokens to keep things secure.
Configurable emails and frontend
Tailor every touchpoint to your store, all from the Magento admin:
- Email templates — customizable customer confirmation and admin notification templates.
- Admin notifications — send alerts to one or more recipients for every new request.
- Magic link in order email — toggle a tokenized, no-login withdrawal URL in order confirmations.
- Footer link — enable a configurable "Withdraw from order" link with your own text.
- Button text & custom CSS — set your own button label and add a CSS class to match your theme.


Reachable from Everywhere — Even Without Login
To be truly "as easy as ordering," withdrawal needs to be where customers look. The extension adds it across five configurable entry points: the customer account, the order view, a footer link, a tokenized magic link in the order email, and a public guest page.
https://yourstore.com/withdrawal
The guest page lets customers withdraw by entering their order number and email — no login required — while the magic link, generated automatically when an order is placed and injected into the order confirmation email, opens the flow in a single click whenever they need it.
Adds an EU Directive 2023/2673-compliant withdrawal button to Magento 2.
Simple two-step withdrawal flow with instant confirmation emails.
Five entry points: account, order view, guest page, magic link, and footer.
Three after-action modes: registration, semi-automatic, and full automatic.
Dedicated admin grid with statuses, audit trail, and mass actions.
Configurable withdrawal period and product/category/SKU exclusions.
Magento 2 Withdrawal Button: Technical Details for Developers and Store Owners
The advantages for developers
The extension is built for Magento 2.4.6 and higher on PHP 8.1+ and follows Magento coding standards. It integrates through native observers, plugins, and layout XML — generating magic-link tokens on sales_order_place_after, injecting the withdrawal URL into order emails, and preloading order eligibility to avoid N+1 queries. All data lives in a single mm_withdrawal table with a clean status model, and a daily cron prunes expired tokens.
Good to know for store owners
For store owners, the module turns a legal requirement into a set-and-forget process. Customers get an easy, compliant way to withdraw from an order; you get a complete audit trail, configurable automation, and a single admin grid to manage everything. Withdrawal period, exclusions, email templates, footer link, and button text are all configurable from the Magento admin — no developer needed to stay compliant.

Stay Compliant with EU Consumer Law — Effortlessly
EU Directive 2023/2673 makes an easy withdrawal path mandatory for online stores selling to consumers. Failing to provide one creates legal and reputational risk; providing a clumsy one frustrates customers and increases support load.
The Withdrawal Button extension solves both. Customers get a clear, trustworthy way to exercise their right of withdrawal, while you get automated logging, flexible processing, and full visibility over every request. For Magento 2 merchants across the EU, it's the simplest way to meet the new requirement, reduce manual work, and build trust at the moment it matters most.
Knowledgebase
All familiar Help articles
A list of the most frequently asked questions from the Withdrawal Button extension for Magento 2. We've tried our best to help you with the installation, configuration and troubleshooting. If you do not find the answer you were looking for, you can always send us a message through this form.
Installation articles
Configuration

Adobe Commerce Marketplace Approved
This extension is listed on the official Adobe Commerce Marketplace and has passed their review process for code quality, performance and security.
Adobe Marketplace approval means the extension follows Magento coding standards and integrates properly with the platform. Updates go through the same review process.

Hyvä Compatible Plugin
This extension includes full support for Hyva Themes. All frontend components, widgets and templates work natively with Hyva's Alpine.js and Tailwind CSS stack.
The extension works out of the box on Hyva and is tested with every new Hyva release to ensure continued compatibility.

GraphQL Made Ready
This extension exposes its data and configuration through Magento's GraphQL API. You can query and mutate data directly from headless frontends or custom applications.
The GraphQL schema follows Magento's conventions and covers all key functionality of the extension. This makes it ready for PWA Studio, Vue Storefront or any other headless setup.

Magento Cloud Support
This extension is fully compatible with Adobe Commerce Cloud (Magento Cloud). It works with the read-only filesystem, the build and deploy pipeline and cloud-specific caching layers.
No additional configuration or workarounds are needed for cloud environments. The extension handles static content deployment and config management the same way as on-premise installations.

Private Composer Repo
After purchase you get access to a private Composer repository with personal credentials. Install and update the extension with a single composer command, just like any other dependency.
Your Composer credentials are available in your account dashboard. Updates are published to the repository as soon as a new version is released, so you always have access to the latest version.