{"id":8555,"date":"2026-09-17T10:58:50","date_gmt":"2026-09-17T07:58:50","guid":{"rendered":"https:\/\/pixadoro.com\/woocommerce-has-released-a-built-in-order-cancellation-feature-how-order-withdrawal-works-in-version-11-1\/"},"modified":"2026-09-17T10:59:30","modified_gmt":"2026-09-17T07:59:30","slug":"woocommerce-has-released-a-built-in-order-cancellation-feature-how-order-withdrawal-works-in-version-11-1","status":"publish","type":"post","link":"https:\/\/pixadoro.com\/en\/woocommerce-has-released-a-built-in-order-cancellation-feature-how-order-withdrawal-works-in-version-11-1\/","title":{"rendered":"WooCommerce has released a built-in order cancellation feature: how Order Withdrawal works in version 11.1"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">WooCommerce has released a built-in order cancellation feature, and it is now part of the core, not a plugin.<\/p>\n\n<p class=\"wp-block-paragraph\">The feature is called &#8221; <strong>Order Withdrawal<\/strong> &#8221; and was released with <strong>WooCommerce 11.1<\/strong>. Until now, any store that wanted a withdrawal form had to rely on a third-party solution like the EU Order Withdrawal Button from vendidero or Germanized, while a request for a built-in feature remained open in the official WooCommerce repository. With version 11.1, the proposal has been implemented, and the form is included with the plugin update\u2014no new installation or license required.  <\/p>\n\n<p class=\"wp-block-paragraph\">Directive 2011\/83\/EU grants consumers a 14-day right of withdrawal, and the new Article 11a, effective June 19, 2026, requires every online store selling to consumers in the EU to offer an electronic cancellation feature. The legal framework, deadlines, and penalties are described in detail in the article on <a href=\"https:\/\/pixadoro.com\/en\/new-requirements-for-contract-cancellation-for-online-stores-effective-june-19-2026\/\">the new contract withdrawal requirements<\/a>, while here the focus is on exactly what WooCommerce has released, how to enable it, and where you\u2019ll need to make some customizations. <\/p>\n\n<p class=\"wp-block-paragraph\">By default, &#8220;Order Withdrawal&#8221; is disabled, and the documentation itself specifies that the feature can help ensure compliance but does not guarantee it.<\/p>\n\n<h2 id=\"kak-se-aktivira-order-withdrawal\" class=\"wp-block-heading\">How to Activate Order Withdrawal<\/h2>\n\n<p class=\"wp-block-paragraph\">Go to <strong>WooCommerce &gt; Settings &gt; Advanced &gt; Features<\/strong>, and look for &#8221; <strong>Order withdrawal<\/strong> &#8221; in the main list. It\u2019s not listed under experimental features, so no feature flag or definition in wp-config.php is required. Enable the option and save your changes. The description in the interface states that this activates a public feature for customer order cancellation requests.   <\/p>\n\n<p class=\"wp-block-paragraph\">After activation in <strong>WooCommerce ( &gt;, Settings, &gt;, Advanced, &gt;, Page setup<\/strong> ), a new field <strong>called \u201cOrder withdrawal\u201d<\/strong> appears in <strong>the \u201cAccount endpoints\u201d<\/strong> group. The default value is \u201cwithdraw-order,\u201d which makes the form accessible at \/my-account\/withdraw-order. If you prefer a Bulgarian slug, such as otkaz-ot-poruchka, enter it there, and the form will work at \/my-account\/otkaz-ot-poruchka without having to regenerate permalinks.  <\/p>\n\n<p class=\"wp-block-paragraph\">The \/my-account\/ part comes from the page set as the &#8220;My account&#8221; page, and if you&#8217;ve renamed it, the endpoint will follow the new address.<\/p>\n\n<p class=\"wp-block-paragraph\">The field in Page Setup exists only as long as the feature is enabled. If you disable it, the field disappears along with the URL rules. <\/p>\n\n<h2 id=\"kakvo-vizhda-klientat\" class=\"wp-block-heading\">What the customer sees<\/h2>\n\n<p class=\"wp-block-paragraph\">The form requires a first and last name, an email address (entered twice for confirmation), and an order number. The customer chooses whether to cancel the entire order or only certain items; in the case of a partial cancellation, the \u201cAdditional details\u201d field becomes required, and the customer must specify which items are being returned. There is no field for a reason, and there is no registration requirement, which complies with the prohibition on additional mandatory fields in Article 11a.  <\/p>\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"740\" height=\"1024\" src=\"https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Withdraw-from-contract-740x1024.webp\" alt=\"-\" class=\"wp-image-8553\" title=\"-\" srcset=\"https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Withdraw-from-contract-740x1024.webp 740w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Withdraw-from-contract-217x300.webp 217w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Withdraw-from-contract-1111x1536.webp 1111w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Withdraw-from-contract-768x1062.webp 768w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Withdraw-from-contract-1481x2048.webp 1481w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Withdraw-from-contract.webp 1540w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">Before submitting, the customer sees a screen to review the information entered. The request is sent only after confirmation, so the two-step process required by the directive is in place. This is followed by a confirmation screen and an email containing a copy of the submitted data. Check whether this email includes the date and time of receipt, because Article 11a explicitly requires them to be provided on a durable medium, and it is not clear from the text of the documentation whether they are included.   <\/p>\n\n<p class=\"wp-block-paragraph\">If they are missing, adding them is a necessary correction, not just a cosmetic change.<\/p>\n\n<h2 id=\"kakvo-poluchava-targovetsat\" class=\"wp-block-heading\">What Does the Merchant Get?<\/h2>\n\n<p class=\"wp-block-paragraph\">Notifications about new orders are sent to <strong>the Administration Email Address<\/strong> specified in <strong>the &#8220;Settings&#8221; &gt; &#8221; &gt; &#8221; &gt; &#8220;General&#8221; section<\/strong> in WordPress, not to the email address specified in the WooCommerce settings. The &#8220;Reply-to&#8221; address is the customer&#8217;s email address, so a reply sent directly from your email inbox will reach them. <\/p>\n\n<p class=\"wp-block-paragraph\">These emails do not appear in <strong>WooCommerce &gt; Settings &gt; Emails<\/strong>. They have no recipient field, no toggle to enable them, and no template that you can edit from there. If the requests need to be sent to a separate email address, the only built-in way to do this is to change the administrator email address. The text comes from the WooCommerce language pack, so if the Bulgarian translation is incomplete, you can correct it via Loco Translate or a gettext filter.   <\/p>\n\n<p class=\"wp-block-paragraph\">An inbox notification also appears on the WooCommerce home screen. When the order number and billing email address match those of an actual order, the request is automatically linked to it, and an order note is added to the order. This note is your internal record with the date and time.  <\/p>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"670\" src=\"https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Order-withdrawal-request-for-order-1024x670.webp\" alt=\"-\" class=\"wp-image-8560\" title=\"-\" srcset=\"https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Order-withdrawal-request-for-order-1024x670.webp 1024w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Order-withdrawal-request-for-order-300x196.webp 300w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Order-withdrawal-request-for-order-767x502.webp 767w, https:\/\/pixadoro.com\/wp-content\/uploads\/2026\/09\/Order-withdrawal-request-for-order.webp 1210w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n<h3 id=\"kogato-nyama-savpadenie\" class=\"wp-block-heading\">When there is no match<\/h3>\n\n<p class=\"wp-block-paragraph\">An error in the order number or an order placed with a different email address does not stop the request. It is accepted, the customer receives the same confirmation, and you receive an email stating that WooCommerce was unable to link it to an order. In this case, there is no order note and no inbox notification, so the email is the only trace. You\u2019ll need to search for the order manually by name, email address, and the entered number.   <\/p>\n\n<p class=\"wp-block-paragraph\">The spam filter for incoming email here poses a real risk, because a single missed email means an unprocessed rejection, which, by law, can still be considered valid.<\/p>\n\n<h2 id=\"14-te-dni-se-broyat-ot-greshnata-data\" class=\"wp-block-heading\">The 14 days are counted from the wrong date<\/h2>\n\n<p class=\"wp-block-paragraph\">WooCommerce calculates the 14-day window from the order date, not the delivery date. The right of withdrawal in the EU begins upon receipt of the goods, but the system cannot reliably determine when the goods were delivered, so it uses the order date as a substitute. This approach is safe: the warning can only appear after the actual deadline, never before it.  <\/p>\n\n<p class=\"wp-block-paragraph\">For orders older than 14 days, a line is added to the email and the inbox notification stating that the order is past the deadline. This is for informational purposes only, and the order is processed as usual. <\/p>\n\n<p class=\"wp-block-paragraph\">The same applies to the order status. A request can be linked to an order in any status, including &#8220;canceled,&#8221; &#8220;refunded,&#8221; or &#8220;failed.&#8221; Before taking any action, check the current status, because the form does not validate it. A duplicate request for a single order is rejected right in the form, and the customer sees a message asking them to contact you, without you receiving a notification about the second attempt.   <\/p>\n\n<p class=\"wp-block-paragraph\">There is also a limit of one request every 30 seconds per email address and per IP address.<\/p>\n\n<h2 id=\"kakvo-ne-pravi-funktsiyata\" class=\"wp-block-heading\">What the function does not do<\/h2>\n\n<p class=\"wp-block-paragraph\">Submitting a request does not change the order status, cancel the order, or generate a refund. The decision on how to proceed\u2014whether to issue a refund, request a return, or seek clarification\u2014is made entirely on a case-by-case basis. <\/p>\n\n<p class=\"wp-block-paragraph\">The feature does not distinguish between items under Article 16 of the directive. An engraved mug and a standard T-shirt in the same order are treated the same, even though the former is excluded from the right of withdrawal. There is also no automatically generated link in the footer. WooCommerce creates an endpoint, but the visible link labeled <strong>\u201cWithdraw from the Contract Here<\/strong>,\u201d accessible from every page, must be added by you via the menu or using code. If your store was built before these requirements were introduced, now is the time to include this in your general review of <a href=\"https:\/\/pixadoro.com\/en\/drafting-terms-and-conditions-for-website\/\">the site\u2019s terms and conditions<\/a>.    <\/p>\n\n<pre class=\"wp-block-code\"><code class=\"\">add_filter( 'wp_nav_menu_items', function ( $items, $args ) {\n    if ( 'footer' !== $args-&gt;theme_location ) {\n        return $items;\n    }\n    $url = wc_get_endpoint_url( 'withdraw-order', '', wc_get_page_permalink( 'myaccount' ) );\n    return $items . '&lt;li class=\"menu-item\"&gt;&lt;a href=\"' . esc_url( $url ) . '\"&gt;\u041e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430 \u0442\u0443\u043a&lt;\/a&gt;&lt;\/li&gt;';\n}, 10, 2 );<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Replace &#8220;footer&#8221; with the actual `theme_location` of your theme, and replace &#8220;withdraw-order&#8221; with the slug you selected, if you changed it in Page Setup. The snippet goes in the child theme&#8217;s `functions.php` file or in a code snippets plugin\u2014not directly in the theme. <\/p>\n\n<h2 id=\"plagin-ili-vgradena-funktsiya\" class=\"wp-block-heading\">Plugin or built-in feature<\/h2>\n\n<p class=\"wp-block-paragraph\">Now that the feature is built into the core, the question is whether to stick with the plugin you\u2019re already using. The built-in version is no longer a dependency and receives updates along with WooCommerce. For now, plugins offer more control over the email template and text. If you already have a working plugin, keep only one of the two; otherwise, the customer will encounter two different forms for the same action.   <\/p>\n\n<p class=\"wp-block-paragraph\">For <a href=\"https:\/\/pixadoro.com\/en\/ecommerce\/\">a new WooCommerce online store<\/a>, the built-in Order Withdrawal feature is a sensible starting point, and you should only add a plugin when a specific feature is missing.<\/p>\n\n<p class=\"wp-block-paragraph\">Stores on other platforms receive the form ready-to-use after migration, which is another reason to <a href=\"https:\/\/pixadoro.com\/en\/ecommerce-migration-to-woocommerce\/\">migrate your online store to WooCommerce<\/a>. Pre-launch test: Place a guest order from an incognito window, submit a cancellation through the form, and check the customer\u2019s email and the order note. Only then should you publish the link in the footer.  <\/p>\n\n<p class=\"wp-block-paragraph\">Update the terms and conditions as well, specifying the online option as a way to exercise the right of withdrawal, in addition to the traditional form. The other topics related to the store\u2014from checkout to migrations\u2014are grouped under the <a href=\"https:\/\/pixadoro.com\/en\/category\/woocommerce-en\/\">WooCommerce<\/a> category. <\/p>\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions<\/h2>\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<ol class=\"rank-math-list \">\n<li id=\"faq-question-aee2fda54af473a3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How do you enable &#8220;Order Withdrawal&#8221; in WooCommerce?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Under WooCommerce &gt; Settings &gt; Advanced &gt; Features, there is an option called &#8220;Order withdrawal.&#8221; This feature is disabled by default and is not experimental. <\/p>\n\n<\/div>\n<\/li>\n<li id=\"faq-question-1ae3228c7d96f0a5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does the customer need to be logged in to submit a cancellation?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. The \/my-account\/withdraw-order form is public and only requires a first name, email address, and order number, so it works for guest orders as well. <\/p>\n\n<\/div>\n<\/li>\n<li id=\"faq-question-5e1095c718d66086\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is the order automatically canceled after a cancellation request is submitted?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. The request adds an order note and sends an email, but the status, cancellation, and refund are still decided manually by the merchant. <\/p>\n\n<\/div>\n<\/li>\n<li id=\"faq-question-5ada55fc481fbd3e\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Where can I edit the order cancellation email?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Nowhere in WooCommerce &gt; Settings &gt; Emails. The notification is sent to the administrator&#8217;s email address specified in Settings &gt; General, and the text can only be changed via translation or a gettext filter. <\/p>\n\n<\/div>\n<\/li>\n<li id=\"faq-question-234f9a8822c17980\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What happens if the order number is incorrect?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The order is accepted again and the customer receives a confirmation, but the merchant receives only an email without an order note and must locate the order manually.<\/p>\n\n<\/div>\n<\/li>\n<\/ol>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>WooCommerce released Order Withdrawal as a built-in feature in version 11.1: a public order cancellation form, a notification to the merchant, and an order note when the cancellation is processed. It is activated via Features, without a plugin, but it does not change the order status, issue a refund, or add a link to the footer. <\/p>\n","protected":false},"author":1,"featured_media":8556,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[],"class_list":["post-8555","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-woocommerce-en"],"_links":{"self":[{"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/posts\/8555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/comments?post=8555"}],"version-history":[{"count":6,"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/posts\/8555\/revisions"}],"predecessor-version":[{"id":8565,"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/posts\/8555\/revisions\/8565"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/media\/8556"}],"wp:attachment":[{"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/media?parent=8555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/categories?post=8555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pixadoro.com\/en\/wp-json\/wp\/v2\/tags?post=8555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}