WooCommerce 11.1: Refunds, EU Order Withdrawal, and Faster Variable Products
WooCommerce 11.1 is in beta, with the final release scheduled for September 1, 2026. The headline features are a complete order-withdrawal flow for shoppers, a new REST API refund endpoint, and meaningful performance fixes for variable products. Here's what's coming.
EU order withdrawal — new /my-account/withdraw-order/
WooCommerce 11.1 brings the EU right of order withdrawal directly into the store. Customers can request a withdrawal from a new My Account page (/my-account/withdraw-order/) — no authentication required. Submissions are routed to merchants, who get an email plus an inbox notification to follow up.
The feature is disabled by default and must be enabled from WooCommerce → Settings → Advanced → Features. For EU-facing stores, this is a compliance box you can finally tick without a plugin.
REST API refunds: let the server do the math
The refund flow in the WC REST API got a real upgrade:
POST /wc/v3/orders/{id}/refundsnow acceptscompute_totals: true— the server calculates refund totals for you instead of manual client-side math- New endpoint
POST /wc/v3/orders/{id}/refunds/preview— run the calculation and preview the refund without applying it
On the Store API side, checkout endpoints gain an optional expected_total field. If the customer gets charged a different amount than they saw, the request fails with a 409 woocommerce_rest_checkout_total_mismatch — a real safeguard against checkout-total drift.
Variable product performance
Multiple fixes reduce N+1 queries around variations and attributes, in both the editor and frontend, plus fewer queries on price caching. For stores with large variable products, this is the release that makes the product editor feel snappy again.
Smarter block registration
A new BlockRegistrationContext guard skips block registration on cron, AJAX, and REST API requests — the contexts that never render or edit blocks. Front-end, admin, and editor behavior are preserved. Extensions that assume blocks register on every request must adapt via the new woocommerce_should_register_blocks filter.
CSV import/export fixes
Several fixes landed for product CSV workflows: preserving terms and categories on re-uploads, clearing images when the file says so, respecting existing store currency settings, and better variation handling when the product already exists.
Experimental: unified block editor assets
An experimental feature replaces per-block editor scripts with shared JS/CSS bundles. Testing measured:
- 91.7% fewer editor assets
- 48.3% reduction in network transfer size
- 62.3% smaller style bundles
Disabled by default; opt in under Settings → Advanced → Features → Experimental.
Developer advisories worth noting
is_rest_api_request()now detects?rest_route=query params, not just pretty permalinksProductGalleryUtils::get_product_gallery_image_count()is deprecated → useget_product_gallery_media_count()- Quantity stepper DOM order now matches visual order (WCAG 1.3.2 / 2.4.3 fixes) — themes with CSS keyed to old DOM should re-test
- New
GET /wc-analytics/activity-panel/countscollapses six requests into one per admin page load - Analytics pages no longer carry request-derived properties — cached pages can't leak another visitor's data
- Currency symbols fixed:
MOP→MOP$,ZMW→K
Bottom line
The refund endpoint and the checkout expected_total guard are the kind of API improvements that make integration work noticeably cleaner. The block-registration skip and the analytics consolidation quietly reduce server load across every request. And for EU merchants, the built-in order withdrawal flow removes one more plugin dependency.
Source: WooCommerce Developer Blog, August 18, 2026.