{"id":320288,"date":"2026-06-11T05:24:47","date_gmt":"2026-06-11T05:24:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/webtoffee-eu-withdrawal-button-for-woocommerce\/"},"modified":"2026-06-17T13:24:36","modified_gmt":"2026-06-17T13:24:36","slug":"wt-eu-withdrawal-button","status":"publish","type":"plugin","link":"https:\/\/kir.wordpress.org\/plugins\/wt-eu-withdrawal-button\/","author":15888981,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"WebToffee EU Order Withdrawal Button for WooCommerce","header_author":"webtoffee","header_description":"Manage withdrawal of contract \/ order cancellation requests for WooCommerce orders. EU-compliant, HPOS-compatible.","assets_banners_color":"02359f","last_updated":"2026-06-17 13:24:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.wordpress.org\/plugins\/wt-eu-withdrawal-button","header_author_uri":"https:\/\/www.webtoffee.com\/","rating":5,"author_block_rating":0,"active_installs":200,"downloads":799,"num_ratings":3,"support_threads":7,"support_threads_resolved":4,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"webtoffee","date":"2026-06-11 05:24:15"},"1.0.1":{"tag":"1.0.1","author":"webtoffee","date":"2026-06-17 13:25:21"},"1.0.2":{"tag":"1.0.2","author":"webtoffee","date":"2026-06-17 13:24:36"}},"upgrade_notice":{"1.0.2":"<ul>\n<li>[Add]: Option to configure multiple recipients for admin notifications related to withdrawal requests.<\/li>\n<li>[Add]: Product category and specific product exclusion options in the Withdrawals settings dashboard.<\/li>\n<li>[Fix]: Error in the email preview section for withdrawal-related settings.<\/li>\n<\/ul>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3568316,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3568316,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3568316,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3568316,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3568600,"resolution":"1","location":"assets","locale":"","width":1346,"height":1552},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3568600,"resolution":"2","location":"assets","locale":"","width":2272,"height":1568},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3568600,"resolution":"3","location":"assets","locale":"","width":2196,"height":3418},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3569620,"resolution":"4","location":"assets","locale":"","width":2288,"height":1356}},"screenshots":{"1":"Withdrawal request form","2":"Withdrawal request details","3":"EU Withdrawal Button Plugin settings","4":"Admin withdrawals dashboard"}},"plugin_section":[],"plugin_tags":[266618,263925,266617,263226,286],"plugin_category":[45],"plugin_contributors":[153972],"plugin_business_model":[],"class_list":["post-320288","plugin","type-plugin","status-publish","hentry","plugin_tags-eu-compliance","plugin_tags-eu-directive","plugin_tags-eu-withdrawal","plugin_tags-right-of-withdrawal","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-webtoffee","plugin_committers-webtoffee","plugin_support_reps-jeffwtsupport"],"banners":{"banner":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/banner-772x250.png?rev=3568316","banner_2x":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/banner-1544x500.png?rev=3568316","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/icon-128x128.png?rev=3568316","icon_2x":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/icon-256x256.png?rev=3568316","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/screenshot-1.png?rev=3568600","caption":"Withdrawal request form"},{"src":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/screenshot-2.png?rev=3568600","caption":"Withdrawal request details"},{"src":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/screenshot-3.png?rev=3568600","caption":"EU Withdrawal Button Plugin settings"},{"src":"https:\/\/ps.w.org\/wt-eu-withdrawal-button\/assets\/screenshot-4.png?rev=3569620","caption":"Admin withdrawals dashboard"}],"raw_content":"<!--section=description-->\n<p>From June 19, 2026, EU Directive 2023\/2673 requires every online store selling to EU consumers to provide a clear, easily accessible online withdrawal function. Customers must be able to cancel a purchase digitally \u2014 just as easily as they placed the order.<\/p>\n\n<p><strong>EU Withdrawal Button for WooCommerce<\/strong> by WebToffee makes it straightforward to comply. The plugin adds a withdrawal button to the customer's My Account orders page, a guided withdrawal form, a two-step confirmation flow, and a dedicated admin dashboard to manage all incoming requests.<\/p>\n\n<p>No coding required. Works right out of the box.<\/p>\n\n<h4>What the plugin does<\/h4>\n\n<p><strong>For your customers:<\/strong><\/p>\n\n<ul>\n<li>A \"Request Withdrawal\" button appears directly on the My Account orders list \u2014 visible only during the active withdrawal period<\/li>\n<li>Customers can select which items to withdraw (full order or individual products)<\/li>\n<li>A simple form collects their name, email, and an optional reason<\/li>\n<li>A confirmation step prevents accidental submissions (\"Are you sure you want to submit this withdrawal request?\")<\/li>\n<li>Customers receive an email confirmation once the request is submitted<\/li>\n<\/ul>\n\n<p><strong>For you as the store admin:<\/strong><\/p>\n\n<ul>\n<li>A clean Withdrawals dashboard under WooCommerce &gt; Withdrawals shows all requests at a glance<\/li>\n<li>At-a-glance stats: open requests and approvals over the last 30 days<\/li>\n<li>Filter requests by status, date range, or order number<\/li>\n<li>View full request details \u2014 order info, customer email, request type, reason, and a complete activity log<\/li>\n<li>Approve or reject requests with one click<\/li>\n<li>Configure who receives admin withdrawal notification emails \u2014 defaults to your store email, with support for multiple recipients<\/li>\n<\/ul>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Withdrawal button on the orders page<\/strong> \u2014 visible to customers within the configured withdrawal window<\/li>\n<li><strong>Partial withdrawal support<\/strong> \u2014 customers can withdraw individual items instead of the entire order<\/li>\n<li><strong>Two-step confirmation flow<\/strong> \u2014 meets the directive's requirement to confirm the customer's intent<\/li>\n<li><strong>Dedicated admin dashboard<\/strong> \u2014 manage, filter, approve, or reject all withdrawal requests in one place<\/li>\n<li><strong>Automatic footer link<\/strong> \u2014 optionally embed a withdrawal link in your store footer to meet visibility requirements<\/li>\n<li><strong>Configurable withdrawal period<\/strong> \u2014 set the window to 2, 7, 14, or 30 days (EU standard is 14 days)<\/li>\n<li><strong>Product exclusions<\/strong> \u2014 exclude by product type, entire categories, or specific individual products<\/li>\n<li><strong>Admin notification recipients<\/strong> \u2014 choose one or more email addresses to receive new withdrawal request alerts (store email added by default)<\/li>\n<li><strong>Order status automation<\/strong> \u2014 automatically update order status when a request is submitted or approved<\/li>\n<li><strong>Reason field<\/strong> \u2014 optionally require customers to provide a reason when submitting a request<\/li>\n<li><strong>Display scope control<\/strong> \u2014 show the withdrawal form globally or limit it to WooCommerce pages only<\/li>\n<li><strong>Data management<\/strong> \u2014 optionally delete all plugin data on uninstall<\/li>\n<\/ul>\n\n<h4>Why this matters<\/h4>\n\n<p>Under <a href=\"https:\/\/eur-lex.europa.eu\/eli\/dir\/2023\/2673\/oj\/eng\">EU Directive 2023\/2673<\/a>, any business that lets EU consumers sign up for or purchase something online must also let them cancel online \u2014 through the same website or app. Simply hiding a withdrawal form in a footer PDF or asking customers to email you is no longer sufficient.<\/p>\n\n<p>The directive specifically requires:<\/p>\n\n<ul>\n<li>A withdrawal function that is <strong>prominently displayed<\/strong> and <strong>continuously available<\/strong> during the withdrawal period<\/li>\n<li>The function must be <strong>clearly labelled<\/strong> (e.g. \"Withdraw from contract here\" or similar)<\/li>\n<li>A <strong>two-step confirmation<\/strong> to prevent accidental withdrawals<\/li>\n<li>An <strong>acknowledgement of receipt<\/strong> sent to the customer on a durable medium (e.g. email)<\/li>\n<\/ul>\n\n<p>This plugin implements all of the above.<\/p>\n\n<h4>Getting started<\/h4>\n\n<p>For a complete walkthrough, see the <a href=\"https:\/\/www.webtoffee.com\/docs\/woocommerce-eu-withdrawal\/how-to-setup-woocommerce-order-withdrawal-button-to-comply-with-eu-directives\/\">setup guide<\/a>.<\/p>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to <strong>WooCommerce &gt; Withdrawals &gt; Settings<\/strong> to configure your preferences<\/li>\n<li>Set your withdrawal page, period, and footer link options<\/li>\n<li>Publish the withdrawal page (created automatically as a draft on installation)<\/li>\n<li>Test the flow by placing a test order and using the Request Withdrawal button<\/li>\n<\/ol>\n\n<h4>Support<\/h4>\n\n<p>For questions or assistance, visit our <a href=\"https:\/\/wordpress.org\/support\/plugin\/wt-eu-withdrawal-button\/\">support page<\/a>.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation (Recommended)<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin<\/li>\n<li>Go to <strong>Plugins &gt; Add New<\/strong><\/li>\n<li>Search for <strong>EU Withdrawal Button for WooCommerce<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>Navigate to <strong>WooCommerce &gt; Withdrawals &gt; Settings<\/strong> to configure the plugin<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin zip file<\/li>\n<li>Go to <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong><\/li>\n<li>Upload the zip file and click <strong>Install Now<\/strong><\/li>\n<li>Activate the plugin<\/li>\n<li>Navigate to <strong>WooCommerce &gt; Withdrawals &gt; Settings<\/strong> to get started<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20required%20for%20all%20woocommerce%20stores%3F\"><h3>Is this plugin required for all WooCommerce stores?<\/h3><\/dt>\n<dd><p>If your store sells to consumers in the EU, yes \u2014 from June 19, 2026, EU Directive 2023\/2673 requires an accessible online withdrawal function. This applies regardless of where your business is based.<\/p><\/dd>\n<dt id=\"what%20is%20the%20standard%20withdrawal%20period%3F\"><h3>What is the standard withdrawal period?<\/h3><\/dt>\n<dd><p>The EU standard is 14 calendar days from the date of purchase (or from when the customer receives the pre-contractual information, if later). You can configure the withdrawal period in the plugin settings.<\/p><\/dd>\n<dt id=\"can%20customers%20withdraw%20only%20part%20of%20an%20order%3F\"><h3>Can customers withdraw only part of an order?<\/h3><\/dt>\n<dd><p>Yes. When partial withdrawals are enabled in settings, customers can select individual items from an order to withdraw rather than cancelling the entire order.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20for%20guest%20customers%3F\"><h3>Does the plugin work for guest customers?<\/h3><\/dt>\n<dd><p>The withdrawal button on the My Account page is visible to logged-in customers. For guest order support, you can direct customers to the standalone withdrawal page using the footer link or a shortcode.<\/p><\/dd>\n<dt id=\"where%20does%20the%20withdrawal%20button%20appear%3F\"><h3>Where does the withdrawal button appear?<\/h3><\/dt>\n<dd><p>The \"Request Withdrawal\" button appears on the customer's My Account &gt; Orders page, next to eligible orders within the active withdrawal window.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20the%20withdrawal%20link%20to%20my%20store%20footer%3F\"><h3>How do I add the withdrawal link to my store footer?<\/h3><\/dt>\n<dd><p>Go to <strong>WooCommerce &gt; Withdrawals &gt; Settings<\/strong> and enable the <strong>Embed footer link<\/strong> option. You can customise the link text (default: \"Request Withdrawal\").<\/p><\/dd>\n<dt id=\"can%20i%20exclude%20certain%20products%20from%20withdrawal%3F\"><h3>Can I exclude certain products from withdrawal?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>Exclusions<\/strong> in <strong>WooCommerce &gt; Withdrawals &gt; Settings<\/strong>, you can limit withdrawal eligibility in three ways:<\/p>\n\n<ul>\n<li><strong>Product types<\/strong> \u2014 exclude Virtual, Downloadable, Grouped, and External\/Affiliate products.<\/li>\n<li><strong>Product categories<\/strong> \u2014 exclude one or more WooCommerce categories so every product in those categories is ineligible.<\/li>\n<li><strong>Specific products<\/strong> \u2014 search and select individual products to exclude, regardless of type or category.<\/li>\n<\/ul><\/dd>\n<dt id=\"does%20the%20plugin%20send%20a%20confirmation%20email%20to%20customers%3F\"><h3>Does the plugin send a confirmation email to customers?<\/h3><\/dt>\n<dd><p>Yes. Customers receive an email confirmation once their withdrawal request is submitted. This satisfies the directive's requirement to acknowledge receipt on a durable medium.<\/p><\/dd>\n<dt id=\"who%20receives%20the%20admin%20notification%20when%20a%20withdrawal%20request%20is%20submitted%3F\"><h3>Who receives the admin notification when a withdrawal request is submitted?<\/h3><\/dt>\n<dd><p>By default, the store email address receives the admin notification. You can change this under <strong>WooCommerce &gt; Withdrawals &gt; Settings &gt; Email notifications<\/strong>. Add multiple recipients as removable chips, remove the default store email if needed, and add custom addresses with the <strong>Add<\/strong> button. At least one recipient is required before settings can be saved.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20data%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens to the data if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>By default, plugin data is retained when you uninstall. If you want all data (settings, withdrawal requests, database tables) removed on uninstall, enable the <strong>Delete data on uninstall<\/strong> option in settings. Note: this action is irreversible.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20guarantee%20legal%20compliance%3F\"><h3>Does this plugin guarantee legal compliance?<\/h3><\/dt>\n<dd><p>The plugin implements the technical requirements of EU Directive 2023\/2673 as understood at the time of release. However, it does not constitute legal advice. We recommend consulting a legal professional to ensure your store meets all applicable requirements in your jurisdiction.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2 17-06-2026<\/h4>\n\n<ul>\n<li>[Add]: Option to configure multiple recipients for admin notifications related to withdrawal requests.<\/li>\n<li>[Add]: Product category and specific product exclusion options in the Withdrawals settings dashboard.<\/li>\n<li>[Fix]: Error in the email preview section for withdrawal-related settings.<\/li>\n<\/ul>\n\n<h4>1.0.1 15-06-2026<\/h4>\n\n<ul>\n<li>[Add]: <code>[wt_eu_order_withdrawal]<\/code> shortcode to place the withdrawal request button anywhere on your site.<\/li>\n<li>[Add]: WPML and multilingual support for configurable button labels.<\/li>\n<li>[Add]: Support and Review links to the plugin row on the Plugins screen.<\/li>\n<li>[Add]: Uninstall feedback modal when deactivating the plugin.<\/li>\n<li>[Add]: Guest email verification workflow \u2014 simplified guest form (order number, billing email, and reason), verification email notification, duplicate request check, and queueing before a withdrawal request is created.<\/li>\n<li>[Fix]: Logged-in withdrawal form resetting item selection when clicking other form fields.<\/li>\n<li>[Fix]: WooCommerce order status emails no longer sent when restoring order status after rejection; orders with pending or approved withdrawal requests no longer appear in the logged-in withdrawal form.<\/li>\n<li>[Update]: Rejection workflow \u2014 required note on the WooCommerce order screen, rejection reason shown in the customer email Request Details table, and note included when rejecting from the dashboard or order screen.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>[Add]: Initial release.<\/li>\n<li>[Add]: Customer withdrawal form for logged-in and guest customers.<\/li>\n<li>[Add]: React admin dashboard for request management.<\/li>\n<li>[Add]: Custom order statuses \u2014 Pending Withdrawal and Withdrawn.<\/li>\n<li>[Add]: WooCommerce Settings tab integration.<\/li>\n<li>[Add]: Product type based exclusions.<\/li>\n<li>[Add]: Configurable withdrawal period.<\/li>\n<li>[Add]: WooCommerce email notifications.<\/li>\n<li>[Add]: HPOS compatibility.<\/li>\n<li>[Add]: REST API.<\/li>\n<li>[Add]: My Account integration.<\/li>\n<\/ul>","raw_excerpt":"Add a legally compliant EU withdrawal button to your WooCommerce store. It allows customers to exercise their 14-day right of withdrawal online.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/320288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=320288"}],"author":[{"embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webtoffee"}],"wp:attachment":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=320288"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=320288"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=320288"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=320288"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=320288"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=320288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}