How Shopify Natively Handles the New Withdrawal Right Rule

This article was originally published on LinkedIn on June 8, 2026.

TL;DR: From June 19, 2026, every Czech e-shop must offer an easy way to withdraw from a contract online (14-day window). Shopify handles this natively — it has for a long time — and a lot of people in the community are wrong when they say otherwise. In this article I'll show you how to enable it in three steps, what the difference is compared to paid apps, and one limitation with button text that's important to know.

What's Changing and Who Introduced It

As of June 19, 2026, an amendment to the Czech Consumer Protection Act came into force, implementing European Directive 2023/2673. (At the time of publication, the amendment was in the parliamentary approval process; the effective date of June 19, 2026 is set by the EU transposition deadline.) In concrete terms: every Czech e-shop must have a clearly visible way for customers to withdraw from a contract within 14 days of receiving their goods. It should be just as easy as completing the original purchase.

The button or link must be clearly labeled — the law typically specifies the wording "Withdraw from contract" ("Odstoupit od smlouvy"). It must be continuously available to the customer throughout the entire withdrawal period and accessible from every page of the website. Oversight in the Czech Republic is the responsibility of the Czech Trade Inspection Authority (ČOI), which can impose fines of up to CZK 5,000,000 or 4% of annual turnover.

This topic started gaining traction in our team in April, when many clients began asking about it and the first apps for this purpose started appearing in the Shopify App Store. František Seifried from Sounds Good Agency | Shopify Experts then investigated in detail how to solve it best. He simulated the entire flow on a real test store, verifying the setup, the customer and staff experience, emails, and how the deadline is calculated.

What the Community Gets Wrong

You'll find it on forums and in discussion groups: "Shopify isn't ready for Czech law — buy a Czech boxed solution or a custom-built one."

That's not true.

Shopify is compliant with Czech law — it has had a native self-serve return flow since 2024 (and continues to improve it). The entire withdrawal process from the customer's side requires no additional app. Return rules with defined windows, a button in the customer account, automated emails, staff approval, refunds to the original payment method — all of this is available in Shopify for free, natively, and (as we'll see) compliant with what Czech law requires, when configured correctly.

Yes, there is one limitation with the button text. I'll show you that in a moment. But that doesn't mean "Shopify can't do it." It means "Shopify does it slightly differently than people expect, and one specific detail needs to be handled differently." I'll dedicate a separate section to that below.

Three Ways to Handle This in Your Store

When I work through this with a client today, there are three options on the table.

1. Native Shopify (free, recommended for most). You enable three things in the admin (described below), add a link labeled "Withdraw from contract" to your website, and you're done. For most Czech Shopify stores, this is the best choice.

2. Paid app (Revoq EU Withdrawal Button, Widerruf Button EU Compliance, and others). This makes sense when you need a standalone visible form outside of email and the customer account (for example, as a landing page or widget), automatic PDF confirmation with a signed timestamp, or a specific workflow (custom statuses, integration with another system). Note: most of these apps don't yet support Czech or Slovak, and the label "EU compliant" doesn't automatically mean compliance with Czech law specifically. That part needs to be verified.

3. Do nothing for now. We don't recommend this, but the reality is that some e-shops will choose to take the risk. ČOI enforcement begins immediately after the effective date and penalties can be significant.

In the following sections I'll describe path (1) in detail, as it's the right choice for most clients.

Native Shopify in Three Steps

Step 1: Return Rules

In the Shopify admin, go to Settings → Policies → Return rules → Manage. Set the window to 14 days, save, and click Turn on at the top.

Shopify now knows that a customer can request a return within 14 days of delivery. Return rules configuration with a 14-day return window and rules enabled.

Step 2: Self-Service Returns (Customer Accounts)

In the admin, go to Settings → Customer accounts and enable "Allow customers to request and manage returns".

This activates the ability for customers to request a return themselves from within their account, without needing to send an email or make a phone call. Customer Accounts section with self-service returns enabled (Allow customers to request and manage returns).

Step 3: Adding the Link to Your Website

This is the step most often overlooked in the community. Yet it's crucial for legal compliance.

The law requires that the withdrawal link be clearly visible, clearly labeled, continuously available throughout the entire withdrawal period (at minimum 14 days for every active order), and accessible from every page of the website. In Shopify, you do this as follows:

1. Copy the URL of the entry point to the customer account, specifically the order list. The basic format is /account/orders on your domain.

2. In the admin, go to Online Store → Navigation and select both the main menu and the Footer menu (both, so the link is accessible from every page).

3. Click Add item, name it "Withdraw from contract" (this is the legally required wording) and paste the copied URL.

4. Save and verify on your website that the link actually appears on all types of pages (product, collection, cart, blog, static pages). Navigation menu editor: adding the "Withdraw from contract" item with the URL pointing to the order list. Store footer with the visible "Withdraw from contract" link.

Two things to watch out for:

The link will only appear where the given menu is used in the theme. If customers can't see the menu on the frontend (e.g. in the footer), it needs to be added to the theme in the theme editor (Customize). Add a block with the relevant menu to the appropriate section.

If the link is in the footer, it must be visually distinguishable from the surrounding content (contrasting colors, clear placement, readable size). This is an explicit requirement of the directive. A plain grey link buried among 20 other footer items may not be sufficient.

After this, you have: a customer who has made a purchase sees a "Withdraw from contract" link in the footer and/or menu, clicks it, arrives at their account, sees the list of orders, and has a return button next to each order.

One Detail: The Text on the Internal Button

Here comes the limitation that leads the community to conclude that Shopify "can't do it".

The button customers see next to their order in the account is called "Request return", not "Withdraw from contract". This text is part of the new Customer Accounts (New Customer Accounts), which have been the default in Shopify since 2024 and are hosted directly by Shopify (not in the Liquid theme). This button text cannot currently be renamed.

That sounds like a blocker. But it isn't.

The law does not require every button throughout the entire flow to carry the wording "Withdraw from contract". It requires that the customer have a clearly visible way to initiate a withdrawal, and that the terminology used be understandable.

We therefore ensure the legally required wording in two places we fully control:

1. A visible entry link on the website (Step 3 above), labeled "Withdraw from contract".

2. Confirmation emails that the customer receives (described below), which also use the legally required wording.

The internal "Request return" button is simply a mechanism. An operational step, not a legal formulation. When the customer clicks that link, they know they are withdrawing from the contract (the link's label and the confirmation email told them so). The button simply mechanically submits the request.

If a client insists that even the internal button must read "Withdraw from contract", then an app or custom solution is needed. But for most clients, that's not necessary.

What the customer sees and what staff does

Customer:

Customers have two native paths, both without needing to remember a password:

A) From email (most common, no login required). Every order notification includes a "View order" button. The link is signed for the specific order (buyer token), so it takes the customer directly to the order page without logging in or entering a password.

B) From the website (the "Withdraw from contract" link in the menu/footer). This leads to the customer account's order list. An unauthenticated customer first enters their email (a verification code is sent) and then selects the specific order.

From that point, the flow is the same for both paths:

1. On the order page, they click the "Request return" button. Customer account in Czech with the order list and the Request return button next to the order.

2. They select the items, the reason, optionally add a note, and see the estimated refund amount. Return form in the account: item selection, reason, and estimated refund amount.

3. They confirm. The order moves to the "Return requested" status, and the customer receives a confirmation email. Return requested status in the customer account after the request is submitted.

On security (a common concern): "no login" does not mean anyone can cancel someone else's order. Access via email is authenticated by a signed link that is sent only to the email address of the buyer for that specific order, thereby proving possession of the order email. This satisfies the directive's requirement for access without login while maintaining protection against misuse.

For the customer, the whole process takes a moment — just as easy as making the original purchase. Exactly what the law requires.

Staff:

1. In the admin, they see the order with a "Return requested" status and a "Review request" button. Order in the admin with Return requested status and the Review request button.

2. They open the request, review it, and click "Approve". Review return request screen with shipping options and Approve and Decline buttons. Approved return in the Return in progress status with the Process and refund button.

3. Then "Process and refund". Shopify offers a refund to the original payment method. Process return screen: refund to the original payment method and amount summary.

4. The order moves to the "Refunded / Return closed" status. Order in Refunded / Return closed status with zero net payment.

The customer automatically receives emails at each step (received → approved → refunded).

Important: a request submitted within 14 days must be approved by staff. The "Decline" button is only for requests outside the window or illegitimate ones. Withdrawal within 14 days is the customer's legal right, not a discretionary decision for the seller.

So that staff are notified immediately about new requests, enable notifications: Settings → Notifications → Staff notifications → "New return request". Add recipients to the Recipients section. Staff will then receive an email for every new request. Staff notifications with the New return request item enabled and the Recipients section.

The 14-Day Window Is Counted from Delivery, Not from the Order Date

The statutory period runs from the date the customer receives the goods — not from the date they placed the order. For Shopify to calculate the window correctly, it needs to know when the goods were delivered.

When a tracking number and carrier are associated with an order (typically added automatically by the carrier's app — e.g. Zásilkovna/Packeta, PPL, DPD), and the carrier marks the parcel as delivered, Shopify starts the 14-day window from the delivery date. ✓

When tracking is missing (click-and-collect, manual dispatch without a tracking number), Shopify doesn't know the exact delivery date and calculates from dispatch plus an estimated transit time, which is only approximate. Workaround for non-standard cases: manually enter a tracking number from a carrier that reports delivery — Shopify will then start the window from the actual delivery date. For click-and-collect this doesn't resolve the issue — the flow will always be approximate and staff must handle it manually if a customer contacts them right around the expiry of the window.

After the 14-day window expires, the "Request return" button no longer appears for the customer. Therefore:

Use a carrier that reports delivery (then the window matches what the law requires).

If a customer contacts you just after the automatic window but is still within 14 days based on actual delivery (for example, Shopify miscalculated the window due to missing tracking), staff process the withdrawal manually. It is the customer's legal right, not a waiting period.

Date and Time of Receipt in the Confirmation Email

Czech law requires that the confirmation of receipt of a withdrawal include the date and time of receipt.

This is added to the confirmation email with a simple Liquid template edit:

1. In the admin, go to Settings → Notifications → Customer notifications → Return request received → Edit code.

2. Add the following line to the email body (HTML section), typically right after the confirmation sentence, before the "View order" button: Email template code editor for Return request received in Shopify.

3. Save and verify via Preview or Send test. Preview of the confirmation email with the date and time of receipt line above the View order button.

The Liquid filter date: "%-d. %-m. %Y %H:%M" will print the date and time in the format 4. 6. 2026 14:32. Exactly what the law requires.

The email arrives without delay — typically within a few seconds of the request being submitted.

Things to Watch Out For

A few things that may catch you off guard:

Emails are sent in the language of the order. An order placed on a Czech e-shop will send Czech emails to the customer. (For test orders created manually in the admin, they may sometimes arrive in English. This does not affect real customers.)

The 14-day window applies to new orders — those created after the rules are enabled. It does not apply retroactively to old orders. If you want to be safe, enable the rules in advance.

The refund is a separate step after the withdrawal is approved. By default, staff confirms this manually — typically to verify the condition of the returned goods (completeness, no damage). If you want to automate the refund (for example, immediately upon approving the return), this can be done via Shopify Flow: trigger "Return approved" → action "Refund order". For most stores, the manual step makes sense as a final check, but automation is available if you prefer speed over manual review.

When to Consider a Paid App

Even though the native path is right for most clients, there are situations where an app makes sense:

When you need a standalone visible form outside of email and the customer account (for example, as a landing page, a widget on the product page, or a dedicated subpage). The native Shopify paths (via email or via the customer account) always send the customer into an order context, which is correct but may not suit every use case.

When you need automatic PDF confirmation with a signed timestamp (some legal interpretations consider PDF to be safer documentation).

When you need two-step confirmation (the customer ticks a checkbox + clicks submit).

When you have a specific workflow (custom statuses, integration with another system).

Apps for this purpose are typically Revoq EU Withdrawal Button and Widerruf Button EU Compliance. You'll find them in the Shopify App Store under the "EU withdrawal button" category.

Note: most of these apps currently do not support Czech or Slovak. The label "EU compliant" also does not automatically mean compliance precisely with Czech law. Individual member states may have different implementation details in their transposition. This needs to be verified for each specific app.

Disclaimer

This article is a practical guide, not legal advice. The legal interpretation (especially the question of whether Shopify technically meets the requirement for "an equally easy way to terminate as to conclude", and the precise statutory wording) should be verified with a qualified lawyer against the final text of the Czech transposition of the Consumer Protection Act and the Civil Code.

Conclusion

If you have a Shopify e-shop and need to be compliant with the new law by June 19, 2026, in most cases you don't need an app, external integration, or a development specialist. Three clicks in the admin, one link in the menu, one added line in the Liquid template of the confirmation email, and you have a working flow that meets what the law requires.

The community claim that "Shopify can't do this natively" is a recurring mistake that stems from the fact that the internal button labeled "Request return" sounds different from the legally required wording "Withdraw from contract". When that detail is handled as described above (the legally required wording on the entry link and in the emails), it's sound both technically and legally. And access via email also works without requiring login, thanks to the signed order link.

If you need help with the setup, or want to verify that everything is configured correctly, get in touch with us. We'll go through it together.

About the authors: Research and testing: František Seifried. Verified on a real Shopify test store: 06/2026. Team: Sounds Good Agency | Shopify Experts

Share article

Contact us and kick-start your success on Shopify

First agency in CZ and SK