Since 19 June 2026 (in Austria for contracts concluded from 1 October 2026), every online shop selling to consumers in the EU needs a withdrawal button: customers must be able to withdraw from a purchase through a clearly labelled function in the shop, without writing an email or printing a form. The basics of the right of withdrawal (deadlines, return shipping, deductions, exemptions) are in our EU right of withdrawal guide. This post is about implementation. It covers what the function has to do, which options exist for Shopify and WooCommerce (as of October 2026), how to test them and what happens in your support queue afterwards.
Withdrawal button: what the EU rule requires
The obligation comes from Directive (EU) 2023/2673, which inserted Article 11a into the Consumer Rights Directive (2011/83/EU). Member States had to apply it from 19 June 2026. It covers every distance contract concluded through an online interface, such as a web shop or an app. Because each Member State writes the rule into its own law, the exact label depends on the language of the market. This post uses German law, § 356a of the German Civil Code (BGB), as the worked example; Germany applies it from 19 June 2026 without a transition period.
The flow has four fixed parts:
- The withdrawal function. Labelled in an easily legible way with “withdraw from contract here” or an unambiguous equivalent. In Germany the statutory wording is „Vertrag widerrufen“. A clearly labelled link also works, according to the Karlsruhe Chamber of Commerce (IHK Karlsruhe).
- A short form. The customer provides or confirms three things: their name, details identifying the contract (or the part they want to withdraw from), and the electronic channel for the acknowledgement, in practice an email address.
- The confirmation function. A second button, labelled “confirm withdrawal” or an unambiguous equivalent („Widerruf bestätigen“ in Germany), submits the statement. It exists to prevent accidental withdrawals.
- The acknowledgement of receipt. Sent without undue delay on a durable medium, in practice by email, with the content of the statement and the date and time it was received.
A withdrawal counts as in time if the customer submits it through the function before the period expires. The timestamp in your system is your main piece of evidence.
Placement: always available and prominent
The function must be continuously available for the whole withdrawal period, prominently displayed and easy to access. Recital 37 of the Directive gives an example: customers should not have to download an app to withdraw if they did not buy through that app, and hyperlinks leading to the function are named as a way to help. IHK Karlsruhe adds that, according to the German legislative explanation, the function needs real emphasis, for example through colour, contrast or placement. A grey footer link among fifteen others is a risk.
A robust setup: a visibly styled button in the footer of every page, plus a link in the order confirmation, the shipping email and the customer account. Do not switch the button off after a fixed number of days from the order. The period only starts when the goods arrive, and it runs much longer if your withdrawal information is incomplete. Whether a withdrawal came too late is something you check afterwards, case by case.
No forced login, no mandatory reason, partial withdrawal allowed
- Login: IHK Karlsruhe considers a mandatory login inadmissible; guest buyers must be able to withdraw too. The Directive expressly mentions only the opposite case: a customer who is already logged in should not have to identify themselves again.
- Reason: The law asks for the three items above. IHK Karlsruhe advises against asking for more, especially a reason, because that can be seen as making withdrawal harder. If you want return reasons for your statistics, ask for them later, voluntarily, in your reply.
- Partial withdrawal: The Directive expressly allows traders to offer withdrawal from part of a contract. For orders with several items, it saves you a round of questions.
An acknowledgement is not an acceptance
The acknowledgement only confirms receipt. IHK Karlsruhe advises against wording that suggests the withdrawal has already been checked and accepted, and the German law firm IT-Recht Kanzlei flagged exactly that wording in Shopify apps it reviewed. A neutral text is enough:
Acknowledgement of your withdrawal for order #1234
We received your withdrawal statement on 13 October 2026 at 14:32. Content: name Lena Example, order #1234 (all items), confirmation to lena@example.com. We will review the withdrawal and send you the next steps for the return.
Update your withdrawal information and privacy policy
The pre-contractual information now has to include the existence and placement of the withdrawal function. The Directive updated instruction 3 of the EU model withdrawal information accordingly. The new sentence reads:
“You can also exercise your right of withdrawal online at [insert internet address or another appropriate explanation of where the withdrawal function is available]. If you use this online feature, we will send you an acknowledgement of receipt of the withdrawal on a durable medium (e.g. by email), including its content and the date and time of its submission, without undue delay.”
Use the national language version for each market (in Germany: Annex 1 to the Introductory Act to the Civil Code, EGBGB) and enter the real address of your withdrawal page, not just “in the footer”. IHK Karlsruhe also points out that the privacy policy needs an update, because the form processes personal data.
What happens if the button is missing
Using German law as the example:
- Longer withdrawal period: § 356a BGB itself does not set a specific consequence, unlike the German cancellation-button rule (§ 312k(6) BGB). But the reference to the function is part of the withdrawal information, and § 356(3) BGB ties the start of the 14-day period to that information. If the reference is missing, the period does not start, and the right of withdrawal only expires twelve months and 14 days after the regular start (§ 356(4) BGB).
- Warning letters and fines: IHK Karlsruhe names both as risks. Art. 246e EGBGB lists a missing withdrawal function and a missing acknowledgement as infringements of consumer interests, with fines for widespread infringements within the meaning of EU Regulation 2017/2394.
Withdrawal button in Shopify
Shopify’s own route. Since 18 June 2026, customers can request cancellations through self-serve, not only returns (Shopify Changelog). For the EU right of withdrawal, the Shopify Help Center recommends: turn on self-serve returns and cancellations, allow cancellations until the item is fulfilled, set the return window to at least 14 days from delivery of the last item, extend windows over weekends and holidays, and add a visible link to customer accounts. The Help Center also states the limits: it does not work with legacy customer accounts, customers sign in with their email address and a six-digit code, and they choose a reason in the request. Shopify itself says these tools do not automatically make a store compliant. Given IHK Karlsruhe’s view on logins and mandatory reasons, that alone is an uncertain basis. If you want to be on the safe side, add a public withdrawal page that needs no sign-in.
Apps. The Shopify App Store lists several apps that add a public withdrawal page with form, acknowledgement and merchant notification (search for “withdrawal button”). IT-Recht Kanzlei reviewed Shopify solutions (as of 27 May 2026) and rated the app then called “EU Widerrufs-Button Pro”, now listed as “EU Adress-Check & Widerruf Pro” (English listing: “Address Check & Withdrawal Pro”), as fully compliant with the German rules. According to its App Store listing (as of October 2026), the free plan includes unlimited withdrawals, partial withdrawal and confirmation emails to customers and staff. Two checks from the same review apply to any app:
- If the acknowledgement sounds like an acceptance (“your withdrawal has been accepted”), change the text.
- If a free plan caps the number of withdrawals per month, find out what happens at the limit. If the button disappears, your shop is in breach.
Withdrawal button in WooCommerce
The two well-known German legal-compliance plugins for WooCommerce now include the function:
- Germanized (vendidero, in the WordPress plugin directory, 70,000+
active installations according to the listing): since version 4.0.0 it
includes a withdrawal button under Directive 2023/2673. You place the form
with the shortcode
[order_withdrawal_request_form]. According to the changelog, Germanized stores withdrawals in their own admin view, supports partial withdrawal, validates guest orders through a configurable setting and lets you set a separate support email address. - German Market (MarketPress): since version 3.58 the plugin shows a
withdrawal button in the footer automatically after the update and creates
a page „Vertrag widerrufen“ with the shortcode
[gm_withdrawal_button]. Settings live under WooCommerce → German Market → Allgemein → Widerruf, incoming withdrawals under WooCommerce → Widerrufe. Guests enter their order number in a free-text field; logged-in customers can pick individual items.
One detail from the German Market documentation shows what to watch in any plugin: the setting „Widerrufsfrist in Tagen“ (withdrawal period in days) counts from the order’s completion date, while the legal period starts when the goods arrive. Set it generously, with a buffer for delivery time, or to 0 (no check), so the form never rejects a withdrawal that is in time.
Checklist: test your withdrawal button
- Place a test order as a guest, then withdraw from a private window on your phone, without logging in.
- Is the button visible on the home page, product pages and in order emails, and labelled in the market’s language?
- Does the form ask only for name, order and email, with no mandatory reason?
- Is there a second “confirm withdrawal” step?
- Does the acknowledgement arrive immediately, with content, date and time in the right time zone, and without sounding like an acceptance?
- Does the notification land in the inbox your support team actually works?
- Does withdrawal still work for an order placed three weeks ago but delivered only last week?
- Does your withdrawal information link to the function with its real address, and is the privacy policy updated?
After the click: handling the withdrawal in support
The button only handles receipt. After that, normal returns work begins, and the clock is already running. Under German law (§ 357(1) with § 355(3) BGB), the refund is due no later than 14 days after the withdrawal statement reaches you, and with a button that is practically the moment of the click, not when the parcel arrives.
- Intake: The statement arrives as an email or notification from Shopify, the app or the plugin. Route it to your support inbox, not an admin mailbox nobody reads.
- Check: Match the order, check the period from delivery, clarify exemptions such as personalised goods.
- Reply: Send return instructions and, if you pay for returns, a return label. There is a matching template in our support email templates.
- Refund: Purchase price plus outbound shipping up to your cheapest standard delivery, to the original payment method (§ 357(2) and (3) BGB). You may hold the refund until the goods are back or the customer shows proof of dispatch (§ 357(4) BGB).
Sondercase does not provide the withdrawal button itself. That comes from Shopify, an app or your plugin. Sondercase starts at intake. It picks up the withdrawal email in your support inbox, matches it to the order and checks the withdrawal period against your returns policy, with the statutory right of withdrawal as the floor. It prepares the return case with returns portal, return label and refund in full, and you release it with one click. Replies to the customer can run fully automatically per category. The details are on returns automation.
Austria and Switzerland
Austria transposed the rule in § 13a of its Distance and Off-Premises Contracts Act (FAGG), as a „Rücktrittsfunktion“. The requirements match the German ones, including the labels „Vertrag widerrufen“ and „Widerruf bestätigen“. They apply to contracts concluded after 30 September 2026 (BGBl. I Nr. 59/2026).
Switzerland has no statutory right of withdrawal for online purchases. The Code of Obligations only provides one for doorstep sales and similar situations (Art. 40a ff. OR), so Swiss law has no button obligation. What applies when you sell from Switzerland to EU consumers is covered in the EU right of withdrawal guide.
This article is for orientation only and is not legal advice. Have your withdrawal information and your implementation reviewed by a lawyer.