MickSystems Droit de Rétractation 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 API solely to validate a Premium license key. This companion plugin is entirely optional and not required for this plugin to work.

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

Screenshots

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

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.