plugin-icon

Purchase Contract Withdrawal Button for WooCommerce

Adds a withdrawal button to WooCommerce My Account orders. Two-step submission with nonce, configurable cooling-off, automated emails.
Version
1.2.3
Last updated
May 28, 2026
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.php or templates/guest-lookup.php into 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 shown
  • pcwb_period_days — cooling-off period override
  • pcwb_period_reference_date ($date, $order) — override the cooling-off reference date
  • pcwb_new_status — order status applied after submission
  • pcwb_admin_recipient — admin email recipient override
  • pcwb_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
Freeon paid plans
Tested up to
WordPress 7.0
This plugin is available for download for your site.