WooCommerce 11.1: Refunds, EU Order Withdrawal, and Faster Variable Products

woocommerce wordpress ecommerce release rest-api

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}/refunds now accepts compute_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 permalinks
  • ProductGalleryUtils::get_product_gallery_image_count() is deprecated → use get_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/counts collapses 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: MOPMOP$, ZMWK

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.