Just Launched

Withdrawal Button for Magento 2

star star star star star star star star star star Based on 2 reviews
The Magento 2 Withdrawal Button extension adds an EU Directive 2023/2673-compliant withdrawal button to your store, allowing customers to withdraw from an order just as easily as they placed it. A simple two-step process, multiple access points, and automated handling help you stay compliant while keeping administrative work to a minimum.
Browse Changelog
Links
15 day Money Back Guarantee One Time Payment
Magento Cloud Support Hyvä Support Adobe Approved Private Composer Repo
Includes these free add-ons
magmodules/magento2-withdrawal-button-hyva ...
Changelog v1.4.1 | Documentation
Already trusted by Magento merchants — recently launched and updated frequently, last: v1.4.1 on July 9, 2026.

Powerful Magento 2 Withdrawal Button (Return 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 withdrawal button (also known as a return button) to your store, so customers can exercise their right of withdrawal within the cooling-off period directly from your webshop — for the whole order or per individual item. 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.

Magento 2 Withdrawal Button / return button extension for EU compliance

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 the withdrawal button (return button), selects which items and quantities to withdraw, and fills in their order number, email, and an optional reason.
  • Step 2 — a confirmation page asks "Are you sure?" and shows a breakdown of the selected items before they confirm the withdrawal.
  • After confirmation — an instant confirmation email is sent with a timestamp and unique reference ID.

The withdrawal form shows a clear item table with checkboxes, quantity inputs, and already-withdrawn quantities, while pending (non-invoiced) orders show a read-only table with a "cancel the entire order" message. 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.

Magento 2 two-step withdrawal confirmation flow

Partial withdrawal

Let customers select individual items and quantities to withdraw — or the entire order in one go.

Multiple entry points

Offer withdrawal from the customer account, order view, footer link, magic link, and a public guest page.

Flexible processing

Choose registration only, semi-automatic, or full automatic handling — with full or partial credit memos.

Magento-native

Built specifically for Magento 2, Hyvä-compatible, with a read-only REST API and translations in all 24 EU languages.

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 — for the whole order or only the selected items. Shipping costs are refunded only on the last credit memo, once all items are fully refunded.

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.

Magento 2 withdrawal after-action processing modes
Magento 2 Withdrawal Requests admin grid

Manage Every Withdrawal Request from One Admin Grid

All withdrawal requests live in a single, dedicated grid at Sales → Operations → 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. The detail page is designed to match the native Magento order view, with a "Withdrawn Items" section and action buttons in the page toolbar, and a comment is automatically added to the order history on submit, process, and reject.

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). You decide which order statuses qualify — including custom PSP statuses from providers like MultiSafePay, Mollie, or Adyen.

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. Thanks to item-aware eligibility, partially withdrawn orders remain eligible for their remaining items, while orders with an existing pending or processed request are skipped automatically. 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 return-button or "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.
Magento 2 withdrawal eligibility and exclusion settings

Magento 2 withdrawal request entry points

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 (with a withdrawal link in the Account Information section), 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 (return button) to Magento 2.

Item-level partial withdrawal: customers select individual items and quantities.

Two-step flow with instant confirmation emails and five entry points (account, order view, guest page, magic link, footer).

Three after-action modes with full or partial credit memos.

Admin grid with statuses, audit trail, mass actions, order-history comments, and a read-only REST API.

Configurable withdrawal period, order statuses (incl. PSP), and exclusions; translations in all 24 EU languages.

Magento 2 Withdrawal Button & Return 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. A read-only REST API (GET /V1/withdrawal/:id and GET /V1/withdrawal) exposes requests for integrations, and order-history comments are added on every action. All data lives in a single mm_withdrawal table with a clean status model, and a daily cron prunes expired tokens. Quality is enforced with GitHub Actions CI (codesniffer, PHP linting, PHPStan, and 55 E2E tests), and the module is backward compatible with v1.0 whole-order withdrawals.

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 or individual items; you get a complete audit trail, configurable automation, and a single admin grid to manage everything. Withdrawal period, eligible order statuses, exclusions, email templates, footer link, and button text are all configurable from the Magento admin — no developer needed to stay compliant.

Magento 2 Withdrawal Button / return button EU compliance overview

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 — also known as a return button — 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.

Frequently

Asked Questions

A list of the most frequently asked questions from the Withdrawal Button extension for Magento 2 form.

chevron-right What is the EU withdrawal button and does my Magento 2 store need one?

chevron-right How long is the right of withdrawal (cooling-off period) in the EU?

chevron-right Which products are exempt from the right of withdrawal?

chevron-right Does the withdrawal button only apply to financial services?

chevron-right What does a compliant withdrawal flow need?

2 of many customers

Rate this plugin with 10 out of 10

Perfect soluition

With the new regulations, I was looking for a ready-made solution for my customers. This module does exactly what I was looking for!

If the customer is logged in, they can revoke an order, either partially or fully, with a few simple clicks. If you are not logged in, simply enter the order number and email address via a form for a quick and easy revision.

Also, super support. Fast and friendly communication.
Maikel Vugts |
star star star star star star star star star star

Great Extension, Even Better Support

We encountered an issue with the first version of this extension: it did not support all (custom) order statuses. Within 24 hours, the developers released an updated version that added this functionality. Excellent support and a very fast turnaround. Shout-out to the Magmodules team!
Cream Agency |
star star star star star star star star star star
Load more reviews
Loading...

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

arrow-circle-right Installation using Composer (recommended) arrow-circle-right Installation using the Adobe Marketplace arrow-circle-right Install through FTP and SSH

Configuration

arrow-circle-right Configuration Guide arrow-circle-right Quick Start Guide

Changelog 1.4.1 is released on 9 July 2026

Our plugins are regularly updated to ensure compatibility with the latest Magento release.

Version 1.4.1 9 July 2026
    Bugfixes:
  • Send admin notification email regardless of after_action_mode.
  • Minimum requirements:
  • Magento 2.4.x & PHP 8.1
Version 1.4.0 3 July 2026
    Features:
  • Added excluded items as non-selectable in withdrawal form.
  • Minimum requirements:
  • Magento 2.4.x & PHP 8.1
Version 1.3.0 29 June 2026
    Features:
  • Added "My Withdrawals" customer account page with list and detail views.
  • Added "Withdraw from Order" button on the customer withdrawal list page.
  • Improvements:
  • Added Dutch translations for all new customer account strings.
  • Bugfixes:
  • Fixed missing magic link in order confirmation emails caused by a getTransportObject() camelCase key mismatch.
  • Minimum requirements:
  • Magento 2.4.x & PHP 8.1
Version 1.2.0 25 June 2026
    Features:
  • Add bundle product per-child withdrawal support
  • Minimum requirements:
  • Magento 2.4.x & PHP 8.1
Version 1.1.0 23 June 2026
    Features:
  • Item-level partial withdrawal: customers can select individual items and quantities to withdraw
  • Read-only REST API with `GET /V1/withdrawal/:id` and `GET /V1/withdrawal` (search criteria)
  • Order history comments on withdrawal submit, process, and reject
  • Configurable eligible order statuses (supports custom PSP statuses like MultiSafePay, Mollie, Adyen)
  • All 24 EU language translations (bg, cs, da, de, el, es, et, fi, fr, ga, hr, hu, it, lt, lv, mt, pl, pt, ro, sk, sl, sv)
  • GitHub Actions CI: codesniffer, PHP linting, PHPStan, E2E tests
  • Withdrawal link in order view Account Information section
  • Menu moved under Sales > Operations
  • Improvements:
  • Withdrawal form shows item selection table with checkboxes, qty inputs, and already-withdrawn quantities
  • Pending (non-invoiced) orders show read-only items table with "cancel entire order" message
  • Partial withdrawal UI hidden for non-invoiced orders
  • Confirmation and success pages show selected items breakdown
  • Admin withdrawal view redesigned to match native Magento order view layout
  • Admin action buttons (Process, Reject, Back, View Order) moved to page header toolbar
  • Admin withdrawal detail page shows "Withdrawn Items" section
  • Full automatic mode creates partial credit memos for selected items only
  • Shipping costs only refunded on the last credit memo (all items fully refunded)
  • Eligibility checker is item-aware: partially withdrawn orders remain eligible
  • Reuse existing token record from observer instead of creating duplicate withdrawal records
  • Backward compatible with v1.0 whole-order withdrawals
  • 23 new E2E tests (55 total)
  • Minimum requirements:
  • Magento 2.4.x & PHP 8.1
Version 1.0.0 16 June 2026
plus-circle Click here to expand the Changelog
minus-circle Click here to hide the Changelog

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.

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.

star star star star star
star star star star star
Gaaf - digital agency
We have tried the integration with SnelStart through several different providers, and this is the only solution that simply works. We needed support on two occasions, and it was provided quickly and professionally. We do recommend this company!
Google 12 May 2026
star star star star star
star star star star star
Andrew Velikiy
Great vendor with handy modules and quick support!
Google 13 Apr 2026
star star star star star
star star star star star
Alexandru-Manuel Carabus
Magmodules sets the bar for Magento module quality and support—we check their catalog first for client feature requests, and they’re our first choice for licenses.
Google 11 Nov 2025
star star star star star
star star star star star
Matt Austin
Possibly the fastest support response times of any Magento Extension vendor. Great extensions too!
Google 09 Sep 2025
star star star star star
star star star star star
Jan Privé
Dankzij de heldere uitleg en snelle reactie van Magmodules kon mijn vraag, en dus mijn Magento-probleem, binnen enkele uren worden beantwoord. Doeltreffend, zonder moeilijke termen, gewoon zo als het zou moeten zijn.... Bedankt!
Google 05 Sep 2025
star star star star star
star star star star star
Denis Metzler
To evaluate a provider, it is not enough to consider only the product offered, but also its after-sales service, such as support and troubleshooting. Magmodules has been extremely satisfactory at all levels on multiple occasions and sets the bar at the top when comparing the competition.
Google 02 Sep 2025
star star star star star
star star star star star
Bleijenberg winkelinrichting en materialen
Goed bereikbaar, reageren snel en denken oplossingsgericht. Een aanrader.
Google 30 Jul 2025
star star star star star
star star star star star
Patrick Verduijn
Magmodules biedt plugins aan die van hoge kwaliteit zijn tegen een goede prijs, waar dit bedrijf in uitblinkt is de bereidheid om de zeldzame feedback & problemen met de plugins te willen onderzoeken, mee te willen denken in het debuggen van problemen en goede oplossingen toe te passen. In mijn decennium ervaring met Magento & 3th parties is Magmodules absoluut een uniqum binnen de markt.
Google 25 Jul 2025
star star star star star
star star star star star
Erik de Groot
Magemodules heeft hele sterke Magento extensies en een proactieve support. Al jaren heel erg tevreden over jullie service en producten!
Google 18 Jul 2025
star star star star star
star star star star star
René Zeuner
We are using the Mollie Magento extension from Magmodules. It works excellently without flaws. Very fast, competent and friendly support. Thanks!
Google 30 Jun 2025