Since 19 June 2026, a WooCommerce shop that sells to EU consumers needs an electronic withdrawal function whenever the order has a statutory withdrawal right. Customers must be able to start the withdrawal from the shop interface during the 14-day cooling-off period. WooCommerce still has no native setting for this, so the work lands in a plugin or custom code.
The confusing part is the route the law took. Directive (EU) 2023/2673 has financial services in the title, but the withdrawal function itself was inserted into the general Consumer Rights Directive. For ordinary B2C ecommerce, that means it can apply just as much to a T-shirt order as to an online course.
The risk that should set your timeline is not the fine. It is the automatic extension of the cooling-off period to twelve months.
TL;DR: Directive (EU) 2023/2673 adds a withdrawal button requirement for distance contracts concluded through an online interface where a consumer has a statutory withdrawal right. The rule applies across the EU from 19 June 2026. In the Netherlands it is implemented through article 6:230oa BW. The function must stay visible during the withdrawal period, collect only the data needed to identify the order, end with a separate confirmation step and send a timestamped acknowledgment by email. WooCommerce has no native support, so you need a plugin or custom flow. If you miss the information duty, the consumer's cooling-off period can stretch to twelve months.
Table of contents
- What the withdrawal button actually is
- Does this apply to your WooCommerce shop?
- What the button has to do, exactly
- The bigger risk is twelve months, not the fine
- WooCommerce has no native support
- When the button does not apply
- Key takeaways
What the withdrawal button actually is
The withdrawal button (Dutch: herroepingsknop) is not a new return policy. It is an online way to use the right of withdrawal that distance buyers already had. The 14-day cooling-off period comes from the Consumer Rights Directive 2011/83/EU and has existed in Dutch law as the wettelijke bedenktijd for years. What changed on 19 June 2026 is the channel: exercising that right must now be possible through a function on the same online interface where the order was placed.
Keep three flows separate. The withdrawal function is about undoing an eligible purchase within the withdrawal period. The return flow (retour) is the logistics that follow after a withdrawal: shipping, inspection and refund handling. The older Wet Van Dam subscription rule is different again, because it deals with cancelling ongoing contracts through the same channel used to sign up. The new button does not replace the model withdrawal form either. It sits next to it.
Does this apply to your WooCommerce shop?
If you sell to consumers and the product or service has a withdrawal right, assume yes until proven otherwise. The directive's title points the wrong way, and that is where shop owners get caught out.
Directive (EU) 2023/2673 replaces the old Distance Marketing of Financial Services Directive, but it also adds article 11a to the general Consumer Rights Directive. That article covers distance contracts concluded through an online interface. As William Fry sets out, the withdrawal function reaches goods, services, digital content, digital services and consumer financial services when the right of withdrawal exists. Clothing, electronics, a downloadable template, an online course: if a consumer buys it through your interface and the withdrawal right applies, the button applies.
The Dutch implementation does not keep the rule in a financial-services corner. Wetsvoorstel 36860 passed the Tweede Kamer on 19 March 2026 and the Eerste Kamer on 7 April 2026. It places the function in article 6:230oa BW, inside the Civil Code section for distance and off-premises consumer contracts. A Dutch WooCommerce shop selling physical products to consumers is therefore squarely in scope. The usual exits remain: B2B-only sales, and product categories where no withdrawal right exists in the first place.
What the button has to do, exactly
The legal text is specific, and a button that only sends an email is not enough. Per the ACM's guidance and the Thuiswinkel.org breakdown of the Dutch articles, the function has to meet four points.
- Use an unambiguous label, such as "Withdraw from contract here" or a local equivalent that leaves no doubt. The ACM gives "mijn aankoop ongedaan maken" ("undo my purchase") as an acceptable Dutch example.
- Keep it visible, easy to find and available during the whole withdrawal period. You cannot hide it behind mandatory account creation or a login wall.
- Run a two-step flow: first a short form with only the data needed to identify the consumer and contract, then a separate confirmation action such as "confirm withdrawal".
- Send an acknowledgment without undue delay on a durable medium. Email is fine. It must include the content of the declaration plus the date and time of submission.
The last point changes how I would build this. A withdrawal submitted within the period is legally valid even if your back office never processes it. The form submission has to be stored server-side before the user sees success. A flaky AJAX handler that drops a request silently is a compliance problem, not just a bug.
The bigger risk is twelve months, not the fine
The Autoriteit Consument & Markt (ACM) enforces this for ordinary webshops. The AFM handles financial-services providers. Fines under the Wet handhaving consumentenbescherming can run up to €900,000 or 1% of annual turnover. ACM board member Martijn Ridderbos put the intent plainly: "Met de verplichte herroepingsknop wordt het voor consumenten straks net zo makkelijk die aankoop ongedaan te maken als deze af te sluiten."
A fine needs an investigation, usually after consumer reports. The quieter consequence is automatic. Under article 6:230o BW, if you fail to inform the consumer about the withdrawal function, the 14-day cooling-off period extends to a maximum of twelve months. No regulator has to act. A customer who bought eleven months ago can still withdraw and be within their rights. For a shop with any volume, that open liability on every eligible order is the bigger exposure.
WooCommerce has no native support
There is no setting to flip. WooCommerce core, as of the 10.8.1 stable release, has returns and refunds tooling built around admins issuing refunds. It does not ship a consumer-facing withdrawal function with the confirmation step and durable-medium acknowledgment article 11a requires. There is also an open WooCommerce feature request for native support, which is a good sign for the roadmap but not a fix for a live shop today. The model withdrawal form many Dutch shops link from their terms does not satisfy the new "function on the interface" requirement either.
The pragmatic route is a plugin. The EU Order Withdrawal Button for WooCommerce (version 2.2.1, 2,000+ active installs) is built for Directive 2023/2673: it exposes the withdrawal form and button through shortcodes for guest and logged-in customers, supports partial withdrawals, sends a confirmation email and lets you confirm or reject requests from the order screen. It ships Dutch, German, Danish and English strings. There are comparable plugins too, including Dutch-specific ones, so this is not a single-vendor situation.
When the button does not apply
The button follows the right of withdrawal. Where that right does not exist, the button obligation does not exist either. WooCommerce shops selling mixed categories can scope this honestly instead of bolting a button onto products it has no legal effect on. The standard exclusions from the Consumer Rights Directive include made-to-order or clearly personalised goods, perishable items, sealed hygiene or health products once unsealed, sealed audio, video or software once opened, and services that have been fully performed with the consumer's prior consent. Digital content delivered immediately, where the consumer agreed to waive the cooling-off period, is another common case.
Pure B2B shops are out of scope entirely, since the withdrawal right is consumer protection. If your WooCommerce store mixes B2C and B2B, do not assume the B2B framing covers you. The button still has to be there for consumer orders, and "we mostly sell to businesses" is not a defence for the consumer side of the catalogue.
One thing not to confuse with this: the proposed EU Digital Fairness Act would add broader cancellation buttons for ongoing subscriptions and address dark patterns more directly. As of mid-2026 it is still a proposal, not law. The withdrawal button is the live obligation today. The rest belongs to a later compliance round.
Key takeaways
- The withdrawal button has been mandatory across the EU since 19 June 2026 under Directive (EU) 2023/2673, implemented in the Netherlands as article 6:230oa BW.
- Despite the directive's financial-services framing, article 11a in the Consumer Rights Directive reaches B2C online sales where a statutory withdrawal right exists.
- The button must be permanently visible during the 14-day cooling-off period, run a form-then-confirmation flow, and send a timestamped acknowledgment by email.
- The risk that should drive your timeline is the automatic twelve-month cooling-off extension for failing to inform customers about the function, not the ACM fine.
- WooCommerce has no native support as of 10.8.1; a purpose-built plugin can work, but verify that it supports the two-step flow, durable-medium confirmation and reliable server-side capture.