Coming soon on WordPress.org

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.

FREE · GPL · No external services
Aligned with EU Directive 2023/2673 Full or partial withdrawal Request log in WooCommerce admin

Works with

WooCommerceHPOSGuest ordersMy Account Multisite compatible

See it in action

Step one: order lookup by number and billing email, guest-friendly
Full or partial withdrawal: the customer sets quantities per item, ticks the declaration and submits
Settings in one screen: withdrawal period, form page, eligible statuses and legal texts, with a request count on top

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.

01

Install

Activate Withdraw alongside WooCommerce.

02

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.

03

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 GitHub

The free edition is the complete withdrawal function, with no account and no external service.