{"id":10506,"date":"2026-05-15T17:29:53","date_gmt":"2026-05-15T09:29:53","guid":{"rendered":"https:\/\/aeosub.com\/eu-withdrawal-compliance\/"},"modified":"2026-05-15T17:29:53","modified_gmt":"2026-05-15T09:29:53","slug":"eu-withdrawal-compliance","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/eu-withdrawal-compliance\/","title":{"rendered":"EU Withdrawal Compliance"},"content":{"rendered":"<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/s.w.org\/plugins\/geopattern-icon\/eu-withdrawal-compliance.svg\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/fernandot\/\" target=\"_blank\" rel=\"noopener\">Fernando Tellado<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.4.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.0 \/ 7.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-15 9:28am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/eu-withdrawal-compliance\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Adds the EU online withdrawal function required by Directive (EU) 2023\/2673, applicable from June 19, 2026.<\/div>\n<p>The EU Directive 2023\/2673 obliges every online retailer in the European Union to offer a digital withdrawal function from June 19, 2026. The directive requires that exercising the right of withdrawal must be at least as easy as concluding the contract was: a single click should be enough.<\/p>\n<p>This plugin gives you a clean, ready-to-deploy implementation:<\/p>\n<ul>\n<li>A public withdrawal page automatically created on activation, pre-filled with a neutral, multilingual sample template (with a clear &#8220;review with a legal advisor&#8221; disclaimer) and the form embedded via shortcode.<\/li>\n<li>A <code>[ayudawp_withdrawal_form]<\/code> shortcode you can use anywhere in your site.<\/li>\n<li>A &#8220;Right of withdrawal&#8221; endpoint inside the WooCommerce <strong>My Account<\/strong> area, with a per-order &#8220;Withdraw&#8221; button shown only while the configured withdrawal window is open.<\/li>\n<li>Automatic injection of an &#8220;Exercise withdrawal right here&#8221; notice with link to the form inside WooCommerce transactional emails (processing, completed and customer invoice), to comply with the trader&#8217;s obligation to inform consumers about the existence and placement of the withdrawal function. The list of eligible order statuses is configurable from the settings page (defaults to Processing and Completed).<\/li>\n<li>Automatic verification of the order\/email pair when WooCommerce is active, including the 14-day deadline check.<\/li>\n<li><strong>Configurable deadline calculation<\/strong>: choose whether the 14-day window starts from the order date or from the WooCommerce completion date, and add extra grace days from the settings page.<\/li>\n<li><strong>Article 16 exclusions<\/strong>: mark individual products or whole categories as excluded from the right of withdrawal (custom-made, perishable, sealed digital, etc.). Requests on orders containing excluded items are flagged for the admin to review manually \u2014 never auto-rejected, since a partial withdrawal over the rest of the order can still be valid.<\/li>\n<li><strong>Verifiable receipt hash<\/strong>: every submission generates a SHA-256 hash sent to the customer in the confirmation email so they keep a tamper-evident proof on a durable medium.<\/li>\n<li>Private order notes added to the WooCommerce order at every step of the lifecycle: when the request is received and again when it is accepted, rejected or marked as completed (including the admin&#8217;s comment if any).<\/li>\n<li>Confirmation email to the customer on submission and a follow-up email when the request is accepted, rejected or completed. Optional admin comment is forwarded to the customer (required for rejections, optional for completed). Notification email to the shop admin (with reply-to set to the customer for fast handling, sanitized against header injection).<\/li>\n<li>Full request log as a private custom post type, with status tracking (pending, accepted, rejected, completed), customer details, IP address, user agent and submission timestamp for legal traceability.<\/li>\n<li>Bulk actions in the withdrawals listing to mark several requests as accepted, rejected or completed at once.<\/li>\n<li>&#8220;Withdrawal&#8221; column in the WooCommerce orders screen (legacy and HPOS) showing the status of any linked request, toggleable from &#8220;Screen Options&#8221;.<\/li>\n<li>Native integration in the WooCommerce admin menu: settings live at <strong>WooCommerce <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> EU Withdrawal<\/strong>, request log at <strong>WooCommerce <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Withdrawals<\/strong>.<\/li>\n<li>Honeypot anti-spam protection.<\/li>\n<li>Conditional asset loading: CSS only loads on the withdrawal page and inside the plugin admin screens.<\/li>\n<li>Native integration with the WordPress GDPR tools: suggested Privacy Policy snippet, personal data exporter and eraser available from <strong>Tools <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Export Personal Data<\/strong> and <strong>Tools <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Erase Personal Data<\/strong>, all keyed on the customer email.<\/li>\n<li>Translation-ready, fully escaped, follows WordPress Coding Standards, HPOS-compatible.<\/li>\n<\/ul>\n<h3>Privacy<\/h3>\n<p>This plugin stores the following personal data for each withdrawal request, exclusively to fulfil the legal traceability of consumer rights and to allow the shop to handle the request:<\/p>\n<ul>\n<li>Customer name and email address (required to contact the consumer about the request).<\/li>\n<li>Order reference and order date (required to validate the request against the purchase).<\/li>\n<li>IP address and User-Agent string (required to evidence when and how the request was submitted, in line with the directive&#8217;s &#8220;durable medium&#8221; requirement).<\/li>\n<li>Submission timestamp (UTC) and SHA-256 receipt hash (required to recompute and verify the integrity of the original submission if disputed).<\/li>\n<\/ul>\n<p>Data is stored as a private custom post type entry (<code>ayudawp_withdrawal<\/code>) accessible only to administrators. The plugin does not transmit any data to third-party services; all communication happens between the shop and the customer via standard WordPress emails.<\/p>\n<p>You should add a section to your site&#8217;s privacy policy describing this storage. The plugin contributes a suggested Privacy Policy snippet that you can paste from <strong>Settings <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Privacy <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Policy Guide<\/strong>. Withdrawal data is also exposed to the native WordPress <strong>Tools <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Export Personal Data<\/strong> and <strong>Tools <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> Erase Personal Data<\/strong> screens (filtered by customer email).<\/p>\n<h3>Support<\/h3>\n<p>Need help or have suggestions?<\/p>\n<ul>\n<li><a href=\"https:\/\/servicios.ayudawp.com\" rel=\"nofollow ugc noopener\" target=\"_blank\">Official website<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/support\/plugin\/eu-withdrawal-compliance\/\" rel=\"ugc noopener\" target=\"_blank\">WordPress support forum<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/AyudaWordPressES\" rel=\"nofollow ugc noopener\" target=\"_blank\">YouTube channel<\/a><\/li>\n<li><a href=\"https:\/\/ayudawp.com\" rel=\"nofollow ugc noopener\" target=\"_blank\">Documentation and tutorials<\/a><\/li>\n<\/ul>\n<p>Love the plugin? Please leave us a 5-star review and help spread the word!<\/p>\n<h3>About AyudaWP.com<\/h3>\n<p>We are specialists in WordPress security, SEO, AI and performance optimization plugins. We create tools that solve real problems for WordPress site owners while maintaining the highest coding standards and accessibility requirements.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Adds the EU online withdrawal function required by Directive (EU) 2023\/2673, applicable from June 19, 2026.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[729,718,590,730,569,555],"class_list":["post-10506","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-compliance","tag-ecommerce","tag-gdpr","tag-withdrawal","tag-woocommerce","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10506"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10506\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}