
How to Set Discounts for Card Payments Only on Shopify 💳
Learn how to create conditional discounts based on payment method in Shopify. Hide COD, target prepaid payments only, and control when discounts apply using Payflow.


From June 19, 2026, a new EU rule applies: every online store that sells to consumers in the EU must offer an easily accessible "withdrawal button" on its website. This is not a new right – the 14-day cooling-off period has existed for years. What is new is that customers must have a simple online way to exercise it. In this article we explain exactly what the law requires, who it applies to, the penalties for non-compliance, and how to handle it in practice on Shopify.
EU Directive 2023/2673 introduces a mandatory electronic "withdrawal function" – in practice a clearly visible button or link through which a customer can withdraw from a contract just as easily as they ordered. The rule builds on the existing 14-day right of withdrawal (the cooling-off period) and standardizes how the customer exercises it.
In Shopify you can also mark specific products or collections as "final sale" – customers then can't request a return or cancellation for them through the portal. This is the practical way to exclude made-to-order goods or, for example, a cash-on-delivery fee handled as a separate product that doesn't make sense to return on its own. The toggle is only the mechanism, though – the statutory exemption applies where the goods genuinely qualify (e.g. truly made-to-order or personalized), not because you marked them final sale.
To comply with the directive, the "withdrawal function" must meet four requirements:
Shopify has published its own guidance, and you essentially have three routes: its free native self-serve flow, a login-free form built from free Shopify tools, or a purpose-built vetted app. Here's how each works and the trade-offs.
Shopify's built-in Self-serve returns and cancellations cover the core of what the directive asks for – automatically and for free. Set them up in three steps:
Turn on Self-serve returns and cancellations (Settings → Customer accounts) and set the conditions in Return and cancellation rules.
Set rules per market. For the EU, enable returns with a 14-day window from delivery; for markets outside the EU you can leave returns off, so the option isn't offered there.
Add a visible "Withdrawal from Contract" link in your footer, pointing to the customer account orders page, so the option is easy to find.
The customer then requests it from their account; the request lands in your admin, Shopify automatically emails them a confirmation, and you process it there – far clearer than parsing a free-text form with an order number.
One caveat: the whole flow runs through a customer-account sign-in – no extra friction if your store requires an account, but a gray area for guest checkout.
Upside: fully automated and free — ideal if your store already requires an account.
Downside: the entry sits behind a (light) login, a gray area for guest checkout.
Built mostly from free Shopify tools (Shopify Forms) and reachable without any login:
In Shopify Forms, create a form with name, email and order number fields (a reason field is optional – withdrawal needs no reason). Set marketing consent to don't subscribe – a withdrawal request isn't a marketing opt-in.
Put the form on a standalone, public page (e.g. /pages/withdrawal) reachable without login, and turn on Email notifications ("Send an email for each submission to this form") so you're alerted to each request – it goes to the store email listed under store details (no Shopify Flow or extra app needed).
Link to it prominently from your footer (and your terms and conditions), so the option is easy to find.
The customer still needs the durable-medium confirmation – an on-screen "thank you" doesn't count (it isn't durable). Send it as a transactional email: if you already use an email platform like Ecomail or Klaviyo, use its transactional message – transactional ≠ marketing, so it needs no consent and no unsubscribe footer, and costs nothing extra when you're already on the plan. Fire it from the submission event — Shopify Flow's "Metaobject entry created" → your ESP's track event action, sent as transactional.
No such platform? A small transactional-email app does the same. (Don't force a marketing opt-in or route it through the marketing channel just to send it – that's a GDPR consent problem; for very low volume you can also reply by hand.) Then process the cancellation or refund in your admin, where Shopify emails the customer the outcome for free.
Upside: genuinely login-free, built mostly from free Shopify tools.
Downside: the automatic durable-medium confirmation isn't free-native – either manual (low volume only) or via a transactional platform (Ecomail/Klaviyo); without one you'll likely end up paying for a tool anyway.
If you'd rather not build anything, there are apps made specifically for the withdrawal button – they add a login-free button, a two-step form, and an automatic confirmation email in line with the directive. One is Revoq – EU Withdrawal Button; some cookie-banner / GDPR apps have also added it as a feature (e.g. Pandectes GDPR Compliance, though that's primarily a cookie-banner tool).
Upside: ready in a few clicks – login-free, two-step and a compliant confirmation out of the box.
Downside: a monthly fee. But if path 2 would need a paid app for the confirmation anyway, a purpose-built app is arguably the cleanest choice from the start.
Whichever path you choose, describe the right of withdrawal and its exemptions in your terms and conditions. If you sell made-to-order goods or other products that fall under the statutory exemptions, state it clearly – you'll avoid disputes and unnecessary requests.
This article is for information only and is not legal advice. Consult a lawyer about your specific solution and exemptions.
It is a mandatory electronic function introduced by EU Directive 2023/2673, effective June 19, 2026. It is a clearly labeled button or link on your store that lets a consumer easily exercise their existing 14-day right of withdrawal. It is not a new right – just a new, standardized way to exercise it online.
It depends on how purchases work in your store. The native self-serve returns cover the mechanics and the automatic confirmation email. If your store requires an account to purchase, requiring login at withdrawal is fine. But if you allow guest checkout, the login is an extra step – and the directive wants withdrawal to be at least as easy as buying. In that case add a login-free entry point (a footer link to a public form), a vetted app, or a custom solution.
Yes. The obligation applies to any store selling to consumers in the EU, regardless of where the business is located. What matters is that you target customers in an EU member state. It does not apply to pure B2B sales between businesses.
For goods, the period generally starts on the day the consumer (or a person they designate) takes physical possession of the goods. For services and digital content, it starts when the contract is concluded. If you fail to properly inform the customer about the right of withdrawal, the period extends to up to 12 months and 14 days.
No. You only need the button where a right of withdrawal actually exists. The statutory exemptions – notably custom-made and personalized goods, perishable goods, unsealed hygiene goods, and digital content the customer started after explicit prior consent and acknowledging the loss of the withdrawal right – have no right of withdrawal, so no button is required for them. Always describe these exemptions in your terms and conditions.

Learn how to create conditional discounts based on payment method in Shopify. Hide COD, target prepaid payments only, and control when discounts apply using Payflow.

By adding a payment QR code, you let customers from the Czech Republic and Slovakia pay easily by transfer right after completing their order. Setup in the Payflow app is simple and can be done in just a few minutes.

Streamline your Shopify store with Mailstep thanks to automatic COD rounding, EUR COD processing for Slovakia, fixing faulty shipments, and the Globe app for pickup points.

Chargebacks can cause significant financial losses for online stores. In this article, we'll show you how to effectively minimize the risk of fraudulent transactions using the right payment settings and automation in Shopify Flow.
Interested in collaborating on a project?