Title: MickSystems Droit de Rétractation for WooCommerce
Author: micksystems
Published: <strong>July 19, 2026</strong>
Last modified: July 19, 2026

---

Search plugins

![](https://ps.w.org/micksystems-droit-de-retractation-for-woocommerce/assets/banner-
772x250.png?rev=3613706)

![](https://ps.w.org/micksystems-droit-de-retractation-for-woocommerce/assets/icon-
256x256.png?rev=3613691)

# MickSystems Droit de Rétractation for WooCommerce

 By [micksystems](https://profiles.wordpress.org/micksystems/)

[Download](https://downloads.wordpress.org/plugin/micksystems-droit-de-retractation-for-woocommerce.1.10.0.zip)

 * [Details](https://wordpress.org/plugins/micksystems-droit-de-retractation-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/micksystems-droit-de-retractation-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/micksystems-droit-de-retractation-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/micksystems-droit-de-retractation-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/micksystems-droit-de-retractation-for-woocommerce/)

## Description

Starting June 19, 2026, any professional entering into distance contracts through
an online interface and **targeting consumers in France or the European Union** —
regardless of where the business is established — must provide a dedicated, free,
and easily accessible feature allowing the consumer to exercise their right of withdrawal
directly from their customer account (French ordinance n°2026-2 of January 5, 2026,
articles L.221-21 and D.221-5 of the French Consumer Code).

**Scope:** this obligation does not depend on the country where the merchant is 
established, but on whether the business targets consumers in France/the EU (site
language, currency, local delivery offered, etc.). Article L.232-6 of the French
Consumer Code specifies that this protection applies “even where the applicable 
law is that of a third country.” **This plugin does not constitute legal advice**;
if in doubt about your situation, please consult a legal professional.

**MickSystems – Right of Withdrawal for WooCommerce** covers the entire journey,
on both sides:

**Customer side** (“My Account”):

 * A clear information banner on the account dashboard.
 * A direct access button on every eligible order.
 * A 4-step flow: order selection, item and quantity selection, summary with optional
   message, confirmation.
 * An email acknowledgment of receipt (durable medium), with return address and 
   downloadable withdrawal form attached if configured.

**Merchant side** (dedicated dashboard):

 * Summary cards, trend chart, breakdown by status.
 * Per-request processing screen: per-item decision (accept/refuse), native WooCommerce
   refund (including through the payment gateway where supported), discussion thread
   with the customer, timestamped activity log.
 * Settings: withdrawal period, eligible order statuses, custom request reference
   format (auto-acceptance threshold, reminder before deadline, and CSV export are
   available via the optional Premium companion plugin).

The built-in rules engine automatically computes eligibility: legal deadline, order
status, product/variation exclusions (customized, perishable, unsealed, digital 
content, etc.), quantities already requested.

#### What this plugin does

 * Adds a “Right of Withdrawal” tab to My Account, prominently placed on every relevant
   page.
 * Computes eligibility in real time, item by item — never trusting data sent from
   the browser.
 * Lets you exclude specific products/variations (checkbox on the product page),
   with automatic exclusion for Virtual/Downloadable products.
 * Full merchant dashboard: decisions, real WooCommerce refunds, history, statistics.
 * Customizable request reference format (prefix, year, yearly reset, digit count),
   with a `msdr_reference_format` filter for full code-level override.
 * Fully customizable emails, just like any other WooCommerce email (Settings > 
   Emails).
 * Dedicated flow for customers who checked out as guests (order number + email 
   verification), via the `[msdr_guest_retractation]` shortcode.

#### What this plugin does not do

 * It does not capture the customer’s consent at checkout for digital content (waiver
   checkbox) — that remains the merchant’s responsibility, through their own checkout
   flow.
 * It does not generate a carrier return label.

### Third-Party Services

This plugin works entirely locally and makes no external API calls whatsoever. No
data is ever sent to any third-party service.

A separate, optional companion plugin (“MickSystems Droit de Rétractation for WooCommerce
Premium”), distributed independently outside of WordPress.org, adds advanced features
and communicates with the [SureCart](https://surecart.com) API solely to validate
a Premium license key. This companion plugin is entirely optional and not required
for this plugin to work.

 * [SureCart Terms of Service](https://surecart.com/terms-and-conditions/)
 * [SureCart Privacy Policy](https://surecart.com/privacy-policy/)

### Premium version

A separate, optional companion plugin adds advanced features for merchants who want
to go further:

 * Category-based product exclusion.
 * Automation: auto-acceptance below a configurable threshold (with a built-in safeguard—
   partial-quantity requests are never auto-accepted, always reviewed manually),
   and reminders before the legal refund deadline.
 * CSV export of all requests.
 * Pre-filled Terms & Conditions (CGV) panel.
 * Saved response templates, inserted in one click when processing a request.
 * Advanced reporting by withdrawal reason, with a printable PDF export.
 * Customizable list of reasons offered to the customer.

[Learn more and get MickSystems Droit de Rétractation for WooCommerce Premium](https://micksystems.com/droit-de-retractation-woocommerce/)

## Screenshots

[⌊Customer area — choosing the order to withdraw from, with remaining deadline calculated
live ("9 days left", "Last day" badges...).⌉⌊Customer area — choosing the order 
to withdraw from, with remaining deadline calculated live ("9 days left", "Last 
day" badges...).⌉[

Customer area — choosing the order to withdraw from, with remaining deadline calculated
live (“9 days left”, “Last day” badges…).

[⌊Customer area — item selection: the rules engine automatically grays out ineligible
items with their legal reason.⌉⌊Customer area — item selection: the rules engine
automatically grays out ineligible items with their legal reason.⌉[

Customer area — item selection: the rules engine automatically grays out ineligible
items with their legal reason.

[⌊Customer area — confirmation screen after the request is submitted.⌉⌊Customer 
area — confirmation screen after the request is submitted.⌉[

Customer area — confirmation screen after the request is submitted.

[⌊Merchant dashboard — summary cards, trend chart, breakdown by status.⌉⌊Merchant
dashboard — summary cards, trend chart, breakdown by status.⌉[

Merchant dashboard — summary cards, trend chart, breakdown by status.

[⌊Request processing screen — per-item decision (accept/refuse) and native WooCommerce
refund.⌉⌊Request processing screen — per-item decision (accept/refuse) and native
WooCommerce refund.⌉[

Request processing screen — per-item decision (accept/refuse) and native WooCommerce
refund.

[⌊Settings screen — return costs, withdrawal form, automation, CSV export.⌉⌊Settings
screen — return costs, withdrawal form, automation, CSV export.⌉[

Settings screen — return costs, withdrawal form, automation, CSV export.

## Installation

 1. Install and activate WooCommerce.
 2. Copy the `micksystems-droit-de-retractation-for-woocommerce` folder into `/wp-content/
    plugins/`.
 3. Activate the plugin from “Plugins”.
 4. Visit product pages to exclude any ineligible items, if applicable.
 5. Fill in your settings (menu “Withdrawals > Settings”): deadline, return address,
    notification email.
 6. The “Right of Withdrawal” tab appears automatically in the customer account area;
    the “Withdrawals” menu appears in the admin.
 7. _(Optional)_ For customers who checked out without an account, create a page (e.
    g. “Order Tracking”) containing the `[msdr_guest_retractation]` shortcode.

## FAQ

### Does this plugin only apply to merchants established in France?

No. The obligation depends on whether you target consumers in France/EU (language,
currency, delivery), not on your country of establishment. See the “Scope” section
above. This is not legal advice.

### Is the 14-day deadline configurable?

Yes, from the “Withdrawals > Settings” menu, or via the `msdr_withdrawal_period_days`
filter.

### Can I exclude a product from the right of withdrawal?

Yes, directly from the “General” tab of the product page (and per variation).

### Does the plugin handle return shipping costs?

You choose who bears them in Settings. Legal reminder: if the customer isn’t informed
of this rule before purchase (terms of service, product page), the cost automatically
falls back to the merchant.

### Compatible with High-Performance Order Storage (HPOS)?

Yes, compatibility declared and tested.

### Can a guest customer (no account) request a withdrawal?

Yes, via the `[msdr_guest_retractation]` shortcode placed on a page of your choice.
The customer identifies themselves with their order number and the email used at
checkout; access is temporary (30 minutes) and limited to that single order.

### Is there a Premium version?

Yes. This free plugin is fully functional on its own. An optional companion plugin
adds advanced features (automation, CSV export, advanced reporting, and more) — 
see the “Premium version” section above.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“MickSystems Droit de Rétractation for WooCommerce” is open source software. The
following people have contributed to this plugin.

Contributors

 *   [ micksystems ](https://profiles.wordpress.org/micksystems/)

[Translate “MickSystems Droit de Rétractation for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/micksystems-droit-de-retractation-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/micksystems-droit-de-retractation-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/micksystems-droit-de-retractation-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/micksystems-droit-de-retractation-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/micksystems-droit-de-retractation-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.10.0

 * New setup wizard (dismissible admin notice, never a forced redirect on activation):
   eligible order statuses, return address, notification email, and return cost 
   bearer — four steps, always skippable, no Premium upsell anywhere in the flow.
 * Merchant dashboard: new “Last day” summary card, now always visible (previously
   hidden unless at least one request was overdue), and a new “Deadline” column 
   on the request list showing remaining days, “Last day”, or “Overdue” per request.
 * Fixed: the “requests approaching refund deadline” count now also includes requests
   still pending review, not only accepted ones — the 14-day legal refund clock 
   starts when the withdrawal request is received, not when a merchant accepts it.
 * Settings screen redesign: grouped navigation with icons (Compliance / Automation&
   data / Other) replacing the flat tab list, and each section now presented as 
   distinct cards instead of a single table.
 * Sidebar Documentation and Support cards are now always visible, including when
   the Premium plugin is active (previously hidden alongside the Premium upsell 
   card).

#### 1.9.0

 * Renamed the plugin (“MickSystems – Right of Withdrawal for WooCommerce”) to comply
   with WordPress.org trademark guidelines, which now reserve the term “WooCommerce”
   in a plugin’s name and slug. No functional change: the plugin remains specifically
   designed for WooCommerce, as stated in the description.

#### 1.8.0

 * New “Terms & Conditions wording” panel (Settings): ready-to-copy paragraph for
   your Terms of Service, generated from your existing settings (deadline, return
   address, guest page).
 * Reorganized the settings screen into distinct sections (Eligibility, Notifications,
   Refunds & Returns, Automation, Uninstall) for better readability.

#### 1.7.1

 * Withdrawal flow button labels aligned with the wording recommended by article
   D.221-5 (“Withdraw from contract” at entry, “Confirm withdrawal” at final submission).
 * “Save settings” button added at the bottom of the settings screen (in addition
   to the one on the first section).

#### 1.7.0

 * Exclusion by product category (Settings > Product Exclusions): useful for shops
   with many customized products, without having to check each product page individually.

#### 1.6.0

 * Withdrawal flow for guest customers (no account), via the `[msdr_guest_retractation]`
   shortcode: order number + email verification, temporary signed access token (
   30 minutes), rate limiting against automated attempts.

#### 1.5.0

 * Complete plugin rename (new name, new slug) to comply with WordPress.org naming
   guidelines.
 * Added the `Requires Plugins` header (WooCommerce dependency natively declared).
 * Clarified the geographic/legal scope in the description and FAQ.
 * Dashboard charts: trend line and status breakdown, in native SVG (no external
   dependency).
 * Settings: return address and costs, downloadable withdrawal form, auto-acceptance
   threshold, reminder before legal deadline, CSV export.

#### 1.4.4

 * Fix: the message sent to the customer was being copied into the internal note(
   leftover from before the dedicated discussion thread existed). The internal note
   now only contains what the merchant explicitly enters there.

#### 1.4.3

 * Fix: a PHP warning (“Deprecated: htmlspecialchars() Passing null…”) was displayed
   in the “Internal note” field for any request without a note yet (unprotected 
   NULL value).

#### 1.4.2

 * Fix: the activity log displayed raw HTML markup from `wc_price()` instead of 
   the plain-text refund amount.

#### 1.4.1

 * Clarified the processing screen: the two steps (decision, then refund) are now
   visually separated and explained, to avoid any ambiguity about the order of actions.

#### 1.4.0

 * New per-request discussion thread: keeps the full content of every message (customer
   at creation, merchant at each decision), with delivery status — full traceability
   in case of a dispute, separate from the technical activity log.

#### 1.3.2

 * Fix: it was impossible to send a message to the customer without deciding on 
   an item at the same time (“No valid decision to save” even with a message filled
   in). A message alone is now accepted and sent.

#### 1.3.1

 * Fix: re-saving an identical decision sent a new email to the customer. The customer
   is now only notified if something actually changed.

#### 1.3.0

 * “Send test email” button in Settings: sends all 3 emails (customer acknowledgment,
   merchant notification, decision) to an address of your choice, based on a real
   order, without writing to the database or notifying the real customer.

#### 1.2.0

 * Customizable request reference (prefix, year, yearly reset, digit count) from
   Settings, with live preview.
 * New `msdr_reference_format` filter for full code-level override.

#### 1.1.2

 * Fix: the completed-step checkmark (admin stepper) inherited an inline SVG attribute
   forcing a dark color instead of the intended white.
 * Fix: the progress line after the “in progress” step should not be colored until
   it is completed.

#### 1.1.1

 * New step indicator design on the customer side (circles + checkmark, no underline).
 * Fix: an error message could remain displayed after a subsequent successful navigation.
 * Improved diagnostics: a non-JSON server response is now explicit (and logged 
   to the console) instead of an obscure message.

#### 1.1.0

 * Full admin module: dashboard, processing screen (accept/refuse per item, real
   refund via WooCommerce), settings, activity log, progress stepper.
 * New “decision” email sent to the customer when their request is processed.
 * Customer interface overhaul: relies on native WooCommerce classes to automatically
   adapt to the active theme.
 * Repositioning: the withdrawal entry point now appears first on every relevant
   page (dashboard, orders, order detail).

#### 1.0.0

 * First release: complete customer flow.

## Meta

 *  Version **1.10.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.6 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [e-commerce](https://wordpress.org/plugins/tags/e-commerce/)[refund](https://wordpress.org/plugins/tags/refund/)
   [withdrawal](https://wordpress.org/plugins/tags/withdrawal/)[woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/micksystems-droit-de-retractation-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/micksystems-droit-de-retractation-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/micksystems-droit-de-retractation-for-woocommerce/reviews/)

## Contributors

 *   [ micksystems ](https://profiles.wordpress.org/micksystems/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/micksystems-droit-de-retractation-for-woocommerce/)