Withdraw
A right of withdrawal button for WooCommerce
Withdraw gives customers a clear way to withdraw from a distance contract, in line with EU Directive 2023/2673 (Art. 11a). The customer looks up the order, picks items and quantities, and the shop gets a logged request with an email and a status. You process any refund yourself, in the normal order screen.
Works with
See it in action
Email withdrawals get lost and leave no trace
EU Directive 2023/2673 asks for an easy withdrawal function in the shop, not an email address buried in the terms. Without one, withdrawal notices arrive by email, mix with the rest of the inbox and nobody knows which have been handled.
- ✗ Withdrawal notices arrive by email and get lost
- ✗ No record of who withdrew from which items and when
- ✗ Guests without an account have no way to declare a withdrawal in the shop
- ✗ Art. 11a of Directive 2023/2673 asks for a withdrawal function in the shop interface
Withdraw records the declaration and keeps a log
- ✓ Renders a two-step withdrawal form via the [withdraw_form] shortcode
- ✓ Checks the order status and the withdrawal period before accepting a request
- ✓ Stores the request and emails the customer and the shop
- ✓ Never moves money: you refund in the standard order screen
What you get in the free version
The complete withdrawal function: form, My Account button, request log and emails.
Withdrawal form
The `[withdraw_form]` shortcode renders a two-step form: look up an order by number and billing email, then select items and submit the declaration.
Full or partial withdrawal
The customer chooses how many of each item to withdraw from and can add a reason.
My Account button
A Withdraw from this order button appears under the order details and links to your withdrawal page with the order pre-filled.
Withdrawal period
Configurable from 1 to 365 days (statutory minimum 14), measured from order completion or, if never completed, from the order date.
Request log
A WooCommerce → Withdrawal Requests screen lists every request with its items, customer and one of four statuses, filterable by status.
Emails
An automatic confirmation to the customer and a notification to the shop at the address you choose.
Editable legal texts
The form intro and the model withdrawal text (Annex I.B) are edited in the settings.
Guests and HPOS
The order-number plus billing-email lookup works without an account; orders are read through the HPOS-compatible WooCommerce order API.
Up and running in three steps
A page with the shortcode and a minute in the settings is enough.
Install
Activate Withdraw alongside WooCommerce.
Add the form page
Create a page with the [withdraw_form] shortcode and select it under WooCommerce → Withdrawal, so the My Account button has somewhere to link.
Set the rules
Choose the withdrawal period, eligible order statuses, the notification email and the legal texts.
Who it is for
Stores selling to EU consumers that want withdrawals in one place instead of the inbox.
EU consumer sales
The store gets a visible withdrawal function matching the model in Directive 2023/2673: the customer declares, the trader acts.
- ✓ Art. 11a
- ✓ Model withdrawal text
- ✓ 14+ day period
Stores with guest orders
A customer without an account looks up the order by number and billing email and submits the declaration.
- ✓ No account
- ✓ Number + email
- ✓ My Account button
Organised returns handling
Each request has items, a date and a status, and you refund deliberately in the order screen.
- ✓ Four statuses
- ✓ Status filter
- ✓ No automatic refunds
Support and resources
Every plugin has its own documentation with setup walkthroughs. Bugs and questions go to the public GitHub repository for that plugin, we answer in the open.
Frequently asked questions
Does it issue refunds automatically?
No. Withdraw records the withdrawal declaration and tracks its status, and you process any refund in the normal WooCommerce order screen. That matches the legal model: the customer declares, the trader acts.
Does it work for guest orders?
Yes. Customers look up their order with the order number and the billing email used at checkout, so no account is needed.
How is the withdrawal period measured?
From the order completion date (a delivery proxy) or, if the order was never completed, from the order date. You set the length in the options, from 1 to 365 days, with a statutory minimum of 14 days.
Can a customer withdraw from part of an order?
Yes. The form lists the order items with quantity fields, so the declaration can cover the whole order or selected units.
Is this legal advice?
No. The plugin provides the technical withdrawal function and editable texts. Adapt the period and wording to your jurisdiction and the statutory model withdrawal form.
Is it compatible with HPOS?
Yes. Orders are read through the WooCommerce order API, which is HPOS-compatible.
Add a right of withdrawal button
A withdrawal form, a My Account button, a request log and emails. The full FREE edition under GPL.
View on GitHubThe free edition is the complete withdrawal function, with no account and no external service.