The online withdrawal button on WooCommerce.
From 19 June 2026, Italian online shops selling to consumers must offer an online function to withdraw from the contract. We wrote the plugin that implements it, without forcing anyone to register.
Legislative Decree 209/2025, implementing EU Directive 2023/2673, added article 54-bis to the Italian Consumer Code: B2C shops must offer an online withdrawal function. Our plugin creates the withdrawal page, finds the order by number and email even for guest checkouts, handles partial withdrawal, sends a receipt with a PDF and keeps an exportable log.
Context
We run several WooCommerce shops for clients. With the obligation approaching, each shop needed the same function, done properly and maintained over time, while some vendors were pitching third-party solutions.
The problem
The rule asks for a clearly visible function, available for the whole withdrawal period, with an explicit confirmation and a receipt on a durable medium. Many customers buy without an account, so requiring a login is not an option: it risks hindering withdrawal rather than enabling it.
What we did
- 01
A page that creates itself
On activation the plugin creates the /recesso page with the form. The link goes in the footer, reachable from every page.
- 02
No account needed
Customers find their order with order number and email. It works the same for guest orders and registered customers.
- 03
Partial withdrawal and exclusions
Items are selected one by one and re-checked server-side. Products excluded by law, such as made-to-order or perishable goods, are flagged on the product page.
- 04
Deadlines computed
The 14 days run from delivery. Without shipment tracking, the plugin estimates delivery with a configurable number of days and offers a filter to use the real date when available.
- 05
Receipt and log
Native WooCommerce emails with a PDF attached, a request number, receipt delivery status, an admin panel with CSV export. Compatible with HPOS order storage.
How it went
The plugin has been in production on a B2C shop since version 1.2.4, after testing on real orders. For a subscription video platform that doesn't run on WooCommerce, we did the compliance analysis against the same article, with the changes to request from the vendor.
Tools
FAQ
Does the customer need an account to withdraw?
No, and requiring one is risky. The plugin finds the order by number and email.
Is a generic contact form enough?
No. It takes a dedicated, clearly visible function with explicit confirmation and a receipt. The plugin covers the technical requirements; the legal assessment of each shop stays with your adviser.