Purchase Contract Withdrawal Button for WooCommerce
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
