Kavio Labs Withdrawal Desk for WooCommerce

Description

Since 19 June 2026, online shops that sell to consumers in the EU must offer a withdrawal function: a clearly labelled “Withdraw from contract here” button that is available during the whole withdrawal period, an online statement that ends with a “Confirm withdrawal” button, and an acknowledgement of receipt on a durable medium with the date and time of the statement (Directive (EU) 2023/2673, new Article 11a of the Consumer Rights Directive). Since 27 September 2026, shops must also show the harmonised EU legal guarantee notice before the purchase (Directive (EU) 2024/825, Implementing Regulation (EU) 2025/1960).

This plugin adds both to WooCommerce, for classic and block themes, the classic and the block checkout, and High-Performance Order Storage (HPOS).

Withdrawal function

  • “Withdraw from contract here” in a bar at the bottom of every page (plain HTML, so page caches keep it), in the My Account menu and on the order details (thank-you page and My Account > Orders). A “Withdrawal button” block and the [kvlwd_withdraw_button] shortcode place it anywhere else.
  • Guests and customers: guests find their order with the order number and the e-mail address (failed look-ups are rate limited, a hidden honeypot field stops bots, no CAPTCHA); signed-in customers pick one of their orders.
  • Two steps: the statement (name, e-mail for the confirmation, the order and its items, an optional reason and comment), then a review with one button, “Confirm withdrawal”.
  • Whole order or selected items: consumers withdraw from the whole order, or choose items and quantities. Later statements for the same order only offer what is still open. You can switch item-level withdrawal off in the settings.
  • Acknowledgement e-mail at once with the full content of the statement, the date and time of submission with the time zone, a reference (WD-XXXXXXXX) and what happens next, plus a printable confirmation page. A copy goes to the order e-mail when the consumer used another address.
  • Staff e-mail and a withdrawal register in WooCommerce > Withdrawals: status views, period filter and search, status (received, in progress, refunded, closed, declined), internal notes, “Resend acknowledgement”, link to the order. Every statement also adds an order note; optionally the order moves to a status you choose.
  • Withdrawal period: 14 days (or your number) from the day the order first reaches a “delivered” status; before that the function stays open. Late statements are accepted and flagged “after the period” (or refused with the end date, your choice).
  • Exclusions: mark products without a right of withdrawal (made to measure, perishable, unsealed hygiene goods) with a reason; they are shown as “not covered”.
  • Model withdrawal form (Annex I(B)) with your store’s name, address and e-mail, for consumers who prefer e-mail or post.
  • Double clicks and reloads never create a second statement: every step is signed and the confirmation is idempotent.

EU legal guarantee notice

  • Upload the official notice from the European Commission (the plugin never redraws it) and it is shown unedited, in colour and with its aspect ratio:
    • at the checkout as pre-contract information (block checkout: order summary; classic checkout: above “Place order”), with “View full size”;
    • on the product page (“2-year legal guarantee” row that opens the notice);
    • on a Legal guarantee page linked from the withdrawal bar.
  • A setup checklist tells you what is still missing.

Texts

Every storefront text, including the button labels, can be changed in WooCommerce > Settings > Withdrawal Desk > Texts, so you can use the exact wording of your national law. The plugin ships in English.

Other EU rules

Other EU consumer rules (the GARAN producer guarantee label, the Omnibus lowest prior price and product safety information) are available in a separate plugin by the same authors, EU Consumer Law Kit for WooCommerce.

Not legal advice

This plugin helps you provide information and functions that EU consumer law asks for. It does not make your shop compliant by itself: national rules differ (period lengths, wording, exceptions). Check the rules of your country and ask a lawyer when in doubt.

Screenshots

Blocks

This plugin provides 1 block.

  • Kvlwd Withdrawal Button

Installation

  1. Install and activate the plugin (WooCommerce 10.1 or later is required).
  2. The plugin creates two pages: “Withdraw from contract” and “Legal guarantee”. You can choose other pages in the settings (they need the [kvlwd_withdrawal] and [kvlwd_guarantee] shortcodes).
  3. Open WooCommerce > Settings > Withdrawal Desk. Follow the setup checklist: upload the official EU legal guarantee notice in your store language and check your store address (WooCommerce > Settings > General).
  4. Check the wording of the acknowledgement e-mail in WooCommerce > Settings > Emails > “Withdrawal: acknowledgement of receipt”.

FAQ

Where do I get the legal guarantee notice?

From the European Commission: search for “EU legal guarantee notice and GARAN label” on the Your Europe business portal, or follow the link in the plugin settings. Download the file in the language of your store (PNG or JPG, at least 600 px wide).

Does the withdrawal button work with page caching?

Yes. The bar is plain HTML on every page. The withdrawal page itself is excluded from page caches (it sends no-cache headers and sets DONOTCACHEPAGE), and the form uses nonces for signed-in customers and signed, time-limited tokens for guests.

Can consumers withdraw from part of an order?

Yes. On the statement the consumer chooses “The whole order” or “Selected items” and the quantities. A later statement for the same order offers only what has not been withdrawn yet. Products without a right of withdrawal are listed as “not covered”. You can switch item-level withdrawal off in WooCommerce > Settings > Withdrawal Desk > Withdrawal.

Does it refund the order automatically?

No. You decide and refund in the WooCommerce order (refunds work as usual). The register keeps the status of each statement.

Which data is stored?

The statement (name, e-mail, order, items, optional reason and comment, date and time) and, for 24 hours, a keyed hash of the IP address of failed look-ups (never the address itself). Tools > Export Personal Data includes the statements. They are kept on erasure requests because they prove when a consumer withdrew.

Does the plugin contact external servers?

No. It makes no external requests and has no tracking.

What is removed when I delete the plugin?

Nothing, unless you switch on “Remove data on uninstall”. Then the settings, texts, the withdrawal register and the two pages the plugin created are deleted. Pages you chose yourself in the settings are never deleted, and orders are never changed.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Kavio Labs Withdrawal Desk for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • First release: withdrawal function (bar, account menu, order button, block, shortcode), two-step statement for the whole order or selected items with “Confirm withdrawal”, acknowledgement and staff e-mails, printable confirmation, withdrawal register, model withdrawal form, EU legal guarantee notice at checkout (block and classic), product page and guarantee page, editable texts. HPOS and Cart/Checkout blocks compatible.