BLACK FRIDAY
Save 59% on PageForge Annual $191/year $485/year
Claim 59% Off →
EU Withdrawal Button for WooCommerce icon
Actively maintained Tested up to 7.0.6 #2 in consumer rights

EU Withdrawal Button for WooCommerce

Helps WooCommerce store owners implement the withdrawal flow described in EU Directive 2023/2673.

Active installs500+100+ tier
Downloads · 30d247▲ +5.1% vs prev. 30d
Rating5/52 reviews
Health score57/100Fair
All-time downloads2.3KSince Apr 2026
Support resolved0 / 10% in last 2 months
RequiresWP 6.2PHP 7.4+
Downloads · 7d48▼ -20% week over week
Our verdict

Use with caution

EU Withdrawal Button for WooCom… works, but test it on a staging site before relying on it in 2026. It runs on 500+ sites, is rated 5/5 and was last updated 3 months ago, and scores 57/100 on our health check.

  • Small user base (500+ active installs)
  • Very few reviews so far

How does it stack up?

Side-by-side on installs, updates, ratings & support

Daily downloads

204060Jul 3Aug 16Sep 30
Yesterday8
Daily average (1y)13
Peak day89Jun 18, 2026
Last 12 months2.3K

Download spikes usually follow a new release — each site that auto-updates counts as a download.

Rankings

Where EU Withdrawal Button for Wo… stands today

WordPress.org search rankings

Live position in the plugin search, top 100
KeywordPositionCompeting pluginsCategory
consumer rights #5 375 Best consumer rights plugins →
eu #12 1,373 Best eu plugins →
returns #52 9,411 Best returns plugins →
withdrawal #6 307 Best withdrawal plugins →
woocommerce >100 10,000 Best woocommerce plugins →

Version adoption

Share of active sites per release.

  • 2.180.3%
  • 2.019.7%

Rating breakdown

★★★★★★★★★★ 5 from 2 reviews

  • 5★100.0%
  • 4★0.00%
  • 3★0.00%
  • 2★0.00%
  • 1★0.00%

About EU Withdrawal Button for WooCommerce

From the official readme · v2.1.0

Description

EU Directive 2023/2673 introduces new requirements for online stores regarding consumer withdrawal rights, taking effect on June 19, 2026.

EU Withdrawal Button for WooCommerce helps you implement a clear, accessible withdrawal flow for your customers:

The 4-Step Flow

  1. Visible Button — Sticky withdrawal bar (shown across your store by default, configurable per page type; always on My Account)
  2. Withdrawal Form — Customer enters order number + email for verification; partial withdrawals supported
  3. Confirmation Step — Order summary with a separate “Confirm withdrawal” button
  4. Notifications — Confirmation email to customer + notification to merchant

Free features

  • Sticky bar with configurable text and button, plus an optional footer link
  • Modal popup or dedicated page mode
  • Order validation (order number + email + withdrawal window check)
  • Partial withdrawals: customers select the items and quantities to withdraw
  • Optional refund IBAN field — stored encrypted, masked in lists and exports, auto-erased 30 days after completion
  • Custom WooCommerce order statuses: “Withdrawal Requested” and “Withdrawal Closed”
  • Withdrawals overview in the WordPress admin
  • WooCommerce email integration (shows in WooCommerce → Settings → Emails)
  • Guest-friendly withdrawal link in WooCommerce order emails — no account needed
  • Return instructions link in the customer confirmation email
  • WordPress privacy tools integration (GDPR data export and erasure)
  • Support for custom order number plugins (Sequential Order Numbers, etc.)
  • WCAG 2.1 AA accessible (keyboard navigation, focus trap, ARIA labels)
  • Rate limiting for abuse prevention
  • Translations bundled: Estonian, Finnish, French, Swedish, Italian, Dutch
  • HPOS (High-Performance Order Storage) compatible

Pro (paid)

  • One-click Complete/Reject actions with automatic customer emails
  • My Account widgets: countdown badges and withdrawal status column
  • Thank-You page and order-view withdrawal boxes
  • Custom colors, styling and custom CSS
  • Excluded categories and product-level exceptions
  • GDPR consent checkbox on the withdrawal form
  • Payment-method-aware IBAN field (hide for card payments)
  • Statistics dashboard, CSV export, REST API
  • Priority support

Who Is This For?

WooCommerce store owners who sell to EU consumers and want to provide a clear withdrawal process for their customers.

Disclaimer

This plugin is a technical tool that helps implement a withdrawal flow. It does not constitute legal advice and does not guarantee compliance with any specific regulation. Consult a legal professional to ensure your store meets all applicable requirements.

Translations

Bundled translations and their contributors:

  • Estonian (et) — Riin Agency
  • Finnish (fi) — Riin Agency
  • French (fr_FR) — Riin Agency (community review welcome)
  • Swedish (sv_SE) — Riin Agency (community review welcome)
  • Italian (it_IT) — contributed by Cristina Gregolin (Artilabio)
  • Dutch (nl_NL) — contributed by Mark Govaerts (Bepos)

Want to contribute a translation? Email plugin@riin.eu — you will be credited here.

Installation

  1. Upload the eu-withdrawal-button-for-woocommerce folder to /wp-content/plugins/
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Go to WooCommerce → Settings → Withdrawal Button to configure
  4. The withdrawal button will appear on your storefront

Frequently asked questions

What does this plugin do?

It adds a visible withdrawal button to your store, along with a form where customers can submit withdrawal requests. The plugin validates the order, notifies both parties via email, and tracks the request.

What happens when a customer submits a withdrawal?

The customer receives a confirmation email, the merchant receives a notification, an order note is added, and the order status changes to “Withdrawal Requested” (configurable).

Can I exclude certain products?

Product category exclusions and per-product exceptions are available in the Pro version.

What is the difference between the free and Pro versions?

The free version covers the legal essentials: the withdrawal button, the form, order validation, notifications and a read-only withdrawals overview. Pro adds the merchant toolkit — one-click Complete/Reject with automatic customer emails, My Account widgets, styling, exclusions, GDPR consent checkbox, payment-method IBAN rules, statistics, CSV export and the REST API.

Does it work with custom order number plugins?

Yes, the plugin searches by WooCommerce order ID, custom order number meta fields, and order number output — compatible with Sequential Order Numbers and similar plugins.

In which languages is the plugin available?

English plus bundled translations for Estonian, Finnish, French, Swedish, Italian and Dutch. All texts are translation-ready (gettext), and merchant-entered texts can be translated per language with WPML/Polylang.

Is my data sent to third parties?

No. The plugin stores withdrawal data in your own WordPress database and makes no external requests. Refund IBANs are stored encrypted, shown masked, and erased automatically 30 days after a withdrawal is completed. The plugin integrates with the WordPress privacy tools (Tools → Export/Erase Personal Data).

Changelog

New tier system with Freemius licensing. Improved compatibility with custom order number plugins.

2.1.0

  • New pricing model: one free edition + one Pro plan (€79/year) with every paid feature. Existing Basic licenses purchased earlier remain fully valid.
  • New: withdrawals overview for everyone — the free edition now shows the full withdrawals list in the admin (read-only; one-click management actions are Pro).
  • New: GDPR consent checkbox (Pro) — optional privacy notice + required checkbox on the confirmation step, with a {privacy_policy} placeholder linking to your privacy policy page.
  • New: payment-method-aware IBAN field (Pro) — optionally show the refund IBAN field only for offline payments (COD, bank transfer, cheque); card payments are refunded via the gateway.
  • New: IBAN protection (all plans) — refund IBANs are now stored encrypted, displayed masked (EE38****5877) with an explicit reveal action, masked in CSV exports and REST responses, and automatically erased 30 days after the withdrawal is completed (with an audit note).
  • New: return instructions page — select the page with your return instructions; the customer confirmation email links to it (falls back to your WooCommerce Terms page).
  • New: WordPress privacy tools integration — withdrawal records are included in the built-in personal data export and erasure (Tools → Export/Erase Personal Data).
  • New translations: Italian and Dutch. Italian contributed by Cristina Gregolin (Artilabio), Dutch contributed by Mark Govaerts (Bepos) — thank you!
  • Fix: bundled translations now actually load — the load_plugin_textdomain() call was lost in the 2.0.0 refactor, so Estonian/Finnish/French/Swedish stores saw English.
  • Fix: the Export CSV button (Pro) did nothing — its AJAX handler was never registered.
  • Fix: the My Account countdown badge replaced the order number link; the linked order number is now always shown with the badge next to it.
  • Fix: bulk “Mark as completed/rejected” now performs the complete flow (order status, order note, customer email, previous-status restore) exactly like the row actions; the REST API complete/reject endpoints too (previously the REST reject restored the wrong status and re-sent WooCommerce status emails).
  • Fix: products in excluded categories (and Pro product-level exceptions) can no longer be selected in a partial withdrawal — exempt lines are shown unselectable and filtered server-side.
  • Fix: the withdrawal form no longer fails on sites with full-page caching (the security nonce baked into cached HTML expired; the public endpoints now rely on rate limiting + order/email verification).
  • Fix: the customer confirmation email no longer promises a refund deadline tied to the (possibly extended) withdrawal window, and only mentions the “withdrawal closed” email when that email actually exists and is enabled.
  • Fix: fresh installs now show the sticky bar on all page types by default (existing installations keep their settings).
  • Fix: plain-text emails no longer contain raw HTML; the merchant email order link is HPOS-safe.
  • Fix: the “Require order validation” setting is now labelled accurately (“Require email match”) — the order number was always verified regardless of the toggle.
  • Performance: frontend CSS/JS and the modal markup now load only on pages with a withdrawal entry point; the admin orders list and My Account column no longer run one query per row.
  • Developer: ra_euwb_confirmation_before_actions action in the form template; ra_euwb_offline_payment_methods filter; shared set_withdrawal_status() service behind admin, bulk and REST status changes.

2.0.2

  • Fix: the optional footer “Right of withdrawal” link is now always visible — it previously inherited the theme’s footer text colour and could blend into the background. It now sits on a light strip with a clearly coloured link.
  • New: French (fr_FR), Finnish (fi) and Swedish (sv_SE) translations bundled.

2.0.1

  • Fix: the withdrawal total on the confirmation step now updates live as the customer checks/unchecks items or changes quantities, instead of always showing the full order total.
  • Fix: the withdrawal total now reflects only the selected line items — shipping, fees and other order lines are no longer included.
  • Tweak: the confirmation total is now labelled “Withdrawal total” for clarity.
  • Compatibility: tested up to WordPress 7.0.

2.0.0

  • WordPress.org edition. First release published on the WordPress.org plugin directory. Feature parity with 1.5.x, Lite tier only. Paid upgrades continue to be distributed via riin.eu.
  • Code: Full prefix refactor to ra_euwb_ / RA_EUWB_ / ra-euwb- across options, hooks, CSS classes, JS globals, nonces and admin menu slugs, to comply with the WordPress.org guidelines on unique prefixes. Existing WC order status slugs (wc-ewb-withdrawn, wc-ewb-completed), the database table ({prefix}ewb_withdrawals) and the _ra_euwb_deactivated_withdrawal order meta key are preserved so existing installations continue to work without data migration.
  • Code: Removed all inline <style> and <script> output. Admin order-status colours and the frontend ra-euwb-hidden utility class are now part of the enqueued stylesheets. Frontend button colours are static (overridable via theme CSS) instead of dynamic option-backed inline styles.
  • Code: Custom CSS setting removed from the free build (WordPress.org guideline: plugins must not execute arbitrary user-supplied CSS from options).
  • Code: Text domain updated from eu-withdrawal-button to eu-withdrawal-button-for-woocommerce to match the WordPress.org plugin slug.
  • Misc: Removed the now-unused class-ewb-i18n.php helper (text domain is loaded directly via load_plugin_textdomain() on init).

1.5.0

  • Compliance Update — EU Directive 2023/2673. All compliance-critical features are available in the free version.
  • Guest-friendly direct link in order emails: The WooCommerce customer “processing” and “completed” order emails now include a “Withdraw from this order” button. The link opens the withdrawal form pre-verified against the order — no login required. Solves the guest-checkout compliance gap (the directive explicitly requires that withdrawal must not depend on having a customer account).
  • Dismissible sticky bar: Visitors can close the sticky bar with an X button. Dismissal is remembered for a configurable number of days (default 7, configurable 0–30) via localStorage. My Account pages ignore the dismissal and always show the bar (EU compliance — customer must be able to request a withdrawal there).
  • Partial withdrawal support: Customers can now select specific items and quantities to withdraw instead of the whole order. The confirmation step shows per-item checkboxes and quantity inputs, pre-filled with the full order.
  • Optional IBAN field: Customers can provide a bank account for the refund (useful when they paid by card or want the refund sent to a different account). Leaving it empty tells the merchant to refund to the original payment method. The IBAN is shown prominently in the merchant notification email and in the admin withdrawals list.
  • Configurable sticky bar display: New “Show sticky bar on” multiselect under Withdrawal Button → General lets merchants pick which page types show the sticky bar (Homepage, Shop & product pages, Cart & checkout, Other). The My Account pages always show the sticky bar (EU compliance — customer must be able to request a withdrawal there). Existing installations default to My Account pages only after the upgrade, so update your settings if you want the sticky bar elsewhere.
  • Discreet footer link: Optional small “Right of withdrawal” link can be shown in the footer (useful when the sticky bar is disabled on most pages).
  • Admin: Withdrawals list now shows a Full / Partial badge and a hoverable list of the selected items per request, plus a dedicated IBAN column.
  • Emails: Customer confirmation and merchant notification emails now list only the selected withdrawn items (with a partial-withdrawal notice when applicable) and show the IBAN. Legacy rows from pre-1.5.0 fall back to the full-order view.
  • Database: New withdrawn_items (JSON) and iban columns on {prefix}ewb_withdrawals. The upgrade runs automatically on plugin load via dbDelta() — no manual action required.
  • Security: Submitted item selections are re-validated server-side against the actual order (quantities clamped, unknown items rejected) to prevent tampering.
  • Security hardening (CIA audit pass): (a) CSV export now escapes spreadsheet formula injection (leading =, +, -, @, tab, CR) and includes the Withdrawn Items + IBAN columns that were previously silently misaligned. (b) Client IP detection no longer trusts HTTP_X_FORWARDED_FOR / HTTP_CLIENT_IP by default — sites behind a trusted reverse proxy (e.g. Cloudflare) can opt in via the ewb_trust_forwarded_ip filter. (c) Submission now holds a MySQL advisory lock per order around the duplicate check + insert, closing the race window that allowed two simultaneous clicks to create duplicate withdrawal rows. (d) The public ewb_validate_order and ewb_lookup_by_key endpoints are now rate-limited (30 requests per 5 minutes per IP). (e) “Order not found” and “email does not match the order” are collapsed into a single generic verification error to prevent order enumeration. (f) Support form Reply-To header explicitly strips CR/LF defending against header injection.

1.4.0

  • IMPORTANT: Clarified “Withdrawal Completed” semantics. Renamed the user-facing label to “Withdrawal Closed” everywhere it appeared (order status, emails, order notes, My Account box, admin). The status no longer implies that an automatic refund has been issued — merchants must refund manually via WooCommerce → Orders. Automatic wc_create_refund() integration is planned for a future Pro release. Internal status slug (wc-ewb-completed) is unchanged so existing orders continue to work.
  • IMPORTANT FIX: The sticky bar, withdrawal form, confirmation email, “closed” email and admin information guide previously hardcoded “14 days” even when merchants configured a different ewb_withdrawal_days value. All texts now reflect the configured value dynamically with proper single/plural handling. Merchants can also use the {days} placeholder in the custom Bar text field.
  • Updated customer closed-request email to clearly state that the merchant will issue the refund manually, instead of claiming the refund has already been processed.
  • Added a “Heads up” admin notice on every plugin settings tab explaining the manual refund workflow.
  • Performance & reliability: Order number lookup fallback (step 3) now filters by the configured withdrawal window (days + 2 buffer) instead of the arbitrary “last 500 orders” limit, and is capped at 1000 orders scanned. Both bounds are adjustable via the ewb_order_lookup_cutoff_date and ewb_order_lookup_max_scan filters. A warning is logged if the fallback triggers — this helps merchants spot custom order number plugins that don’t use the standard _order_number meta key.
  • Code quality: Custom CSS (Basic+) now uses wp_add_inline_style() attached to the main ewb-frontend stylesheet handle instead of printing a raw <style> tag on wp_head. This integrates with minify/cache plugins and follows WordPress standards.

Full changelog on WordPress.org →

Screenshots

Sticky bar with withdrawal button on the storefront
Sticky bar with withdrawal button on the storefront
Withdrawal form modal
Withdrawal form modal
Confirmation step with order summary
Confirmation step with order summary
WooCommerce settings page
WooCommerce settings page
EU Withdrawal Button for WooCommerce screenshot
EU Withdrawal Button for WooCommerce screenshot
EU Withdrawal Button for WooCommerce screenshot

For developers

Is this your plugin? Show off the numbers.

Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.

Active installs badge Rating badge Health score badge

Best EU Withdrawal Button for WooC… alternatives

All consumer rights plugins →
Alternatives
Rank Plugin Active installs Rating Updated Health
1 EU Withdrawal and Legal Guarantee Compliance EU Withdrawal and Legal Guarantee Compliance Free EU consumer-rights toolkit: withdrawal function, harmonised legal guarantee notice… by Fernando Tellado 1K+ ★★★★★★★★★★ 5 (17) 45 minutes ago 86
3 Bitron Right of Withdrawal Bitron Right of Withdrawal Accessible online withdrawal form. Built for the EU Consumer Rights Directive update… by oaron 400+ ★★★★★★★★★★ 5 (4) 1 week ago 61
4 Spotrebiteľské práva pre WooCommerce Spotrebiteľské práva pre WooCommerce Withdrawal-from-contract & complaint (reklamácia) forms for WooCommerce. EU Directive… by onlinefotka 300+ ★★★★★★★★★★ 5 (2) 25 minutes ago 80
5 Rétractation Légale for WooCommerce Rétractation Légale for WooCommerce Online withdrawal button for WooCommerce — EU Directive 2019/2161 (Omnibus), 30 EEA… by redouanedz 300+ ★★★★★★★★★★ 5 (1) 4 months ago 50
6 Revoker for WooCommerce Revoker for WooCommerce EU-compliant withdrawal button for WooCommerce – enables customers to easily revoke orders… by KOMMERS GmbH 100+ ★★★★★★★★★★ No reviews 3 months ago 48
7 Sulado Odstúpenie a reklamácie for WooCommerce Sulado Odstúpenie a reklamácie for WooCommerce Slovak-law online contract withdrawal (§ 20a, required from 19 June 2026) and warranty… by Tomáš Martinčok 70+ ★★★★★★★★★★ No reviews 3 months ago 53
8 SDP EU Withdrawal for WooCommerce SDP EU Withdrawal for WooCommerce Extend WooCommerce order withdrawals with eligibility rules, admin review, digital product… by Simple Direct Plugins 40+ ★★★★★★★★★★ 5 (1) 2 days ago 78
9 APG Withdrawal for WooCommerce APG Withdrawal for WooCommerce Add to WooCommerce an online withdrawal workflow with customer form, My Account integration… by Art Project Group 40+ ★★★★★★★★★★ 5 (1) 18 hours ago 74
10 Conformitico Recesso 54-bis for WooCommerce Conformitico Recesso 54-bis for WooCommerce Right-of-withdrawal toolkit (Directive 2023/2673): form, checkout consents, model form… by Conformitico 30+ ★★★★★★★★★★ 5 (1) 3 days ago 78
11 BeziWorld Withdrawal for WooCommerce BeziWorld Withdrawal for WooCommerce EU 2023/2673 withdrawal-from-contract flow for WooCommerce. Per-item withdrawals, guest… by beziworld 20+ ★★★★★★★★★★ 5 (1) 3 months ago 69

FAQ

EU Withdrawal Button for WooCommerce: quick answers

Straight answers, pulled from live WordPress.org data.

Live data from WordPress.org · checked Oct 1, 2026

Is EU Withdrawal Button for WooCom… free?

Yes. EU Withdrawal Button for WooCom… is free to download and use from the official WordPress.org plugin directory.

Is EU Withdrawal Button for WooCom… safe to use in 2026?

EU Withdrawal Button for WooCom… works, but test it on a staging site before relying on it in 2026. It runs on 500+ sites, is rated 5/5 and was last updated 3 months ago, and scores 57/100 on our health check.

How many websites use EU Withdrawal Button for WooCom…?

EU Withdrawal Button for WooCom… is active on 500+ WordPress websites and has been downloaded 2,280 times since it launched in April 2026. It was downloaded 247 times in the last 30 days.

Does EU Withdrawal Button for WooCom… work with WordPress 7.1?

EU Withdrawal Button for WooCom… is officially tested up to WordPress 7.0.6, while the latest release is 7.1.2. It may still work, but try it on a staging site first.

What PHP version does EU Withdrawal Button for WooCom… need?

EU Withdrawal Button for WooCom… requires PHP 7.4 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.

When was EU Withdrawal Button for WooCom… last updated?

The latest version, 2.1.0, was released on July 6, 2026 (3 months ago).

Who makes EU Withdrawal Button for WooCom…?

EU Withdrawal Button for WooCom… is developed and maintained by riinagency.

What are the best alternatives to EU Withdrawal Button for WooCom…?

The most popular alternatives to EU Withdrawal Button for WooCom… are EU Withdrawal and Legal Gua… (1K+ installs), Bitron Right of Withdrawal (400+ installs) and Spotrebiteľské práva pre Wo… (300+ installs).

Powered by PageForge

Want thousands of pages that rank like these? Build them in an afternoon.

This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.

  • CSV, Google Sheets & API data sources
  • AI content, schema & internal links per page
  • Works with Elementor, Gutenberg, Yoast & Rank Math
  • Free on WordPress.org — no credit card
Sarah is here to help!
Hi there! 👋 Need help finding what you're looking for?
Sarah
Sarah
Online & Ready to Help
Hi there! 👋 Need help finding what you're looking for?

We'll use this to continue our conversation

Just now ✓ Verified

Join 500+ SEO Pros Scaling Their Strategy

Get exclusive programmatic SEO tactics, AI content workflows, and the latest PageForge updates delivered straight to your inbox. Stay ahead of the algorithm.

We care about your data in our privacy policy.