The requirement comes from Directive (EU) 2023/2673, which amends the Consumer Rights Directive and adds a new Article 11a. It applies EU-wide to distance contracts and asks for a withdrawal function, not a link, reachable for the whole fourteen-day window without requiring the customer to sign in.
- It is a two-step flow: a withdrawal button leading to a form, then a separate confirmation action.
- The form must collect the customer's name, the contract details and an email address for the confirmation.
- The function must stay reachable throughout the fourteen-day withdrawal window, not only immediately after purchase.
- A static page saying request cancellation does not satisfy it, and neither does a contact form.
- Shopify's self-serve returns now support cancellations, but they run through Customer Accounts and require a sign-in, which the law does not.
Directive (EU) 2023/2673 and Shopify community discussion, June to August 2026
A function, not a link,
and the difference is
the whole compliance gap.
Most of the coverage of this change describes it as adding a cancel button, which undersells it enough to produce a non-compliant build. The requirement comes from Directive (EU) 2023/2673, which amends the Consumer Rights Directive with a new Article 11a, and it applies across the EU rather than in any one market.
What it asks for is a withdrawal function. In practice that is two steps. A clearly labelled withdrawal button that a customer can reach, leading to a form where they confirm their name, the contract they are withdrawing from and an email address for the confirmation, followed by a separate confirm action. The seller then has to acknowledge receipt on a durable medium.
Three details do most of the work in deciding whether a given implementation passes. The function has to remain reachable for the full fourteen-day window rather than appearing once on an order confirmation. It has to be a function that submits, not a page that explains. And it cannot sit behind authentication, because the right belongs to the buyer regardless of whether they created an account.
A page that tells a customer how to request cancellation is documentation. The directive asks for a mechanism.
Self-serve returns are
close, and the login is
the thing that breaks it.
Shopify added cancellation support to self-serve returns, which handles a large part of the operational job: the customer initiates, the merchant receives it, the record exists. For general returns handling this is a genuine improvement and worth turning on regardless of this rule.
The gap is the entry point. Self-serve returns run through Customer Accounts, which means the customer signs in. The withdrawal right under the directive does not depend on having an account, so a flow that requires one is not available to every buyer who holds the right. That is the specific mismatch merchants surfaced in the community threads through June and July, and it is not something a setting resolves.
The practical consequence is that most stores need a no-login path in addition to whatever account-based flow they run. Usually that is a dedicated page carrying the withdrawal form, reachable from the footer and from order confirmation emails, that identifies the order from details the customer supplies rather than from a session.
Six elements, and the
hard one is finding the
order without a login.
Stripped to essentials, a compliant implementation on Shopify has six parts. None of them are technically difficult. The design question is order identification, and it is worth thinking about before building rather than after.
| Element | Requirement | Common mistake |
|---|---|---|
Entry point | Reachable without login, from footer and emails | Only in the account area |
The button | Clearly labelled as withdrawal | Labelled return, which is a different right |
The form | Name, contract details, email for confirmation | A generic contact form |
Confirmation step | A separate, deliberate confirm action | One-click submit |
Acknowledgement | Sent on a durable medium without undue delay | No automated acknowledgement at all |
Availability | Full fourteen-day window | Shown once at order confirmation |
Order identification without a session is the part worth designing deliberately. Asking for order number and email is the usual approach and it is reasonable, provided you handle the case where a customer no longer has the order number, because the right does not evaporate when the confirmation email is deleted. A fallback that accepts email plus approximate order date, reviewed by a human, covers that without opening anything up.
Resist the temptation to make the flow deliberately awkward. Beyond the obvious problem of a regulator viewing friction on a statutory right unkindly, a customer blocked from withdrawing does not go away, they raise a chargeback, and a chargeback is materially more expensive than a refund. The cost analysis of a DTC return covers what each path actually costs once you count everything.
The part after submit
is where most builds
quietly stop.
Merchants concentrate on the button and the form, because those are visible, and then treat what happens after submission as an internal operations problem. The directive does not. The seller has to acknowledge receipt of the withdrawal on a durable medium without undue delay, which means an automated email, not a note in an admin queue.
Durable medium is the phrase carrying the weight. It means something the customer retains and can reproduce unchanged: an email, a downloadable PDF. A confirmation message that appears once on screen and is gone on refresh does not qualify, and neither does a status visible only inside an account the customer may not have.
| Element | Why | Common failure |
|---|---|---|
Sent to the customer's email | Durable medium requirement | On-screen confirmation only |
Sent without undue delay | Statutory timing | Batched with the weekly ops run |
States what was withdrawn | Evidence of the contract | Generic thank-you message |
Records date received | Starts the refund clock | No timestamp captured anywhere |
The last row has a commercial consequence. Receipt of the withdrawal starts the clock on the refund obligation, so if you are not capturing the timestamp you cannot demonstrate you met the deadline. That matters far more in a dispute than the button ever will, and it is a database field rather than a design decision.
Build the acknowledgement as an automated flow at the same time as the form. Retrofitting it after a complaint is the expensive path, and it is the one most stores are currently on without knowing it.
Two different rights,
frequently merged into
one broken flow.
A lot of implementations conflate withdrawal with returns, and because the operational handling overlaps it looks harmless. It is not, because the two have different triggers, different timings and different obligations.
Withdrawal is a statutory right to exit a distance contract within fourteen days, and it does not require a reason, a fault, or in principle even that the goods have shipped. A returns policy is a commercial offer you make on top of that, which can be more generous and cannot be less. A customer withdrawing is exercising a right; a customer returning is using your policy.
Where this bites in practice is in the conditions merchants attach out of habit. Restocking fees, original packaging requirements, a shorter window, and refusing anything opened are all normal returns-policy terms and several of them do not survive contact with a statutory withdrawal. Applying your returns conditions to a withdrawal request is the most common way a compliant-looking flow becomes non-compliant in operation.
Practically, that means the withdrawal path needs its own handling rules on the operations side, not just its own button on the front end. Whoever processes these needs to know which of the two they are looking at, and the form should tell them.
One operational shortcut is worth naming because it is tempting and it does not work. Some merchants route withdrawal requests into their existing returns queue and handle them identically, on the reasoning that the customer gets their money back either way. The refund usually does arrive, and the record shows a returns-policy transaction with returns-policy conditions attached to a statutory right. If a regulator or a customer ever looks at that record, what it documents is the wrong process applied to the right outcome, and the outcome being correct is not the part being assessed.
Keeping them separate costs one extra tag on an order and a short note in the ops runbook. It is one of the cheaper pieces of compliance hygiene available and it is nearly always skipped, because the day you set it up nothing about it feels necessary.
If you sell into the EU,
this reaches you wherever
you are based.
The scope question comes up constantly and the answer is simpler than merchants hope. The Consumer Rights Directive applies to distance contracts with consumers in the EU. A US, UK or Australian brand shipping to an EU consumer is inside it. Being outside the EU is not an exemption, and being small is not either.
Germany drew particular attention around the deadline because German enforcement of consumer rules is more active than most, and a wave of merchants discovered the requirement with days to spare. That is a distribution-of-enforcement story rather than a distribution-of-obligation one, and treating Germany as the special case is a mistake several brands made in June.
- Selling to EU consumers, based anywhere. In scope. Where your company sits does not change the buyer's rights.
- Selling B2B only. Out of scope for this right, which applies to consumers.
- Selling into the EU through a marketplace. Depends on who the contracting party is, which is worth establishing rather than assuming.
- Blocking EU shipping entirely. Out of scope, and a real option worth pricing rather than dismissing if the EU is a marginal channel.
That last option deserves more consideration than it usually gets. If the EU is two percent of revenue and compliance across withdrawal, VAT, packaging rules and the rest is a standing operational cost, the honest calculation sometimes says close it. The international expansion playbook covers how to run that decision on numbers rather than ambition, and the Shopify Markets breakdown covers the mechanics if you keep the channel.
This arrived alongside
several other EU changes
in the same year.
The withdrawal function did not land in isolation, and treating it as a standalone task is how brands end up doing the same integration work three times in a year. It arrived in a period that also brought packaging and parcel-level changes and continued movement on customs treatment of low-value goods.
The pattern across all of them is the same: obligations attaching to the seller rather than to the marketplace or carrier, applying on the basis of where the consumer is rather than where the business is, and arriving with implementation windows measured in weeks. A brand selling into the EU should assume more of this rather than treat each instance as unlucky.
The practical response is to build the compliance surface once and deliberately: a known place where customer-facing legal flows live, an owner, and a quarterly check against changes rather than a scramble at each deadline. That is cheap when it is a habit and expensive when it is a project.
The customs side of the same period is covered in the de minimis analysis, and if you are running the EU through separate storefronts rather than one, the Markets and expansion stores comparison covers which structure carries this kind of obligation more cleanly.
Four checks, and one
of them will probably
fail on your store.
The deadline has passed, which means the useful question is not whether to prepare but whether what you shipped in June actually complies. Across the stores I have looked at since, the most common failure is the login, and the second most common is that the flow was only ever linked from the order confirmation email.
- Open your withdrawal flow in a private window. If it asks you to sign in, it is not available to every customer who holds the right.
- Find it from the footer. If the only route in is an email from the day of purchase, a customer on day twelve cannot reach it.
- Submit it. Confirm there is a real two-step flow and that an acknowledgement actually arrives.
- Check the operations side. Confirm whoever processes these knows a withdrawal is not a return and that your returns conditions are not being applied to it.
This is a small piece of work that is easy to get almost right, and almost right is the state most stores are in. An hour spent walking your own flow as a customer without an account will tell you more than any checklist, including this one. If the EU is a channel you intend to grow, it is worth doing properly once, because the next requirement will land on the same surface and a flow built correctly absorbs it more cheaply than one patched twice.
Questions merchants ask
about the EU withdrawal
requirement.
What is the EU withdrawal button requirement?
From 19 June 2026, sellers into the EU must provide an electronic withdrawal function under Directive (EU) 2023/2673, which adds Article 11a to the Consumer Rights Directive. It is a two-step flow: a clearly labelled withdrawal button leading to a form collecting name, contract details and an email for confirmation, then a separate confirm action, with the seller acknowledging receipt.
Does Shopify handle the EU withdrawal button natively?
Not completely. Shopify's self-serve returns now support cancellations, which covers much of the operational handling, but the flow runs through Customer Accounts and requires a sign-in. The withdrawal right does not depend on having an account, so most stores also need a no-login path reachable from the footer and from order emails.
Is a cancel link enough to comply?
No. The directive asks for a function rather than a link or an explanatory page. A static page telling customers how to request cancellation, or a generic contact form, does not satisfy it. The distinguishing features are the two-step submit and the acknowledgement on a durable medium.
Does this apply if my business is outside the EU?
Yes, if you sell to consumers in the EU. The Consumer Rights Directive applies to distance contracts with EU consumers regardless of where the seller is established. B2B-only sales are outside this particular right, and blocking EU shipping entirely takes you out of scope, which is worth pricing honestly if the EU is a marginal channel.
How long does the withdrawal function need to be available?
Throughout the fourteen-day withdrawal window. A flow that only appears on the order confirmation page or in the immediate confirmation email fails this in practice, because a customer on day twelve has no route back to it. Link it from the footer as well.
Selling into the EU?
The audit covers the compliance surface alongside the conversion and technical findings, so you can see what else is exposed.
Audit my store free