Article · 8 min
Shopify Withdrawal Button 2026 (EU Requirement)
From 19 June 2026, EU online shops must offer a withdrawal button (Widerrufsbutton) for distance contracts. What it must do — and how Shopify stores comply.
What Changes on 19 June 2026
This is the withdrawal-period counterpart to the cancellation button (Kündigungsbutton) that German shops with ongoing contracts have needed since 2022. The requirement originates in the distance-marketing-of-financial-services reform, but it amends the general Consumer Rights Directive, and the practical expectation for online retailers is to have a compliant withdrawal button in place by the application date. Because scope details can vary by product category and national transposition, confirm your specific obligation with legal counsel — but treat 19 June 2026 as the date to be ready.
What the Withdrawal Button Must Actually Do
- Be clearly labelled — wording such as "Withdraw from contract" ("Vertrag widerrufen"), legible and unambiguous.
- Be easily accessible from the online interface and available throughout the 14-day withdrawal period.
- Lead to a confirmation function where the consumer can enter the details needed to identify the contract and themselves, and submit a clear withdrawal statement.
- Let the consumer confirm the withdrawal with a final action (a "confirm withdrawal" button).
- Acknowledge receipt — the trader confirms the withdrawal, including its date and time, on a durable medium (e.g. email) without undue delay.
A mailto link or a buried PDF form does not meet this. The button has to drive a real, recorded withdrawal flow with a timestamped confirmation — which is exactly where a checkout/returns setup that was never designed for it falls short.
Who It Applies To
Edge cases matter: certain goods are exempt from the right of withdrawal (made-to-order/personalised items, sealed goods unsealed after delivery, perishables), and B2B sales generally do not carry a consumer withdrawal right. Where the right of withdrawal does not exist, the button obligation does not attach. This overlaps with your existing returns and Widerrufsrecht handling — the withdrawal button is essentially a regulated front door to that process.
Withdrawal Button vs. Cancellation Button (Kündigungsbutton)
Kündigungsbutton — ends a continuing obligation (subscription, membership) going forward.
Widerrufsbutton — exercises the 14-day right of withdrawal on a distance contract (a normal purchase), unwinding it.
If you run subscriptions you may end up needing both, in different places, doing different jobs. Conflating them is a common and risky mistake — the legal bases, deadlines, and required confirmations differ.
The Shopify Problem: There's No Native Withdrawal Button
You can bolt a button onto the theme, but the hard part is the back end: capturing a legally sufficient withdrawal declaration, identifying the contract, recording the exact date and time, sending the consumer a durable confirmation, and storing all of it in an audit-safe way. A button that doesn't do those things is decorative — and, like the EAA accessibility rules, this is a complaint-driven area where "looks compliant" is not the same as compliant.
How to Comply on Shopify — and Where Custom Wins
1. Confirm scope. With counsel, confirm the withdrawal button applies to your product categories and clarify any exemptions.
2. Place the button correctly. Clearly labelled, easy to find from the online interface, available across the withdrawal window.
3. Build the confirmation flow. A form that identifies the contract and consumer, captures the withdrawal statement, and records date/time.
4. Send a durable-medium acknowledgement. An email confirming receipt with the timestamp, archived.
5. Tie it into returns and refunds. A withdrawal should trigger your existing return/refund workflow, not live as an orphan.
For stores where returns and withdrawal are operationally serious, a custom returns and withdrawal module handles the button, the legally sufficient declaration, the durable-medium confirmation, and audit-safe records as one owned flow — instead of stitching a theme button to an app that wasn't built for it. Services like NoRentApps build exactly this for European Shopify stores: fixed price, code you own, compliant by design.
FAQ
Frequently Asked Questions
When does the withdrawal button become mandatory?+
The withdrawal button (Widerrufsbutton) requirement, introduced by Directive (EU) 2023/2673 via a new Article 11a in the Consumer Rights Directive, applies from 19 June 2026. Online shops offering distance contracts with a right of withdrawal should have a compliant button in place by that date. Confirm exact scope for your product category with legal counsel, as national transposition details can vary.
Is a withdrawal form or a mailto link enough?+
No. The withdrawal function must be a clearly labelled button, easily accessible from the online interface and available throughout the withdrawal period, leading to a confirmation flow where the consumer submits a clear withdrawal statement and confirms it. The trader must then acknowledge receipt, including the date and time, on a durable medium. A mailto link or a buried PDF does not satisfy this.
What's the difference between the withdrawal button and the cancellation button?+
The cancellation button (Kündigungsbutton, § 312k BGB, since 2022) ends ongoing contracts like subscriptions going forward. The withdrawal button (Widerrufsbutton, from 19 June 2026) lets a consumer exercise the 14-day right of withdrawal on a distance contract — a normal purchase — and unwind it. They have different legal bases, deadlines, and required confirmations; stores with subscriptions may need both.
Can Shopify provide a compliant withdrawal button?+
Not natively. Shopify has no built-in withdrawal function, and most returns apps were built for RMA/returns logic rather than the legal mechanics of a withdrawal declaration with a timestamped, durable-medium acknowledgement. A theme button is easy; the compliant back end — capturing a legally sufficient declaration, recording date and time, confirming on a durable medium, and storing it audit-safe — usually needs a custom build or a returns module designed for it.