Withdraw
- Plugin page: https://plogins.com/plogins-withdraw/
- Documentation: https://plogins.com/plogins-withdraw/docs/
- Author: WPPoland.com
- WordPress.org contributor: motylanogha
- Source: https://github.com/wppoland/plogins-withdraw
Withdraw adds a withdrawal function to WooCommerce, aligned with EU Directive 2023/2673 (the “withdrawal button”, Art. 11a). Customers declare that they withdraw from a distance contract, in full or per item, within the withdrawal period you configure.
It is a request-and-log plugin. It records the customer’s declaration, emails a confirmation to the customer and a notification to the shop, and tracks the request status in the admin. It never moves money. You issue any refund yourself on the normal WooCommerce order screen, which matches the legal model where the consumer declares and the trader acts.
What the plugin does
Section titled “What the plugin does”[withdraw_form]shortcode with a three-step public form: look up an order by number and billing email, choose items and quantities, then read the finished declaration back and confirm it. Nothing is stored until that confirmation, which is what Article 11a(3) asks for.[withdraw_link]shortcode and an optional footer link, so the withdrawal function stays reachable for the whole period rather than only inside a signed-in order view.- Full or partial withdrawal: every order line gets a quantity field capped at the ordered quantity.
- Optional free-text reason, and a declaration checkbox on the items step.
- Withdraw from contract here control rendered under the WooCommerce order details table, linking to your withdrawal page with the order number pre-filled. The wording is the one Article 11a(1) prescribes.
- Configurable withdrawal period, measured from the order completion date or, when the order was never completed, from the order creation date. The form prints the resulting deadline.
- Eligibility gate: order status, deadline and “no open request for this order”, all re-checked on the server when the form is submitted.
- Admin log under WooCommerce > Withdrawal Requests, filterable by status, with a per-row status change (pending, accepted, rejected, processed).
- Plain-text confirmation email to the customer and notification email to the shop on submit.
- Editable form intro text and model withdrawal text, both printed on the public form.
- Guest friendly: the order number plus billing email lookup needs no account.
- Privacy tools: a personal-data exporter for declarations, and an eraser that anonymises the stored email and reason.
- HPOS and cart/checkout blocks compatibility declared, and the request table is created per site, so Multisite works.
What it deliberately does not do
Section titled “What it deliberately does not do”- It issues no refunds and changes no order status.
- It writes no order note back to WooCommerce, so the declaration lives in its own log, not on the order screen.
- It sends no email when you change a request status. Accepting, rejecting or marking a request processed is an internal state change only, so tell the customer yourself.
- It exposes no REST or AJAX endpoint, runs no cron job, and generates no PDF or downloadable model form.
How a withdrawal request works
Section titled “How a withdrawal request works”- The customer opens your withdrawal page and enters the order number and the billing email used at checkout. The match is case-insensitive.
- Withdraw checks that the order status is one of the eligible statuses, that the withdrawal period is still open, and that no pending or accepted request already exists for that order.
- The customer picks items and quantities, optionally writes a reason, ticks the declaration checkbox and submits.
- The same eligibility checks run again before anything is written, so a stale or tampered form cannot slip through.
- The request is stored in the plugin’s own table, both emails go out, and a confirmation naming the request ID, the order number and the withdrawn items replaces the form.
- The request appears on WooCommerce > Withdrawal Requests, where you set its status. Any refund happens on the normal WooCommerce order screen.
Next steps
Section titled “Next steps”- Getting started, install and set up the withdrawal page.
- Configuration, the settings reference, the period calculation, the request log and storage.
- FAQ, refunds, guests, emails, privacy, HPOS and uninstall.