FAQ
Does it issue refunds automatically?
Section titled “Does it issue refunds automatically?”No, and it never issues them at all. Withdraw records the customer’s declaration and tracks its status. You issue the refund on the normal WooCommerce order screen and set the request to accepted, rejected or processed on WooCommerce > Withdrawal Requests.
Does it change the order status, or write an order note?
Section titled “Does it change the order status, or write an order note?”It never changes the order status. It does write an order note, both when a declaration arrives and when you change its status, so the order screen shows what happened without anyone needing to know this plugin exists. The refund is still yours to make.
Does the customer get an email when I accept or reject a request?
Section titled “Does the customer get an email when I accept or reject a request?”Yes, since 1.4.0. Each of the four statuses has its own WooCommerce email, sent when you change the status in the request log. The acceptance one also carries the return address, the return deadline and who pays for the return. Switch any of them off under WooCommerce > Settings > Emails if you would rather write yourself.
Does it work for guest orders?
Section titled “Does it work for guest orders?”Yes. The lookup asks for the order number and the billing email used at checkout and compares them case-insensitively, so no account and no login are needed. By default there is no email round-trip either, which means a shop with unreliable outgoing mail can still take declarations. Switching on Guest access > Email a one-time link instead of opening the form straight away changes that on purpose: the form then mails a one-time link to the order’s billing address, so the order number alone is not enough, and outgoing mail becomes a dependency of the withdrawal function. Signed-in customers coming from My Account are never asked for a link.
When does the withdrawal period start?
Section titled “When does the withdrawal period start?”At the order’s completion date, used as a delivery proxy. If the order was never marked completed, it starts at the order creation date. The window then lasts as many days as the Withdrawal period (days) setting, 14 by default, and the items step prints the exact deadline. See how the withdrawal period is calculated for why your fulfilment habit matters here.
Can customers withdraw from part of an order?
Section titled “Can customers withdraw from part of an order?”Yes. Every order line gets its own quantity field, capped at the ordered quantity both in the browser and on the server, so a customer can withdraw from one line, or from two of five units.
Can a customer submit two requests for the same order?
Section titled “Can a customer submit two requests for the same order?”Not while one is open. Any request in pending or accepted status blocks a new declaration for that order, including for lines the first declaration did not cover. Set the first request to rejected or processed to unblock the order.
Where does the “Withdraw from contract here” control come from?
Section titled “Where does the “Withdraw from contract here” control come from?”It is printed after the WooCommerce order details table, which is why it shows both in My Account order views and on the order received page after checkout. It renders only when a withdrawal form page is selected and the order is in an eligible status, and it links to the form with the order number pre-filled.
It does not check the deadline or existing requests, so on an expired order the button is still shown and the form is what refuses. Its label is the Link text setting, shared with the shortcode and the footer link, and the statutory default is translatable through the plogins-withdraw text domain. Before 1.6.2 this one button ignored the setting and always printed the default.
Is the declaration checkbox enforced?
Section titled “Is the declaration checkbox enforced?”Yes, on the server as well as in the browser, since 1.0.8. A submission without it is refused, because the record is the customer’s declaration under Art. 11a and one nobody ticked would be worth nothing as evidence.
How many requests does the log show?
Section titled “How many requests does the log show?”All of them, 25 to a page, since 1.5.0. There is a search box on customer email and order number that works together with the status filter, and the ID column opens a detail screen with the reason, the stored declaration and both timestamps. Before 1.5.0 the list stopped at the newest 100 rows and older ones could not be reached from wp-admin at all.
Do I have to give a reason when I reject a request?
Section titled “Do I have to give a reason when I reject a request?”Yes. The note field next to the status control is required to reject, and what you write is printed in the email the customer receives. It is optional on the other three statuses and printed there too, so it doubles as “your parcel arrived, the refund goes out on Tuesday”.
What personal data does it store, and can I export or erase it?
Section titled “What personal data does it store, and can I export or erase it?”Each request row holds the order ID, the customer’s name and email, the item list, an optional reason, the declaration as it was confirmed, a token and timestamps. Withdraw registers a Withdrawal Declarations exporter for the WordPress personal-data tools. Its eraser anonymises instead of deleting: the email becomes [email protected] and the reason is blanked, while the row and its order reference stay for your records.
Who pays to send the goods back?
Section titled “Who pays to send the goods back?”Whoever you say, and the plugin says nothing until you choose it under Returns on the Withdrawal screen. Art. 14(1), read with Art. 6(1)(i), only lets you charge the customer the direct cost of the return if you told them so before the contract. If you did not, it is yours, so a default of “the customer pays” would make a claim on your behalf that might not hold.
When do I have to refund?
Section titled “When do I have to refund?”Within 14 days of the customer telling you they are withdrawing, not 14 days from when you accepted, and the refund includes the standard delivery cost they paid (Art. 13(1) and 13(2)). The request log prints that date and marks it once it has passed. For goods you may hold the refund until they are back with you or the customer proves they sent them (Art. 13(3)).
Do I have to write the model withdrawal form myself?
Section titled “Do I have to write the model withdrawal form myself?”No, not since 1.6.0. Leave Model withdrawal text empty and the plugin generates the Annex I(B) model form from your seller name, your WooCommerce store address, your email and phone, translated along with the rest of the plugin. Type your own and yours is used. Before 1.6.0 the field shipped an English sentence containing the literal text [seller name and address], printed to customers word for word.
Where do the withdrawal instructions go?
Section titled “Where do the withdrawal instructions go?”On a page of your own, with the [withdraw_instructions] shortcode. Art. 6(1)(h) makes the model instructions on withdrawal (Annex I.A) pre-contractual information, so they have to be available before the customer buys, which the withdrawal form cannot do. The generated text uses your configured withdrawal period, so it cannot say 14 days while the form enforces 30.
Is this legal advice?
Section titled “Is this legal advice?”No. The plugin provides the technical withdrawal function and generates the Annex I model texts from what you tell it. Set the period, the return address and the return-cost rule to match your own obligations, and check the generated wording against the law of your jurisdiction before you rely on it.
Does it load JavaScript on the storefront?
Section titled “Does it load JavaScript on the storefront?”One small script, and only on pages where the shortcode actually renders. It blocks submitting the items step with nothing selected. The form works with JavaScript off; the server runs the same check.
Is it compatible with HPOS?
Section titled “Is it compatible with HPOS?”Yes. Orders are read through the WooCommerce order API and the plugin declares compatibility with HPOS and with cart/checkout blocks. The order link in the request log picks the right URL for whichever storage the shop uses; before 1.0.8 it always used the classic post editor, which did not open an order under HPOS.
Does it work on Multisite?
Section titled “Does it work on Multisite?”Yes. The table and default settings are created per site, re-checked on boot, so sites that never ran activation still get their schema. The one gap is uninstall, which drops only the current site’s table.
Does it create custom database tables?
Section titled “Does it create custom database tables?”One: {prefix}withdraw_requests. Settings live in the withdraw_settings option, and the schema version in withdraw_schema_version.
What happens on uninstall?
Section titled “What happens on uninstall?”The uninstall routine deletes the withdraw_settings and withdraw_schema_version options and drops {prefix}withdraw_requests with every logged request in it, for the site being uninstalled. Export anything you need to keep first; consumer declarations are records you may be expected to produce later.