As of yesterday, June 19, 2026, a new EU regulation is in effect that catches most WooCommerce store owners completely off guard. If you sell anything to customers in the European Union — physical products, digital downloads, subscriptions — you now need a clearly visible withdrawal button on your website. Not a buried link in your footer. Not an email address. An actual, clickable function that lets customers cancel their order online, the same way they placed it.
The fine for ignoring this? Up to €50,000, or 4% of your EU revenue, whichever is higher.
What changed and why it matters
The requirement comes from EU Directive 2023/2673, which amended the Consumer Rights Directive with a new Article 11a. The logic is simple: if a customer can buy something online, they should be able to withdraw from that purchase online too. All 27 EU member states were required to pass implementing legislation by December 2025, and the rules took effect across the bloc on June 19.
Here's what the law actually requires. Your store needs a clearly visible withdrawal link or button. The process must be two steps — click to request, then confirm. You must send the customer an automatic confirmation with a date and timestamp. And the button has to stay accessible for the entire withdrawal period, which is typically 14 days after delivery. It also has to work for guest customers, not just people with accounts.
The withdrawal right itself isn't new. EU customers have had 14-day cooling-off periods for years. What changed is how they exercise that right. Before, a customer could email you or fill out a form. Now, you have to give them a button.
Why U.S. stores aren't exempt
A lot of American store owners assume EU consumer laws only apply to businesses based in Europe. That's wrong. If your WooCommerce store ships to EU countries, displays prices in euros, offers a local-language version, or runs targeted marketing to EU consumers, you're subject to these rules. The directive applies based on where your customers are, not where your business is registered.
That means a Shopify or WooCommerce store based in Texas that ships to Germany needs the same withdrawal button as a store based in Berlin. If you've ever processed an order from an EU address, this applies to you.
WooCommerce doesn't have this built in
Unlike some hosted platforms that are rolling out compliance features automatically, WooCommerce doesn't include a withdrawal function out of the box. You'll need a plugin or custom development to add one.
A few options are already available. Krokedil, a Swedish WooCommerce specialist, released a plugin called Returns and Withdrawals that adds a self-service withdrawal flow for both logged-in and guest customers. It handles the two-step process, sends automatic confirmations, and meets the directive's requirements. The plugin is free for basic use with premium features for more complex stores.
If you're comfortable with code, you could also build a custom withdrawal page using WooCommerce's order management hooks. The key requirements are: a visible button linked from order confirmation emails and account pages, a confirmation step so customers can't accidentally cancel, and automatic logging with timestamps.
What to do today
Check your store's traffic in WooCommerce analytics or Google Analytics. Look at orders from EU countries over the last six months. If you're getting any EU traffic at all, you need to act.
Install a withdrawal plugin or add the functionality manually. Test the flow yourself — place a test order, find the withdrawal button, go through the process, and confirm you get the automatic email. Make sure guest customers can access it too, since that's where most stores fall short.
Update your terms and conditions to reference the online withdrawal function. The old language about "email us to cancel" no longer meets the legal standard.
This isn't one of those regulations you can safely ignore for a few months while you figure it out. It's already in effect, and EU consumer protection agencies tend to enforce these rules actively. The good news is the fix is straightforward — a plugin install and a few minutes of configuration. The bad news is if you haven't done it yet, you're already a day late.