Docs Returns and Exchanges Manager

Requirements, privacy and FAQ

ItemDetail
NeedsWordPress 6.2 or newer, PHP 7.4 or newer, WooCommerce 8.0 or newer. Pro needs the free plugin.
Works withBlock and classic themes, Cart and Checkout blocks, High Performance Order Storage and legacy storage.
Shortcodes and blocks[wfrx_returns_form], [wfrx_withdrawal_form], [wfrx_withdrawal_link], and blocks with the same names.
TranslationReady for translation. Editable labels and reasons are declared for WPML and Polylang.
Hooks for developersListed in the readme, such as wfrx_order_eligibility, wfrx_refund_amount, wfrx_status_changed and wfrx_user_can.

Privacy

For each request the plugin stores the name, email, order, items, reason, note, photos and tracking number, in your own database and a protected uploads folder. Photos have random names and are served through a permission check. The folder has deny rules for Apache and LiteSpeed. On nginx those rules do not apply, so the random names are what keep them private. The WordPress privacy tools can export and erase this data. An erased request stays without personal data, so the refund history still adds up. The free plugin contacts no outside service.

FAQ

Does this make my store legally compliant? It gives you the function the directive describes, but it is a tool, not legal advice. Check the wording with your adviser.

Should I refund the shipping on a withdrawal? EU withdrawals generally include the original standard delivery cost. Set Refund shipping cost to Decide per request or Always. With Decide per request, the box is already ticked on withdrawals.

A customer typed the wrong order number on the withdrawal form. What happens? They see a message to check the number and try again. Nothing is recorded until order number and email match.

What if the customer wants two reasons on one return? Each request has one reason. They can send two requests for different items.

Can I undo a refund? No. Refunds are normal WooCommerce refunds, so handle them on the order.