Purchase Contract Withdrawal Button For WooCommerce Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Purchase Contract Withdrawal Button for WooCommerce adds a clearly-labeled “Withdraw from purchase contract” button to each customer’s order detail page in WooCommerce My Account. It implements the two-step submission process required by EU consumer law: the customer clicks the button, reviews their order details, optionally provides a refund bank account and reason, and then explicitly confirms.
After submission:
- The order is moved to a configurable status (default: On hold)
- A note is added to the order with the customer’s reason and refund account
- The customer receives a confirmation email
- The store administrator receives a notification email with all submission details
Both emails are registered as standard WooCommerce email classes and can be customized in WooCommerce Settings Emails.
Legal context
This plugin is designed to help merchants comply with EU Directive 2023/2673, which requires online merchants to provide consumers with a direct online function to withdraw from a contract — the same way they could enter into it. In the Czech Republic, this obligation enters into force on 19 June 2026 under § 1830a of the Civil Code (the so-called “button amendment 2.0”). Similar transposition is required across all EU member states.
The plugin is not legal advice. Merchants remain responsible for ensuring their full implementation (including terms and conditions, refund processing, and goods return) complies with applicable law.
Features
- Two-step submission — button click form with details explicit confirmation
- Guest shortcode — optional
[pcwb_withdrawal_form]for non-logged-in customers (order number + billing email lookup, rate-limited) - Configurable cooling-off period — default 14 days, adjustable per store
- Date of delivery meta box — admin can record when the goods were received; the cooling-off period then runs from that date (legally correct under EU law)
- Configurable eligible statuses — choose which order statuses show the button
- Configurable post-submission status — typically On hold or Processing
- WooCommerce email integration — customer + admin emails as native WC_Email classes
- Admin overview — dedicated “Withdrawals” screen under WooCommerce: filter by pending/resolved, search, CSV export, bulk “Mark as resolved”
- Order actions — admins can submit a withdrawal on behalf of the customer (e.g. phone request) and mark requests resolved from the order edit screen
- Translatable — full text domain, .pot included, Czech and Slovak translations bundled
- Theme-overridable templates — copy
templates/withdrawal-form.phportemplates/guest-lookup.phpinto your theme to customize - HPOS-compatible — works with WooCommerce’s High-Performance Order Storage
Filters and actions
pcwb_eligible_statuses— array of statuses where the button is shownpcwb_period_days— cooling-off period overridepcwb_period_reference_date($date, $order) — override the cooling-off reference datepcwb_new_status— order status applied after submissionpcwb_admin_recipient— admin email recipient overridepcwb_after_submit($order, $reason, $account, $source) — fires after a successful submission (source = customer|guest|admin)pcwb_after_resolve($order, $resolved_by_user_id) — fires when an admin marks a withdrawal resolved
Screenshots
Withdrawals admin overview — filter by pending/resolved, search, date range, bulk actions, CSV export, per-row Resolve.
Order edit screen with the “Withdrawal cooling-off” meta box — set the date of delivery, see the cooling-off deadline and submission details.
Order actions dropdown — submit a withdrawal on behalf of the customer, or mark an existing one as resolved.
Guest lookup form rendered by the [pcwb_withdrawal_form] shortcode on a public page — order number + billing email.
Guest withdrawal form after successful lookup — pre-filled order summary, optional refund account and reason, explicit confirmation.

