BeziWorld Withdrawal for WooCommerce

BeziWorld Withdrawal for WooCommerce

توسط

BeziWorld Withdrawal for WooCommerce is a free, GPL-licensed compliance toolkit that prepares your shop for the EU Modernisation Directive (Directive (EU) 2023/2673) which takes effect on 19 June 2026.

The directive forces every online shop selling to EU consumers to expose a dedicated, one-click withdrawal function inside the shop interface. This plugin delivers that function — and goes well beyond the minimum.

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
  • Four customer status emails (confirmation, received, refunded, rejected) — all overridable from your theme
  • 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. 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.

  1. Activate WooCommerce 8.0 or newer if it is not already active.
  2. Upload the plugin via Plugins Add New Upload Plugin, or unzip into /wp-content/plugins/.
  3. Activate the plugin through the Plugins screen.
  4. A Withdraw from contract page is created automatically — link it from your terms of sale.
  5. Go to WooCommerce Withdrawal Settings to review the defaults (button labels, refund policy, eligibility rules, storefront notices).
  6. The plugin is now live. Logged-in customers see the Withdrawal tab inside My Account; guests can use the public page with the [bzww_withdrawal_form] shortcode.

سوالات متداول

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

The plugin covers the technical requirements: 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. The plugin does not provide legal advice. Consult a lawyer for the specifics of your jurisdiction.

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.

×
نظری برای این آیتم موجود نیست.
0 0 رای ها
امتیازدهی
اشتراک در
اطلاع از
0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
هیچ نسخه‌ای برای این آیتم موجود نیست.
بدون امتیاز

قیمت:

رایگان

نگارش

آخرین انتشار

20 خرداد 1405

آخرین بروزرسانی

2 ماه پیش

نصب های فعال

-

نگارش وردپرس

وردپرس 6.4+

تست شده از نسخه

وردپرس 7.0

نگارش PHP

PHP 7.4+

نسخه ها

0 نسخه