This is an info Alert.
x402 Logo
  • Product
    • Become Agent-Ready
      • Merchants
        Agentic Commerce — list your store across ChatGPT, Gemini, Claude & Perplexity
      • Publishers
        Monetize your content when AI agents read, cite, or train on it
      • SaaS Companies
        Treat AI agents as first-class customers with agent-priced checkout
    • Monetize
      • Monetize MCP Server
        Charge per call on any MCP server in 2 minutes
      • Monetize AI Agents
        Turn n8n, Zapier, Activepieces workflows into revenue
      • Agent Feed
        Pay-per-query access to licensed publisher content for your agents
  • Resources
    • xpay Ecosystem
      • xpay✦ Tools
        1,000+ pay-per-use tools for your AI agents
      • Agent-Ready SaaS Index
        25,481 SaaS scored on agent-buyability
      • SaaS Pricing Database
        Pricing pages indexed across 1,000+ categories
      • Shopify Apps Directory
        Every Shopify app, with its full review history
      • WooCommerce Plugins Directory
        Every WooCommerce plugin, scored on how well it is maintained
      • GitHub
        Open source repositories
    • Agent Building
      • Agent Frameworks
        AI frameworks for building multi-agent systems
      • x402 Integration
        AI frameworks with x402 payment integration
      • Networks
        Blockchain networks supporting x402
    • Company
      • About xpay✦
        Our mission, products, and protocols
      • Blog
        Latest insights and updates
      • Docs
        Complete xpay documentation
  • Pricing
  • Blog
  • Docs
Get Started
  1. xpay✦ Commerce

  2. Directory

  3. WooCommerce plugins

  4. BeziWorld Withdrawal for WooCommerce

BeziWorld Withdrawal for WooCommerce

EU 2023/2673 withdrawal-from-contract flow for WooCommerce. Per-item withdrawals, guest tokens, automatic gateway refunds, holiday-aware deadlines.

10+ active installs
5.0
(1 ratings)
Free on WordPress.org
View on WordPress.orgSupport forum
Will this break my store?

What the WordPress.org registry says about keeping BeziWorld Withdrawal for WooCommerce running.

WordPress compatibility
Tested to 7.0.2
Tested against the WordPress branch in use today.
Last updated
25 days ago
Requires PHP
7.4
Your host must be running at least this version.
Requires WordPress
6.4
Requires other plugins
woocommerce
These must be installed and active first.
Contributors
1
A single maintainer. Worth knowing if the plugin is load-bearing for your store.

10+ active installsWordPress.org reports installs in bands, not exact counts.
Maintenance & trust

Scored on how BeziWorld Withdrawal for WooCommerce is looked after — not on how many stores run it.

Well maintained
Not enough public feedback to put a confident number on this one. Little public feedback — score rests mostly on release activity. What we can see is below.

Maintenance
35 / 35
Updated 22 days ago.
WordPress compatibility
20 / 20
Tested to WP 7.0.2 (current).
Support responsiveness
Not enough data
Only 1 support thread(s) — not enough to judge.
Merchant satisfaction
10 / 15
5.0/5 across 1 rating(s).
Listing transparency
10 / 10
Provides: screenshots, description, homepage
1 of 5 measures had too little evidence to score. They are left out of the total rather than counted as zero — otherwise a plugin would be marked down for being small rather than for being poorly kept.Measured 2026-08-01 from the WordPress.org plugin registry.
Ratings

5.0

1 rating
5★1
4★0
3★0
2★0
1★0
Every rating WordPress.org holds for this plugin, not a sample. Written reviews live in the plugin's WordPress.org reviews forum.

Add a compliant withdrawal button (“right of withdrawal” / “Widerrufsbutton” / “odstąpienie od umowy”) to your WooCommerce store. BeziWorld Withdrawal for WooCommerce is a free, GPL-licensed plugin that gives EU shops the dedicated, one-click withdrawal-from-contract function required by the EU Modernisation Directive (Directive (EU) 2023/2673, amending the Consumer Rights Directive via Article 11a), in force since 19 June 2026.

The directive requires online shops selling to EU consumers to provide a dedicated, one-click withdrawal function inside the shop interface — separate from any generic returns/RMA page. This plugin delivers that function and the surrounding workflow: item-level partial withdrawals, a durable-medium acknowledgement, automatic refunds, and a tamper-evident audit trail.

This plugin is a technical tool; it does not provide legal advice and does not by itself guarantee legal compliance. Responsibility for meeting the applicable consumer-law obligations remains with the shop operator. How the directive applies depends on your country’s transposition (for example, the dedicated withdrawal-function obligation is in force in Germany, France, Italy and the Netherlands, but had not been transposed in Poland at the time of writing). Consult a qualified lawyer for your jurisdiction.

This plugin is an independent project. It is not affiliated with, endorsed by or sponsored by WooCommerce or Automattic Inc. “WooCommerce” is a trademark of its respective owner and is used here only to describe compatibility.

What this plugin gives you

  • A dedicated Withdrawal tab inside WooCommerce’s My Account area
  • Item-level partial withdrawals with per-line quantity selection
  • Public withdrawal page auto-created on activation — guests enter order number + email to authenticate, no account required
  • Single-use guest token automatically embedded in the order confirmation email
  • Immediate confirmation email on a durable medium, as required by Article 11(3) CRD
  • Configurable withdrawal period (14-60 days, default 14) — increase if you offer an extended return policy
  • Deadline calculator that rolls weekends and public holidays forward to the next working day
  • Polish public holidays preset for 2026-2028 (extensible to any locale through a filter)
  • Refund calculation that respects Article 13(2) CRD: items plus the cheapest standard shipping option you offered
  • Automatic refunds through the original payment gateway when supported (Stripe, PayU, Przelewy24, Tpay, Mollie, etc.)
  • Admin can override the calculated refund amount (restocking fee, partial damage)
  • Configurable rule engine: exclude products, categories, user roles or payment gateways from withdrawal
  • Storefront notices on product / cart / checkout / thank-you pages with WYSIWYG-editable text
  • Predefined reason picker, configurable from settings
  • Customer self-service cancellation while still pending
  • Five status emails: four to the customer (confirmation, received, refunded, rejected) plus a merchant notification when a new withdrawal is submitted — each with a visual (WYSIWYG) body editor and all overridable from your theme
  • Editable withdrawal-form wording: reword the form heading, labels and hints from the settings screen, with legally compliant defaults pre-filled
  • Withdrawal form field manager: choose which optional fields appear (reason, details, phone, IBAN), reorder them, and add your own custom fields — while the statutory item/name/email fields always stay required
  • Optional automatic transition of the order status when a withdrawal is submitted
  • Full audit trail: IP, user-agent, server-side timestamps in UTC
  • Trash / restore / delete for withdrawal records
  • CSV export of all withdrawal statements
  • WordPress privacy tools integration — exporter and eraser registered by default
  • WP-CLI commands: wp bzww list, wp bzww refund, wp bzww cancel, wp bzww received, wp bzww stats
  • REST API endpoints under /wp-json/bzww/v1/ for headless and mobile clients
  • Gutenberg block and Elementor widget alternatives to the shortcode
  • WooCommerce HPOS (custom order tables) compatible
  • 30+ filters and actions for deep customization (see HOOKS.md in the source repository)
  • Verifiable acknowledgement: each confirmation carries a SHA-256 receipt code recomputable from the stored declaration, so the durable-medium record is tamper-evident
  • Printable acknowledgement certificate the consumer can save as a PDF with the browser print function
  • Always-visible access: a site-wide footer link plus an optional dismissible sticky bar, so the withdrawal function is reachable from every page
  • Annex I generator: one-click withdrawal-information (Annex I.A) and model-withdrawal-form (Annex I.B) pages, generated from your store details, plus [bzww_withdrawal_policy] and [bzww_model_form] shortcodes
  • Optional two-step confirmation with a read-only review screen (off by default)
  • Optional IBAN field for consumers who request a refund to a specific account (never mandatory; validated with the IBAN checksum)
  • Compliance readiness panel in settings — an at-a-glance checklist of what is configured for the directive
  • Honeypot spam protection and per-IP rate limiting on the public lookup and guest submission
  • WCAG 2.1 AA accessibility on the customer-facing forms

Built-in features (no premium upgrade required)

  • Item-level partial withdrawals with quantity
  • Guest withdrawal flow with email-based lookup
  • Automatic refunds via payment gateways
  • Weekend & public-holiday aware deadline
  • Audit trail with IP & user-agent
  • REST API
  • WP-CLI
  • CSV export
  • GDPR exporter/eraser
  • Gutenberg block + Elementor widget

Theme overrides

Every customer-facing template can be overridden by your theme. Drop a copy of any file from templates/ into your-theme/beziworld-withdrawal-for-woocommerce/<same-path>.php and the plugin will use your version.

External services

This plugin performs no analytics, telemetry or remote downloads, and phones nothing home. Everything runs inside your WordPress installation.

The single exception is entirely optional and off by default: if you enter a notification Webhook URL in the settings (for Slack, Discord or your own endpoint), the plugin sends a small JSON payload to that URL when a withdrawal is submitted and when it changes status (received, refunded, rejected). The payload contains the event name and the withdrawal and order identifiers (and the order number). No webhook is configured by default and nothing is sent unless you set a URL; the destination is the address you choose.

Is this plugin enough to make my shop compliant with EU 2023/2673?

The plugin covers the technical building blocks: a dedicated withdrawal function, a clearly labelled button, immediate confirmation on a durable medium, item-level selection, and a refund mechanism within 14 days. You still need to update your terms of sale, your privacy policy and the order summary copy. Whether — and exactly how — the dedicated withdrawal-function obligation applies depends on your country’s transposition of Directive (EU) 2023/2673: it is in force in Germany, France, Italy and the Netherlands, while in Poland it had not been transposed at the time of writing (so the function is voluntary there for now). The plugin does not provide legal advice and does not by itself guarantee compliance. Consult a lawyer for the specifics of your jurisdiction.

Is a withdrawal button mandatory? (Ist der Widerrufsbutton Pflicht?)

It depends on your country’s transposition of Directive (EU) 2023/2673 (Article 11a). A dedicated withdrawal function is mandatory in Germany (§356a BGB, with an Abmahnung risk if missing), France, Italy and the Netherlands; in Poland the obligation had not been transposed at the time of writing, so it is voluntary there for now but still strengthens your consumer-law position. The plugin shows a jurisdiction-aware status and never makes a single global “mandatory” claim.

Does the 14-day withdrawal apply to a shop in Poland? (odstąpienie 14 dni)

Yes — the 14-day right of withdrawal for distance contracts applies to Polish consumers under existing consumer law, independently of whether the newer dedicated-button obligation has been transposed. The plugin calculates the 14-day deadline (rolling weekends and Polish public holidays forward) and lets the consumer withdraw from the conclusion of the contract; the deadline starts on delivery.

Does it work with the block (Store API) checkout and block themes?

Yes. The statutory notices render on the block cart and block checkout, and the Article 16(m) digital-content consent is captured on the block checkout — not only the classic shortcode checkout. The customer-facing UI adapts to block themes, dark mode and high-contrast settings.

How do guests (logged-out customers) submit a withdrawal?

The plugin auto-creates a public page on activation with the [bzww_withdrawal_form] shortcode. Guests visit that page, enter their order number and the email used at checkout. After verification, the plugin issues a single-use token and shows the same withdrawal form a logged-in customer would see. The link is also embedded in the order confirmation email for one-click access.

Does it support multi-shipment orders?

Yes. The 14-day clock starts after the last parcel is delivered. Because WooCommerce core does not track shipment-level delivery, the plugin uses the order completion timestamp by default and exposes a bzww/order/delivered_at filter so a shipping/tracking plugin can override it.

How are digital products handled?

Per Article 16(m) CRD, sealed digital products and downloadable software are excluded by default. Products flagged as Virtual + Downloadable in WooCommerce are skipped automatically.

Can a customer cancel a pending withdrawal?

Yes. While a statement is in the pending state the customer sees a “Cancel this withdrawal” button on the success page in My Account.

Does it work with HPOS / custom order tables?

Yes. The plugin declares full HPOS compatibility on activation.

Where are records stored?

In a private custom post type, bzww_withdrawal. Each statement is one post with meta fields holding order id, items, amount, IP and user-agent.

How do I add public holidays for a country other than Poland?

Use the bzww/eligibility/holidays filter to return an array of Y-m-d strings. The plugin will roll the 14-day deadline forward when it lands on one of those dates.

Can I customise the withdrawal period?

Yes. WooCommerce → Withdrawal Settings → Withdrawal period (days) — set anywhere between 14 and 60 days. The default is the 14 days mandated by EU law; the minimum cannot go below the statutory 14.

Can the admin adjust the refund amount before issuing?

Yes. Each withdrawal detail page has an editable Refund amount input pre-filled with the calculated value. Override it to deduct a restocking fee or to account for the condition of returned goods.

Where can I learn about the available hooks?

The plugin is built to be extended. The main filters and actions are listed below; all pass the relevant order or withdrawal so you can tailor behaviour without touching plugin files.

Eligibility & deadlines (filters)

  • bzww/eligibility/excluded_statuses — order statuses excluded from withdrawal.
  • bzww/eligibility/deadline — the computed withdrawal deadline (DateTime).
  • bzww/eligibility/holidays — extra non-working days for weekend/holiday roll-over.
  • bzww/order/delivered_at — override the delivery date the deadline is based on.
  • bzww/rules/order, bzww/rules/item — allow or deny a specific order or line item.
  • bzww/withdrawal/deny_duplicate — whether to block a second statement for the same order.

Refunds (filters)

  • bzww/refund/deadline_days — statutory reimbursement deadline in days (default 14).
  • bzww/refund/args — arguments passed to the WooCommerce refund.
  • bzww/refund/cheapest_shipping — override the cheapest-delivery amount (Art. 13(2)).

Lifecycle (actions)

  • bzww/withdrawal/submitted ( $withdrawal_id, $request, $order )
  • bzww/withdrawal/cancelled ( $withdrawal_id )
  • bzww/withdrawal/status_changed ( $withdrawal_id, $previous, $current )
  • bzww/withdrawal/transition_to_{status} ( $withdrawal_id, $previous )
  • bzww/refund/before, bzww/refund/after, bzww/refund/failed
  • bzww/plugin/booted ( $plugin )

Security, presentation & integration (filters)

  • bzww/submit/rate_limit, bzww/submit/rate_window, bzww/lookup/rate_limit, bzww/lookup/rate_window — throttling.
  • bzww/request/client_ip — resolved client IP behind proxies.
  • bzww/lookup/resolve_order — custom guest order lookup.
  • bzww/csv/columns, bzww/csv/row — admin CSV export shape.
  • bzww/webhook/payload — outbound webhook body.
  • bzww/templates/theme_directory, bzww/templates/located — template overrides.
  • bzww/placement/html, bzww/placement/tokens, bzww/access/label, bzww/access/url — front-end placement.
  • bzww/checkout/digital_consent_text, bzww/assets/should_enqueue, bzww/model_form/policy_html, bzww/model_form/model_form_html.

A REST endpoint GET /wp-json/bzww/v1/stats (capability manage_woocommerce) and the wp bzww CLI commands are also available for monitoring and automation.

Categories
Marketplaces & channels
Plugin details
Version2.86.0
Last updated2026-07-10 7:03pm GMT
Added2026-06-01
Requires WordPress6.4
Tested up to7.0.2
Requires PHP7.4

Tags on WordPress.org
consumer rights
EU compliance
right of withdrawal
withdrawal
woocommerce
Alternatives
Other plugins in the same categories.
EU Withdrawal Compliance
1K+ installs
5.0(15)
Dokan: AI Powered WooCommerce Multivendor Marketplace Solution – Build Your Own Amazon, eBay, Etsy
30K+ installs
4.6(766)
MultiVendorX – WooCommerce Multivendor Marketplace AI Powered Solutions
2K+ installs
4.8(432)
MarketKing — Ultimate WooCommerce Multivendor Marketplace Solution
800+ installs
5.0(18)
Product Sync for WooCommerce – API Import, Dropshipping & Inventory Sync
300+ installs
5.0(16)
Vitepos – Point of Sale (POS) for WooCommerce
2K+ installs
4.7(53)
x402 Logo

The agent-readiness stack for the AI shopping era — helping merchants, publishers and SaaS companies get discovered, cited and transacted with by ChatGPT, Perplexity, Claude, Gemini and the custom shopping agents underneath them.

CompanyAgentically Inc. (d/b/a xpay✦)1875 Mission St, Ste 103San Francisco, CA 94103, United Stateslegal@xpay.sh · privacy@xpay.sh
or ask your AI app
Company
About xpayAgency PartnersGitHubDiscordllms.txt
DevelopersDocumentationAPI ReferenceSDKs & LibrariesQuickstart GuideOpenAPI Spec
Stay Updated
Occasional product updates and agent-readiness playbooks from xpay (Agentically Inc.) — typically a couple of emails a month. Double opt-in: we email you a link to confirm before sending anything, and every email has one-click unsubscribe.
Social
  • For Publishers
    • News
    • Finance
    • Dev / Tech
    • Travel
    • View all verticals
  • Agent Feed
    • AI Search Engines
    • RAG Builders
    • Browser Agents
    • Vertical Research
    • Browse full catalog
  • Agent-Ready Index
    • SaaS Pricing Database
    • Agent-Ready SaaS Index
    • Verified band
    • AI & ML
    • Sales & CRM
  • Products
    • Pricing Widget
    • Monetize MCP Server
    • Paywall
    • Smart Proxy
    • Monetize AI Agents
    • xpay x402 Facilitator
  • Agentic Economy
    • Timeline
    • Resources
    • Manifesto
    • Stack
  • Agentic Commerce
    • Get listed
    • ChatGPT Ads
    • How ChatGPT Ads work
    • ChatGPT Ads · Apparel
    • ChatGPT Ads · Health & Beauty
    • xpay Listings · Amazon + Google
    • Pricing
    • Free audit
    • Shopify
    • WooCommerce
    • Apparel & Accessories
    • Health & Beauty
    • Overview
  • Commerce Index
    • Shopify apps directory
    • Agentic Commerce Ready Index
    • Methodology
    • Pet brands · WooCommerce
    • Pet brands · Shopify
  • Marketplace
    • 🛍️ xpay.deals — agentic storefront for deals
  • Protocols
    • Overview
    • x402
    • MPP
    • UCP
    • ACP
    • AP2
    • TAP
    • A2A
  • Agent Frameworks
    • Overview
    • LangChain
    • CrewAI
    • Claude MCP
    • AutoGPT
    • LangChain vs Mastra
    • LangGraph vs Pydantic AI
  • Company
    • About xpay
    • Blog
    • Docs
    • GitHub
  • Free prompts
    • Ecommerce prompts
    • Email marketing prompts
    • Product description prompts
    • Facebook ad prompts
    • Skincare prompts
    • Supplement prompts
    • Wine prompts
    • Electronics prompts

© 2025 Agentically Inc. All rights reserved.
Privacy PolicyTerms of UseAcceptable Use Policy