EU Order Withdrawal Compliance
Free
$0.00

June 19, 2026. The EU Isn't Asking.

EU Directive 2023/2673 makes an electronic withdrawal button mandatory for every online store selling to EU consumers.

14
Days — the EU standard return window
8
Legal exception types supported
4
Admin views for full request control
2
Automated emails per withdrawal (customer + admin)

Everything the Law Requires. Everything You Need.

EU Directive 2023/2673 specifies the button, the flow, the email, and the records. This extension delivers all four — and the admin tooling to manage them.

Eligibility-Gated Withdrawal Button

The button appears only when it should — correct order status, open window, no duplicate request. A live countdown shows customers exactly how many days remain.

Two-Step Confirmation Flow

Customers review consequences and check a confirmation box before the withdrawal registers. Their informed consent is documented before your obligation begins.

Instant Durable Medium Email

EU law requires written acknowledgment immediately upon receipt. The confirmation email goes out before the page even reloads — timestamped, branded, legally referenced.

8 Legal Exception Types

Perishables, custom orders, digital content, sealed hygiene goods, sealed media, time-sensitive services, urgent repairs, newspapers. Set the exception on each product — the button disappears automatically.

Per-Product Withdrawal Periods

Different products carry different obligations. Set a custom period per product. The system applies the longest period in any order automatically — maximum customer protection, minimum manual work.

12-Month Safety Net

If a customer wasn't properly informed of their withdrawal right at purchase, EU law extends their window to 12 months. One toggle setting handles this automatically — because finding out after the fact is expensive.

Weekend Deadline Extension

When the withdrawal window expires on a Saturday, it rolls automatically to the following Monday — exactly as EU consumer protection guidance expects. The countdown shows the correct date. Always.

Analytics Dashboard

Withdrawal volume month by month over 12 months. Status distribution at a glance. If your withdrawal rate is climbing, something is wrong — the chart shows you before the reviews do.

CSV Export for Auditors

One click exports every withdrawal record — ID, order number, customer, reason, refund amount, timestamps, admin notes. Hand it to your accountant. Hand it to the regulator. Done.

The Button That Regulators Come Looking For

EU enforcement starts with a simple question: can a customer find the withdrawal option without calling your support team? The withdrawal button appears directly on the customer's order page — visible, clearly labeled, and gated so it only shows up when the withdrawal right is actually active.

  • Appears on order detail page, order history, or both
  • Live countdown — customers see the deadline, not just a button
  • Two-step flow with confirmation checkbox — documented, defensible
  • Bootstrap 5 and UIkit 3 template support out of the box
  • Customizable theme color to match your store

Admin Management That Keeps Up

Withdrawal requests don't arrive on a schedule. They arrive all at once after a busy weekend, or one at a time for months, then suddenly three in a morning. The admin dashboard keeps you across all of it — with search, filters, bulk actions, and a per-record detail view that holds everything your team needs to process and document each request properly.

  • Dashboard: pending count, processed this month, rejection rate
  • Search by order number, customer name, or email
  • Log refund amounts and payment reference numbers per request
  • Bulk approve, reject, or delete selected requests
  • Audit logging — every action timestamped for compliance

Not Everything Can Be Returned. The Law Knows That.

EU consumer rights law carves out eight product categories from the right of withdrawal. This extension puts those exceptions directly in your product settings — one dropdown, per product, and the withdrawal button handles the rest. Digital products get an additional layer: a consent gate at checkout that requires customers to explicitly waive their right before accessing the content.

  • Perishable goods
  • Custom and personalized products
  • Sealed hygiene products and sealed media
  • Digital content with consent gate
  • Customer-facing explanation for why the item is exempt

Real Stores. Real Compliance Scenarios.

A German customer orders three shirts. Nine days later — still inside the 14-day window — they want to return one. They log in, open the order, and see the withdrawal button with a "2 days remaining" countdown. Two-step flow. Confirmation email lands in their inbox. Admin sees the notification. They log the refund, process it, and mark the request closed. Timestamped record. No phone call. No manual spreadsheet. Fully compliant from click to close.

A French customer purchases a software license. The store owner has flagged all software products as "Digital Content" exceptions. When the customer views their order, no withdrawal button appears — instead, a notice explains that digital content already delivered is exempt from the withdrawal right under EU law. Zero support tickets. The exemption is handled before the customer even asks. For future orders, a checkout consent gate records the customer's explicit agreement before the download is unlocked.

A Dutch customer orders a personalized photo book (exempt) alongside a standard USB charger (eligible). With partial withdrawals enabled, the customer can withdraw the charger while the photo book obligation stands. The system identifies the eligible and exempt items automatically — one flow, two outcomes, correct result for both product types. No developer customization required.

Online Education Platform — The 12-Month Rule

An Italian online course platform isn't certain their checkout disclosure fully satisfies EU requirements. They enable the "extend period if not informed" setting — orders without a confirmed disclosure flag get a 360-day withdrawal window. Six months later, a subscriber requests a withdrawal. The button is still live on their order page. The platform processes it within the legal refund window. No compliance incident. No fine. The safe choice, made once, in a settings panel.

An Austrian store receives a formal inquiry from the national consumer protection authority. The regulator wants records of all withdrawal requests from the past 12 months. The store owner clicks Export — a dated CSV downloads with every request: ID, order number, customer, reason, refund amount, processing timestamp, admin notes. They forward three confirmation emails from their inbox, each citing EU Directive 2023/2673 with the exact receipt timestamp. Audit closed. No fine. That's what the export button is for.

The Deadline Doesn't Move. Neither Should You.

Every Joomla ecommerce store selling to EU consumers needs this before June 19, 2026. The button, the flow, the email, the records — it's all here. Get compliant today. The fine for waiting is considerably more expensive.

Translated In The Following Languages

Arabic Unitag (ar-AA), Chinese, Traditional (zh-TW), Danish (da-DK), Dutch (nl-NL), English (en-GB), English, USA (en-US), Finnish (fi-FI), French (fr-FR), German (de-DE), Greek (el-GR), Hebrew (he-IL), Italian (it-IT), Japanese (ja-JP), Norwegian Bokmål (nb-NO), Persian Farsi (fa-IR), Polish (pl-PL), Portuguese, Brazil (pt-BR), Portuguese, Portugal (pt-PT), Russian (ru-RU), Spanish (es-ES), Swedish (sv-SE), Turkish (tr-TR)


  • Developer J2Commerce
  • Extension Type Module, Apps
  • J2Commerce Version 4.x, 6.x
  • Joomla Version 4.x, 5.x, 6.x
Language Translations
Arabic UnitagArabic Unitag
Chinese, TraditionalChinese, Traditional
DanishDanish
DutchDutch
EnglishEnglish
English, USAEnglish, USA
FinnishFinnish
FrenchFrench
GermanGerman
GreekGreek
HebrewHebrew
ItalianItalian
JapaneseJapanese
Norwegian BokmålNorwegian Bokmål
Persian FarsiPersian Farsi
PolishPolish
Portuguese, BrazilPortuguese, Brazil
Portuguese, PortugalPortuguese, Portugal
RussianRussian
SpanishSpanish
SwedishSwedish
TurkishTurkish

Fix user id is missing when creating a new order withdrawal request

Update Requires the app_orderwithdrawal plugin (model, mailer, eligibility, settings)

Update Requires Joomla 6.x and J2Commerce 6.x

Fix Fix UIKit modals and buttons

Fix Fix sub-template selection

Deletion Disabled extend_if_not_informed option (left in the code, but off by default)

New Feature Disabled button when order withdrawal is not possible (with a reason)

Improvement Do not allow periods to be more than a year

New Feature Show a mandatory digital-consent checkbox at checkout when a cart product has require_digital_consent enabled

New Feature Checkbox label lists the specific exempt product names: "I understand that I lose my right of withdrawal once the delivery of [products] has begun"

New Feature Client-side JS blocks the Place Order button until the box is ticked; server-side hook enforces it when core dispatches the validate event

New Feature Bootstrap 5 and UIkit checkout subtemplates for the consent block

New Feature Add global "All Digital Downloads Are Exempt" plugin option (default: No): when enabled, any downloadable product in the cart automatically triggers the digital-consent checkbox

Fix Fix email templates

New Feature Add Brazilian Portuguese, Traditional Chinese, Norwegian Bokmal, Danish, Finnish, and Turkish translations

Improvement Bump version to 6.0.2

Update Requires Joomla 6.x + J2Commerce 6.x

New Feature Add visual-builder email templates for admin and customer, editable in Email Templates

New Feature Show withdrawal status (approved / under review) on already-submitted orders via a details modal

New Feature Add withdrawal status to the order history

New Feature Add withdrawal status to the order details

New Feature Add exempt status to orders that have exempt products

Fix Fix blank admin and customer emails (undefined-variable warnings in the email templates)

Fix Fix withdrawal form fields rendering outside the modal box

New Feature Pre-fill name and email in the withdrawal form for logged-in customers

New Feature Collapse the withdraw action into a single icon button with a days-remaining tooltip

Fix Fix dashboard withdrawals chart to match the main dashboard chart styling

Improvement Prefer merchant-editable email templates, falling back to the built-in layouts

Improvement Display the withdraw button inline with the other order action buttons

Update Requires Joomla 6.x + J2Commerce 6.x

New Feature Frontend order-withdrawal request module (EU right of withdrawal)

New Feature Three-step flow: request form, confirmation step, success screen

New Feature Order ownership verified by email before any withdrawal is accepted

New Feature Eligibility checks: withdrawal period, already-withdrawn, exempt products

New Feature Bootstrap 5 and UIkit subtemplate variants via the Subtemplate field

New Feature Customer and admin email notifications on a successful withdrawal

New Feature Optional post-submission redirect URL

New Feature CSRF token protection on every form submission

Update Requires the app_orderwithdrawal plugin (model, mailer, eligibility, settings)

Update Requires Joomla 6.x and J2Commerce 6.x

Fix Installer does not finish on Joomla 6 installation

New Feature Added add-on image

New Feature Added status layouts for frontend

New Feature Added language keys for the new layouts

New Feature Order withdrawal actions logged to J2Store order history (submitted, processed, rejected)

New Feature Translated into 13 languages

Improvement Extension renamed to EU Order Withdrawal Compliance

New Feature Module mod_j2store_orderwithdrawal bundled in package

You may also be interested in these products

Stay Updated

Subscribe for free and be the first to know about the latest features, updates, and new additions.