Forums / All Other Contributions/Addons / EU Withdrawal Button [Support Thread]

EU Withdrawal Button [Support Thread]

Views: 69

Results 1 to 4 of 4
5 Oct 2026, 9:24 AM
#1
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,865
Plugin Contributions:
18

EU Withdrawal Button [Support Thread]

EU Withdrawal Button v1.0.0: the withdrawal function EU law requires from 19 June 2026, for Zen Cart 1.5.8 through 3.0.0, as an encapsulated plugin

GitHub: https://github.com/dbltoe/EU_Withdrawal_Button

Download: https://github.com/dbltoe/EU_Withdrawal_Button/releases/tag/v1.0.0 (also free at https://myzencartzone.com/index.php?main_page=product_info&products_id=40)

Zen Cart: 1.5.8a, 2.0.x, 2.1.0, 2.2.x, 2.3.x and 3.0.0, one package

PHP: 7.4 through 8.5

License: GPL-2.0

Why it's needed

From 19 June 2026, Article 11a of the Consumer Rights Directive (added by Directive (EU) 2023/2673) requires a store selling online to consumers in the EU to offer a withdrawal function: a clearly labeled "withdraw from contract here" button, a short form, a "confirm withdrawal" step, and an acknowledgment of receipt on a durable medium with the date and time. As discussed in the EU Withdrawal Button thread earlier this year, Zen Cart had nothing for it.

What it does

  • Adds a Withdraw From Contract Here button to the footer of every page, with no template edits.
  • The withdrawal page needs no account: name, order and email, then a review screen with the Confirm Withdrawal button. A logged-in customer's details are filled in and they pick from their recent orders; the button on an order's page opens the form for that order.
  • The moment the customer confirms, they're emailed an acknowledgment of receipt with their statement and the date and time it was sent, and the store gets a notice with reply-to set to the customer. Both go out after the statement is saved, so a mail failure loses nothing, and a failed acknowledgment can be sent again from the admin.
  • A statement is never refused. One that doesn't match an order is saved and flagged for you to look at.
  • A matched order gets a note in its history that the customer doesn't see, and can move to an order status you choose.
  • Customers > Withdrawals in the admin lists every statement with its status, a staff note and a Send Acknowledgment button.
  • A spam trap holds suspicious statements, emailing nobody, until you release them.
  • The two labels the law fixes come word for word in English, Dutch, Finnish, French, German, Italian and Spanish.
  • Show Withdrawal Button To can be All Visitors (the default) or Selected Countries (the EU plus Iceland, Liechtenstein and Norway), so a store outside the EU can show it only to customers there.
  • Both emails are previewable in the free Preview Email plugin, built by the same code that sends them.

Encapsulated. One folder under zc_plugins/, installed from Plugin Manager. No core or template file is changed.

Installing

  1. Upload zc_plugins/EuWithdrawalButton/ so it lands at <store root>/zc_plugins/EuWithdrawalButton/v1.0.0/.
  2. Admin > Modules > Plugin Manager > EU Withdrawal Button > Install.
  3. In Configuration > EU Withdrawal Button, set Store Time Zone (for example Europe/Berlin). Left blank, the acknowledgment uses PHP's own time zone, which on most hosting servers is UTC.
  4. Look over the other settings. Everything else works as installed.

What it doesn't decide

The acknowledgment confirms receipt, not acceptance. Whether a withdrawal is valid, and whether customers outside the EU have the right at all, is a question for your own legal advisor; the plugin records and acknowledges, it doesn't decide.

The full documentation (readme.html) is inside the plugin and linked from the Plugin Manager panel.

Reporting a problem

Please include your Zen Cart and PHP versions, your template, and what you saw. If an email didn't arrive, open the statement in Customers > Withdrawals: it shows whether the acknowledgment was sent, and why not if it wasn't. For anything else, look in logs/ for a myDEBUG- file from that moment and attach it.

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

6 Oct 2026, 1:36 AM
#2
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,865
Plugin Contributions:
18

Re: EU Withdrawal Button [Support Thread]

EU Withdrawal Button Pro 1.0.0 is out

The free EU Withdrawal Button takes a customer's withdrawal statement and acknowledges it, as Article 11a asks. What comes after that, the return itself, is now covered by a Pro edition:

  • Customers choose the items and quantities they're withdrawing from, with an optional reason for each, right on the withdrawal page.
  • A Return panel on each withdrawal (Customers > Withdrawals): an RMA number, return instructions with a send-back-by date, your return address, a tracking number and a PDF return label, emailed to the customer.
  • Return Received item by item, with an optional restock, then the refund recorded (to the original payment method, or as store credit through a gift certificate) or Not Accepted with your reason. Pro records refunds; it doesn't move money.
  • Track Your Return: a page the customer opens from any of the emails, or from their order in My Account.
  • The EU model withdrawal form (Annex I(B)) in every order confirmation email, with your details filled in.
  • Deadlines on every withdrawal (refund due, goods due back, and a flag for one that came late) and Article 16 exclusions as reminders for made-to-order, perishable, sealed or digital goods. Nothing is ever refused automatically.
  • Returns mode (optional): a Request a Return link and page for your customers outside the EU, with your own return policy, return window, restocking fee and return shipping fee.
  • Reports > Withdrawals and Returns: by month and by product, with reasons, refunds and the share of orders.

Every email it sends shows in the free Preview Email plugin. Zen Cart 1.5.8 through 3.0.0, PHP 7.4 through 8.5, an encapsulated plugin with no core or template edits. It needs the free EU Withdrawal Button 1.1.0 or later, and the free plugin stays complete on its own.

Pro is on myzencartzone.com: https://myzencartzone.com/index.php?main_page=product_info&products_id=41

Questions about either edition are welcome here.

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

6 Oct 2026, 7:34 AM
#3
torvista avatar

torvista

Totally Zenned

Join Date:
Aug 2007
Location:
Gijón, Asturias, Spain
Posts:
2,876
Plugin Contributions:
7

Re: EU Withdrawal Button [Support Thread]

Great effort. Thanks for this.

As expected, I never managed to finish polishing my port of the german ZC version!

Is this all AI-generated?

Steve
github.com/torvista: BackupMySQL, Structured Data, Multiple Copy-Move-Delete, Google reCaptcha, Image Checker, Spanish Language Pack and more...

6 Oct 2026, 11:36 PM
#4
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,865
Plugin Contributions:
18

Re: EU Withdrawal Button [Support Thread]

torvista:

Is this all AI-generated?

I use AI, but I have to monitor it a lot. And I'm using one of the highest-capability modes, supposedly.

I wouldn't recommend it to someone new to Zen Cart.

It tends to make the same mistakes we all made when new to Zen Cart. "I know how I did this in XYZ; I'll just throw my code in and make it work." Most who did that regretted it greatly at upgrade. I will admit, it's made great strides in just this year.

Experience from working with all the different types of sites we host also gives us a wider range of "what ifs" to throw at the testing phase.

Better knowledge of what ZC scans for on initial plugin submission helps slow down the 1.0.0, 1.0.1, and 1.0.3 quick submissions so we can fix the small things found by previous scans.

Still, as in mprough letting us know about Australia's rules for abandoned carts, we don't catch it all, and neither does AI.

It's the AI version of caveat emptor.

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com