Title: DrSmart Withdrawal &amp; Cancellation Requests for WooCommerce
Author: drsmartmodules
Published: <strong>August 17, 2026</strong>
Last modified: August 17, 2026

---

Search plugins

![](https://ps.w.org/drsmart-withdrawal-cancellation-for-woocommerce/assets/banner-
772x250.png?rev=3650924)

![](https://ps.w.org/drsmart-withdrawal-cancellation-for-woocommerce/assets/icon-
256x256.png?rev=3651224)

# DrSmart Withdrawal & Cancellation Requests for WooCommerce

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

[Download](https://downloads.wordpress.org/plugin/drsmart-withdrawal-cancellation-for-woocommerce.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/drsmart-withdrawal-cancellation-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/drsmart-withdrawal-cancellation-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/drsmart-withdrawal-cancellation-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/drsmart-withdrawal-cancellation-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/drsmart-withdrawal-cancellation-for-woocommerce/)

## Description

Since 19 June 2026, Article 11a of the Consumer Rights Directive requires an online

withdrawal function that is prominently displayed, easy to find and continuously
available throughout the withdrawal period. Withdrawing must not be harder than 
buying was.

This plugin adds that function to your store, records every declaration as dated

evidence with its own reference number, and gives you a back office to work through
the requests.

A declaration is accepted even when no order can be matched. That is deliberate:

the consumer’s right does not depend on your shop finding their record.

#### Six languages, and two separate language settings

The plugin ships with complete Dutch, German, French, Spanish and Italian
 translations
alongside English as the source language, using the legal terminology each country
actually uses rather than a literal rendering of the English.

There are two language settings, not one: what your customers see and what your

own back office shows. A Dutch shop run from an English admin sends Dutch customers
Dutch notices, which is impossible when a plugin simply follows the site language.

Every string is translation-ready and the .pot file is included, so any further

locale can be added through translate.wordpress.org.

#### What your customers get

 * A clear two-step form: identify the purchase, then declare the withdrawal
 * Works for guests and for logged-in customers alike
 * Partial withdrawal: select which order lines and which quantities
 * No reason required, because the directive does not oblige consumers to give one
 * A confirmation e-mail with their reference number
 * A printable confirmation document behind a signed link, valid for two years, 
   which they can save as PDF as proof they declared in time

#### What you get

 * Requests list with search, status filters, sorting and a deadline column that
   flags what is expiring
 * Detail screen with four independent statuses: declaration, return, exchange and
   refund, each with its own permitted transitions
 * Full history of every status change, with internal notes
 * Sequential reference numbers, generated atomically so two customers submitting
   in the same second can never share one
 * Deadlines calculated from the delivery date, not the order date, as the directive
   requires
 * A panel on the WooCommerce order screen showing any linked request, so nobody
   processes a refund without seeing it
 * Every e-mail logged, sent or failed, so you can answer a customer who says they
   never received their confirmation

#### Privacy and retention

 * Nothing is sent to any external service. All data stays in your own database.
 * IP addresses and user agents are not stored unless you switch that on, and are
   hashed where they are used at all.
 * Optional automatic anonymisation once your retention period ends: personal data
   is overwritten, the dated record of the declaration is kept.
 * Native integration with Tools then Export and Erase Personal Data, plus suggested
   privacy policy wording.
 * Data is preserved on uninstall by default, because declarations are evidence 
   you may be required to produce.

#### WooCommerce

WooCommerce is not required, but without it a declaration cannot be matched to an

order. With it you get order matching on number plus e-mail address, order lines
with already-refunded quantities deducted, delivery-date deadlines and the order
screen panel.

Compatible with High-Performance Order Storage and with legacy order storage: all

order access goes through the WooCommerce CRUD layer, so no query touches the posts
tables directly.

#### For developers

Filters and actions throughout: `drs_wd_registered_features`, `drs_wd_settings_schema`,

drs_wd_status_transitions, `drs_wd_resolve_order_number`, `drs_wd_delivery_date`,
drs_wd_client_ip, `drs_wd_reason_options`, `drs_wd_evidence_number`, `drs_wd_mail`,
drs_wd_declaration_created, `drs_wd_status_changed`, `drs_wd_request_anonymised`.

Templates can be overridden from your theme by copying them to
 yourtheme/eu-withdrawal/.

No Composer dependencies, no bundled libraries, PHP 7.4 baseline.

## Installation

 1. Install and activate the plugin. A page called “Withdrawal and cancellation” is
    created automatically with the form on it.
 2. Go to Withdrawals then Settings and set your notification address, sender address
    and return address.
 3. Set the customer language if it should differ from your site language.
 4. Link the page from your footer or main menu so it is findable from every page, 
    as the directive requires.

## FAQ

### Does this plugin guarantee legal compliance?

No. The plugin provides technical building blocks such as a discoverable withdrawal

function, a two-step flow, deadline calculations, customer acknowledgements and 
an audit trail. Legal compliance also depends on your products, notices, terms, 
store configuration and jurisdiction. No plugin can guarantee legal compliance. 
This plugin is not legal advice; have a qualified consumer-law specialist review
your implementation.

### Why does the form still accept a request after the 14 days have passed?

Because the period can be extended by up to twelve months if the consumer was not

properly informed of their withdrawal right. That judgement belongs to you, not 
to a form. The request is recorded and flagged as expired, and you decide.

### Can customers withdraw from part of an order?

Yes. They select the lines and the quantities. Quantities already claimed in other

requests, and quantities already refunded in WooCommerce, are deducted.

### Where is the confirmation document?

A link is included in the customer’s confirmation e-mail and at the top of the
 
request in your back office. It opens a printable page they can save as PDF. The
link is signed and cannot be altered to reach another customer’s document.

### What happens to my data if I delete the plugin?

Nothing, by default. Declarations are evidence you may be required to keep, so
 
they are preserved unless you explicitly opt out in the settings.

### Does it work without WooCommerce?

Yes, as a standalone declaration form. Order matching, order lines and refunds
 
require WooCommerce.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“DrSmart Withdrawal & Cancellation Requests for WooCommerce” is open source software.
The following people have contributed to this plugin.

Contributors

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

[Translate “DrSmart Withdrawal & Cancellation Requests for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/drsmart-withdrawal-cancellation-for-woocommerce)

### Interested in development?

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

## Changelog

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.0.0**
 *  Last updated **11 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cancellation](https://wordpress.org/plugins/tags/cancellation/)[consumer rights](https://wordpress.org/plugins/tags/consumer-rights/)
   [returns](https://wordpress.org/plugins/tags/returns/)[withdrawal](https://wordpress.org/plugins/tags/withdrawal/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/drsmart-withdrawal-cancellation-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/drsmart-withdrawal-cancellation-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/drsmart-withdrawal-cancellation-for-woocommerce/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/drsmart-withdrawal-cancellation-for-woocommerce/)