Unadhi Guides

Withdrawal button check sheet for EU web shops: "withdraw from contract here" since 19 June 2026 (Consumer Rights Directive Article 11a, Directive (EU) 2023/2673) for accountants, bookkeepers and web agencies

Updated 28 Oct 2026 · Disclosure: the two Apify Actors mentioned below are built and published by Unadhi. Legal facts come only from Directive 2011/83/EU, Directive (EU) 2019/2161 and Directive (EU) 2023/2673 on EUR-Lex, read on 28 Oct 2026. This guide is for information only, not legal advice.

Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received.

What you get: a finished withdrawal button check sheet in three tabs: a shops tab (one row per client web shop; a contact scraper fills the email and phone counts, you tick the withdrawal function checks by hand, and one formula lists every gap with its article); a products tab (a product scraper fills the titles, a formula flags products that may fall under a withdrawal exception); and a clock tab for the 14-day withdrawal, refund and return dates. Plus an acknowledgement email template. Made-up example rows show how it fills in.

Short answer: Directive (EU) 2023/2673 inserted Article 11a into the Consumer Rights Directive 2011/83/EU. Member States had to adopt the rules by 19 December 2025 and apply them from 19 June 2026 (Article 2(1) of Directive 2023/2673). Since then, for distance contracts concluded through an online interface such as a website or app, the trader must let the consumer withdraw through a withdrawal function labelled "withdraw from contract here" (or an unambiguous corresponding wording), continuously available during the withdrawal period, prominently displayed and easily accessible. It leads to an online statement and a "confirm withdrawal" button, and the trader must send an acknowledgement on a durable medium with the content, date and time without undue delay. Recital 37 says this applies to all distance contracts with a right of withdrawal, not only financial services.

Why accountants, bookkeepers and web agencies should look at this now

Step 1: get the data (two scrapers, both free during launch)

  1. Put your client shop homepages in a list. Run the Contact Details Scraper with maxPagesPerSite: 4. It reads the homepage first, then contact-like pages (contact, about, impressum, support), and returns one row per site with status, emails, phones and counts. By default it returns only role mailboxes such as info@ or support@; personal addresses are dropped and only counted in personalEmailsDropped.
  2. Run the E-commerce Product Data Scraper on the same shops (Shopify, WooCommerce, any shop with structured product data). You get one row per product with url, shop, title and, with includeDescription: true, the description.
  3. Both Actors check robots.txt and scan each site's terms of service first; sites that forbid crawling are skipped for free and reported with a status such as blocked-by-terms. Neither Actor logs in, so neither can test the withdrawal function inside a customer account. Those checks are done by hand (Step 2, columns F to L).

Step 2: tab 1, shops (one row per client shop)

ColumnWhat to writeSource
A. ShopDomain
B. Scraper statusstatus from the contact scraper (ok, blocked-by-robots, blocked-by-terms ...)Actor output
C. Emails foundcounts.emails. If 0 but personalEmailsDropped is above 0, look at the site: a named person's address still counts as an email address for the consumerArt. 6(1)(c)
D. Phones foundcounts.phonesArt. 6(1)(c)
E. Address shownYes/No: geographical address where the trader is established (by hand)Art. 6(1)(c)
F. Withdrawal function existsYes/No: a test order lets you withdraw online through a function, not only by email or postArt. 11a(1)
G. LabelYes/No: labelled "withdraw from contract here" or an unambiguous corresponding wording, easily legible (in the shop's language: check the wording in your national transposition)Art. 11a(1)
H. Always there, easy to findYes/No: continuously available during the withdrawal period, prominently displayed, easily accessible. Recital 37: no extra steps such as downloading an app when the order was not placed in that app; a logged-in customer should not have to identify themself againArt. 11a(1), Recital 37
I. Statement fieldsYes/No: the online statement lets the consumer easily give or confirm (a) name, (b) details identifying the contract, (c) the electronic means for the confirmationArt. 11a(2)
J. Confirm buttonYes/No: submitted through a confirmation function labelled only "confirm withdrawal" or an unambiguous corresponding wordingArt. 11a(3)
K. AcknowledgementYes/No: after the test, an email (durable medium) arrived without undue delay with the content and the date and time of submissionArt. 11a(4)
L. Withdrawal informationYes/No: conditions, time limit and procedure, the model withdrawal form (Annex I(B)) and, where applicable, the existence and placement of the withdrawal functionArt. 6(1)(h) as amended
M. Order buttonYes/No: the final order button says only "order with obligation to pay" or a corresponding unambiguous wordingArt. 8(2)
N. ResultFormula below

Result formula for row 2 (Google Sheets or Excel 365). The formula and the order of the gaps are our working rule, not wording from the Directive:

=IF(B2<>"ok","CHECK BY HAND: SITE NOT READ ("&B2&")",IF(TEXTJOIN("; ",TRUE,IF(C2=0,"NO EMAIL FOUND 6(1)(c)",""),IF(D2=0,"NO PHONE FOUND 6(1)(c)",""),IF(E2<>"Yes","ADDRESS 6(1)(c)",""),IF(F2<>"Yes","NO WITHDRAWAL FUNCTION 11a(1)",""),IF(G2<>"Yes","LABEL 11a(1)",""),IF(H2<>"Yes","NOT ALWAYS THERE 11a(1)",""),IF(I2<>"Yes","STATEMENT FIELDS 11a(2)",""),IF(J2<>"Yes","CONFIRM BUTTON 11a(3)",""),IF(K2<>"Yes","ACKNOWLEDGEMENT 11a(4)",""),IF(L2<>"Yes","WITHDRAWAL INFO 6(1)(h)",""),IF(M2<>"Yes","ORDER BUTTON 8(2)",""))="","OK",TEXTJOIN("; ",TRUE,IF(C2=0,"NO EMAIL FOUND 6(1)(c)",""),IF(D2=0,"NO PHONE FOUND 6(1)(c)",""),IF(E2<>"Yes","ADDRESS 6(1)(c)",""),IF(F2<>"Yes","NO WITHDRAWAL FUNCTION 11a(1)",""),IF(G2<>"Yes","LABEL 11a(1)",""),IF(H2<>"Yes","NOT ALWAYS THERE 11a(1)",""),IF(I2<>"Yes","STATEMENT FIELDS 11a(2)",""),IF(J2<>"Yes","CONFIRM BUTTON 11a(3)",""),IF(K2<>"Yes","ACKNOWLEDGEMENT 11a(4)",""),IF(L2<>"Yes","WITHDRAWAL INFO 6(1)(h)",""),IF(M2<>"Yes","ORDER BUTTON 8(2)",""))))

Made-up example rows (not real shops)

ABCDEFGHIJKLMN. Result
Made-up: linen-shop.exampleok21YesYesYesYesYesYesYesYesYesOK
Made-up: bike-parts.exampleok10YesNoNoNoNoNoNoYesYesNO PHONE FOUND 6(1)(c); NO WITHDRAWAL FUNCTION 11a(1); LABEL 11a(1); NOT ALWAYS THERE 11a(1); STATEMENT FIELDS 11a(2); CONFIRM BUTTON 11a(3); ACKNOWLEDGEMENT 11a(4)
Made-up: tea-house.exampleok11YesYesNoNoYesYesYesNoYesLABEL 11a(1); NOT ALWAYS THERE 11a(1); WITHDRAWAL INFO 6(1)(h)
Made-up: candles.exampleblocked-by-terms–––––––––––CHECK BY HAND: SITE NOT READ (blocked-by-terms)

In the made-up tea-house row the button says "Returns" and is only visible in the footer of the app, so we marked G and H "No". Whether a given wording is "unambiguous" is a judgement for the shop owner and, if needed, a lawyer.

Step 3: tab 2, products (one row per product from the product scraper)

Article 16 lists contracts with no right of withdrawal, for example goods made to the consumer's specifications or clearly personalised (16(c)), goods liable to deteriorate or expire rapidly (16(d)), and sealed goods not suitable for return for health protection or hygiene reasons that were unsealed after delivery (16(e)). If an exception applies, the shop must say so before the order (Article 6(1)(k)). This tab finds products worth a second look; the word lists are ours, English only, and you should add words in the shop's language.

ColumnContent
A. url, B. titleFrom the scraper
C. Flag=IF(REGEXMATCH(LOWER(B2),"personali[sz]ed|custom|engraved|made to measure|monogram"),"CHECK 16(c) PERSONALISED",IF(REGEXMATCH(LOWER(B2),"fresh|bouquet|flowers|cake|bread"),"CHECK 16(d) PERISHABLE",IF(REGEXMATCH(LOWER(B2),"earring|underwear|lingerie|swimwear|toothbrush|razor|cosmetic"),"CHECK 16(e) SEALED HYGIENE GOODS","WITHDRAWAL APPLIES: 14 DAYS"))) (Google Sheets; in Excel use REGEXTEST where your version has it, or a SEARCH-based version)
D. Shop says soYes/No by hand for every CHECK row: does the product page or checkout tell the consumer there is no right of withdrawal, or when it is lost? (Art. 6(1)(k))

Made-up example rows (not real products): "Engraved oak chopping board" → CHECK 16(c) PERSONALISED; "Fresh tulip bouquet" → CHECK 16(d) PERISHABLE; "Silver hoop earrings" → CHECK 16(e) SEALED HYGIENE GOODS (only if sold sealed for hygiene reasons); "Linen bed sheet" → WITHDRAWAL APPLIES: 14 DAYS.

Step 4: tab 3, clock (one row per withdrawal)

ColumnFormula or contentSource
A. OrderOrder number
B. Last item receivedDate the consumer (or a person they named, not the carrier) got physical possession of the goods; for one order delivered in parts, the last itemArt. 9(2)(b)
C. Withdrawal info givenYes/NoArt. 6(1)(h)
D. Withdrawal period ends=IF(C2="Yes",B2+14,EDATE(B2+14,12))Art. 9(1), 9(2)(b), 10(1)
E. Withdrawal receivedDate of the withdrawal statement (a statement submitted through the function before the period ends is in time)Art. 11(2), 11a(5)
F. Refund due by=E2+14, same means of payment unless the consumer expressly agreed otherwise; the shop may wait until it gets the goods back or proof they were sent, whichever is earlier, unless it offered to collect themArt. 13(1), 13(3)
G. Consumer sends goods back by=E2+14Art. 14(1)

The sheet counts plain calendar days, which is our working rule. Check how your national law counts the first day, weekends and public holidays. If the withdrawal information is given late but within the 12 months, the period ends 14 days after the consumer receives it (Art. 10(2)); write that date over D by hand.

Acknowledgement email template (wording is ours)

Subject: We received your withdrawal - order [number]
Hello [name],
we received your withdrawal from contract [order number, items] on [date] at [time, time zone].
Your statement as submitted: "[copy of the full statement]"
We will refund [amount] to [payment method] by [date: no later than 14 days after we received your withdrawal].
Please send the goods back to [address] by [date: within 14 days of your withdrawal].
[Shop name] · [geographical address] · [phone] · [email]

Article 11a(4) asks for the content and the date and time of submission. The rest is our suggestion.

Text for the shop's withdrawal instructions

Annex I(A) of Directive 2011/83/EU, instruction 3 as replaced by Directive (EU) 2023/2673, gives this sentence for traders that must provide the function: "You can also exercise your right of withdrawal online at [insert internet address or another appropriate explanation of where the withdrawal function is available]. If you use this online feature, we will send you an acknowledgement of receipt of the withdrawal on a durable medium (e.g. by email), including its content and the date and time of its submission, without undue delay." Use your national language version of the model instructions.

National law and penalties

Member States set the penalties (Article 24 of Directive 2011/83/EU as replaced by Directive (EU) 2019/2161). They must be effective, proportionate and dissuasive. For widespread infringements handled in coordinated action under Regulation (EU) 2017/2394, the maximum fine must be at least 4% of the trader's annual turnover in the Member States concerned, or at least EUR 2 million where turnover information is not available. National rules, the exact national button wording and whether your country transposed on time all differ: check your national law.

Try it on one client shop first

Run both scrapers on one shop, place a small test order, use the withdrawal function and time the acknowledgement email. Then run the rest of your client list. Related free sheets: website legal notice check · GPSR product page check · unit price check · green claims check.

Frequently asked questions

Does the withdrawal button apply to ordinary web shops, not only banks?

Yes. Article 11a covers distance contracts concluded by means of an online interface, and Recital 37 of Directive (EU) 2023/2673 says the obligation should apply not only to distance contracts for financial services but to all distance contracts subject to the right of withdrawal under Directive 2011/83/EU.

From when does it apply?

Member States had to adopt and publish the measures by 19 December 2025 and apply them from 19 June 2026 (Article 2(1) of Directive (EU) 2023/2673).

Is an email address for withdrawals enough?

Not for contracts concluded through an online interface. The consumer can still use the model form or any other unequivocal statement (Article 11(1)), but Article 11a(1) says the trader must ensure the consumer can also withdraw by using a withdrawal function.

Can the shop let customers withdraw from only part of an order?

Recital 37 says that where several goods or services are ordered in the same distance contract, the trader can offer the possibility to withdraw from a part rather than the whole contract.

Not legal advice. The sheet only helps a person check a shop; it does not decide whether a wording is unambiguous, whether an exception applies, sector rules or national penalties. When in doubt, ask your consumer authority or a lawyer. Spotted an error? Write to mininglife7@gmail.com and we correct it.

Sources

← All guides

Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.