05.09.2026 · 10 min read

Shopify gives you most of the parts for a compliant, low-friction return flow, and almost every store I have looked at has assembled them slightly wrong. The gap is rarely effort. It is that the settings were designed as a commercial returns feature and are now being asked to carry a legal obligation, and the two do not have the same requirements.
In this article:

Since 19 June 2026, EU Directive 2023/2673 requires a clearly visible electronic withdrawal function for consumers in the EU. Shopify's own help centre states the requirement plainly and lists three elements: an easy-to-find labelled button or link, a two-step confirmation where the customer provides their name and order details, and an automatic confirmation on a durable medium such as email. It applies to any business selling online to EU consumers regardless of where the business is located.
Shopify also documents the downside itself: legal warnings, fines of up to 4% of annual turnover in some member states, and an extended withdrawal period of 12 months and 14 days.
Twelve days later the €3 EU import duty arrived, charged per tariff line on sub-€150 consignments and not refundable on ordinary change-of-mind returns. So the cost of each completed return went up in the same fortnight that returning got easier.
Worth a mention Buried in Shopify's own instructions is a sentence most merchants never read: "Using these tools doesn't automatically make your store compliant." A platform telling its merchants that its built-in feature is not sufficient is unusual, and it is the most useful line in the entire document. Everything below is essentially a list of the gaps that sentence is pointing at.
Bad practice: turning on self-serve returns and calling it done. Return requests cover items already delivered. The directive requires customers to be able to withdraw at any point before delivery as well as for 14 days after. A store with returns enabled and cancellations disabled has covered roughly half the window.
Good practice: enable both, and open the cancellation window fully. Shopify's guidance is specific: turn on self-serve returns and cancellations and select "Return and cancel requests", then turn on cancellation rules and set the cancellation window to "Until item is fulfilled" so customers can cancel any time before items ship.
Bad practice: leaving the entry point inside customer accounts and nowhere else. A function reachable only by remembering you have an account, logging in and finding the right order is not an easy-to-find function in any meaningful sense.
Good practice: put a direct link in the navigation, per market. Go to Content, then Menus, add an item and link it to the orders page within customer accounts. Shopify notes you can set a different menu for each market-specific storefront, so the withdrawal entry point appears only in the EU markets where you need it and does not clutter the rest.
Bad practice: assembling the flow from Shopify Forms, Flow and Flow Mail. It is a tempting DIY route and it usually fails on the parts that matter: proving a genuine two-step confirmation, and producing a durable-medium acknowledgement with a defensible timestamp.
Good practice: use the native rules as the backbone, and a purpose-built app or theme work for the parts they do not cover. Verify each of the three requirements individually rather than assuming coverage.

Bad practice: soft, service-flavoured labels. "Request a return", "Contact us about your order", "Check your options". Legal commentary on Article 11a flags that wording suggesting a merely informational or exploratory step carries notable compliance risk, because the function has to read as the exercise of a statutory right.
Good practice: unambiguous withdrawal language, in the local language of each market. "Withdraw from contract" or an equally clear formulation. A German customer should see German. Multilingual coverage is one of the most commonly underestimated parts of this work.
Bad practice: hiding the function to suppress cancellations. Extra clicks, low-contrast placement, three levels deep. The directive exists specifically to counter design that dissuades people from exercising rights. A deliberately awkward button is worse than none, because it evidences intent.
Bad practice: setting the EU return window to exactly 14 days. The statutory structure is 14 days to notify plus a further 14 days to send the goods back. A flat 14-day window in your return rules will start rejecting requests that are perfectly lawful. Shopify also notes the EU withdrawal period is measured from the date the last item in the order is delivered, which is not how most merchants configure multi-item orders.
Good practice: set a generous custom window, and treat the statutory route as a floor rather than a ceiling. There is a commercial argument for this as well as a legal one. The Journal of Retailing meta-analysis on return policy leniency found that longer deadlines reduce return rates, attributed to the endowment effect. Extending the window is the rare change that is simultaneously safer and cheaper.
Bad practice: one global return rule for all markets. Your US policy and your EU obligations are different animals. Shopify supports market-specific policies precisely so they do not have to be the same.
Bad practice: applying restocking fees and return shipping fees to statutory withdrawals. Shopify lets you set a restocking fee as a percentage and a return shipping fee per return, and both appear in the customer's estimated refund. On a lawful EU withdrawal, Article 13(1) requires you to reimburse all payments received from the consumer, including standard delivery costs. The consumer bears the direct cost of sending the goods back, and only if you told them in advance. A restocking fee deducted from a withdrawal refund is a different thing entirely.
Good practice: separate the commercial return path from the statutory one in your rules, and make sure fee logic only touches the first.
Bad practice: store credit or exchange as the default outcome. Commercially, exchange-first is the right instinct. Merchant data shows exchange incentives retaining substantial revenue that would otherwise leave. Legally, Article 13(1) requires reimbursement using the same means of payment the consumer used, unless they expressly agree otherwise. Offered as a choice, fine. Set as the default, not fine.
Bad practice: leaving requests in a manual approval queue. Shopify's native self-serve returns have no automatic approval; every request needs a human to approve or decline in the admin. For an ordinary return that is a service issue. For an EU withdrawal it is a legal one, because refunds must be issued within 14 days of the request and a queue that runs long on a Friday eats a meaningful share of that.
Good practice: auto-approve everything that clearly meets policy, and reserve human review for genuine exceptions. Then measure time-to-decision, not just time-to-refund.

Bad practice: assuming Shopify will generate the return label. This is the single most common false assumption among EU-facing merchants. Shopify creates prepaid return labels only when your primary location and the customer's shipping address are both in the United States. For international returns you need another solution. A store selling from the UK into Germany gets no label from the native feature at all.
Bad practice: sending EU returns back across the border to a non-EU warehouse. Every crossing is a customs event. Clearance time competes directly with your 14-day statutory refund clock, and the €3 duty paid on the outbound leg does not come back on a change-of-mind return.
Good practice: give EU customers a domestic return address. No border crossing means no customs event on the way back, no second duty, and transit times that fit inside the refund window rather than fighting it.
Worth a mention There is something quietly telling about a platform that powers an enormous share of cross-border direct-to-consumer commerce generating return labels only for domestic US shipments. It is not an oversight so much as an accurate reflection of where reverse logistics is genuinely hard. Outbound shipping is a solved problem with a hundred vendors. Inbound, across a border, into the right country, with a carrier the customer already trusts, is not.
Bad practice: assuming Managed Markets covers you when you only use it for part of your EU traffic. Shopify states that if you use Managed Markets to sell to EU customers, compliant cancellation and return policies are automatically applied to your Managed Markets orders, with no action needed. Note the scope: Managed Markets orders. Anything selling into the EU outside that channel is your responsibility.
Good practice: know exactly which orders route through Managed Markets and which do not, then configure the rest deliberately.
Bad practice: no log. Six months later a customer says they withdrew on the 12th. Without a timestamped acknowledgement, their version is the only version on the record.
Good practice: retain the automatic confirmation with date and time, and be able to export withdrawals for a given period on request. Legal guidance on the directive recommends maintaining compliance logs evidencing timely receipts.

The two gaps Shopify's native tooling leaves for EU-facing merchants are the same two that cost the most: no international return labels, and no way to keep the parcel out of customs. ShopReturns fills both. Local return addresses in nine European markets mean the customer returns domestically with a carrier they already use, so no border is crossed on the way back, no customs event occurs and clearance stops competing with your 14-day refund deadline. Items are verified in the Wrocław hub within 48 hours with a barcode scan and photo-documented check, then handled the way you decide: back into stock, resold locally, donated or disposed of. It plugs into your existing Shopify setup rather than replacing it.
Does turning on Shopify's self-serve returns make me compliant? No, and Shopify says so directly. The native rules help you meet the requirement but compliance depends on your full setup, your products and your markets.
Can Shopify create return labels for my EU customers? Not natively. Prepaid return labels are generated only when your primary location and the customer's address are both in the United States.
Do I still need this if I use Managed Markets? For Managed Markets orders, Shopify applies compliant policies automatically. For any EU sales outside that channel, you configure it yourself.
What return window should I set for the EU? Longer than 14 days. The statutory structure gives 14 days to notify plus 14 more to ship, and the research on policy leniency suggests longer windows reduce return rates rather than increase them.
Can I charge a restocking fee on an EU withdrawal? Article 13(1) requires reimbursement of all payments received including standard delivery. Check with counsel before applying fee logic to statutory withdrawals, and keep that logic separate from your commercial returns path.
Send us your numbers and we'll run them against the new regime: where the duty hits twice, what return freight costs against the goods you recover, and how much is avoidable.


