This page covers installation, every setting, the customer and admin workflows, compatibility, FAQ, and the changelog for the WooCommerce Return & Exchange RMA plugin — version 1.3.1, tested against WordPress 7.1.1 and WooCommerce 11.1.1.
Overview & terminology
This plugin lets a customer request a return or exchange for items on their order, or cancel the order outright, and lets you review and act on each request from WooCommerce’s own order screen.
Installation & activation
Uploading and activating a plugin works the same way for every WordPress plugin — if you haven’t done this before, see our general guide: How to install plugins in WordPress. The only thing to confirm here is that WooCommerce is already installed and active before you activate this plugin.
Activation automatically creates a “Return/Exchange Request” page (used for guest requests) and this plugin’s three internal tracking tables. Once active, find its settings under WooCommerce → Settings → Return & Exchange.
Settings reference
Settings are grouped into four sections under the Return & Exchange tab. Each section saves independently with its own Save changes button.
| Setting | What it does |
|---|---|
| Enable Return/Exchange | Master switch. Off hides the entire feature regardless of the other settings. |
| Allow Reason | Requires a reason per item, rather than one reason for the whole request. |
| Cancel Order | Lets customers cancel their own order (only while it’s in a genuinely cancellable status — see Order cancellation below). |
| Setting | What it does |
|---|---|
| Enable | Turns return requests on specifically. |
| Manage Stock | Restocks the returned quantity automatically when you accept the request. |
| Include Shipping Fee | Adds the order’s shipping cost into the calculated return amount. |
| Max Days for Request | How many days after the order date a return can still be requested. |
| Minimum Order Amount | Only offer returns on orders at or above this total. |
| Exclude Categories | Product categories that are never eligible for return, regardless of the per-product setting. |
| Select Order Status | Which order statuses a customer can request a return from. |
| Return Note on Product Page | Optional note shown on the product page for return-eligible items. |
The same set of options as Return Products, applied to exchanges instead.
Add the canned reasons (e.g. “Wrong size,” “Item damaged”) that appear in the dropdown on the customer’s request form.
Enabling products for RMA
Return and exchange eligibility is opt-in per product. Open Products → Edit Product → Advanced and check Allow Return and/or Allow Exchange as appropriate.
Category exclusions (set in the tabs above) always override the per-product checkboxes — a product in an excluded category stays ineligible even with both boxes checked.
The customer experience
From My Account → Orders, an eligible order shows Return / Exchange / Cancel actions based on your settings, the order’s age, its total, and its current status. Choosing Return or Exchange opens a form listing the order’s items, where the customer picks quantities, a reason, and — for returns — whether they’d like a store coupon or to arrange a manual refund with you.
Submitting creates the request and moves the order to a dedicated status (return-requested, exchange-request, etc.), and sends you an email notification.
Guest requests
Add the [wcrem_guest_user_form] shortcode to any page to let a non-account visitor look up an order by order number and billing email, then act on it the same way a logged-in customer would.
Order cancellation
When enabled, a Cancel action appears on orders in a genuinely cancellable status — matching WooCommerce’s own rule for which statuses are safe to self-cancel (pending or failed by default, filterable via woocommerce_valid_order_statuses_for_cancel like any WooCommerce cancel action). Clicking it cancels the order and returns the customer to their orders list with a confirmation.
Reviewing requests as an admin
Open the order in WooCommerce → Orders. Requested items and their reasons appear under the line items, with Accept / Decline actions. Accepting a return updates stock (if enabled), generates a coupon if the customer chose that option, and emails the customer. Accepting an exchange creates a new linked order for the replacement items.
Compatibility notes
- HPOS (High-Performance Order Storage): fully supported, including correct billing/shipping addresses on generated exchange orders.
- PHP 8.3: verified clean, no deprecation warnings.
- Security: every request-handling form is protected against forged submissions, and an order can only be acted on by the customer it actually belongs to (or a verified guest lookup). Photo attachments are validated by their real file content, not just their filename.
FAQ
A product isn’t showing a return option — why?
Check its Return/Exchange checkboxes under Product → Advanced, and confirm its category isn’t in your exclusion list.
Can a customer cancel any order?
No — only orders in a status WooCommerce itself considers safe to cancel (pending or failed by default), the same rule its own core cancel feature follows.
Do guests need an account to request a return?
No — the guest lookup form verifies them by order number and billing email instead.
What happens to stock when I accept a return?
If “Manage Stock” is enabled for that request type, the returned quantity is added back automatically.
Changelog
Fixed the Guest User request form, which previously dead-ended after a successful order lookup. Fixed a per-product setting bug that could mark a product returnable when only “Allow Exchange” was checked. Fixed a PHP warning on manual-refund approvals and request declines.
Full HPOS (High-Performance Order Storage) support. PHP 8.3 compatibility. Security hardening: CSRF protection and order-ownership verification across every request-handling form, and real file-content validation on photo attachment uploads. Fixed the settings page not saving reliably, and fixed a blank-page bug on order cancellation — Cancel now follows WooCommerce’s own standard cancel-order behavior, including its status-eligibility rule.
Core RMA functionality: return/exchange requests, coupon or manual refunds, order amount and time limits, category exclusions, custom request reasons, and guest lookup.
Questions? See plugins.crevolsoft.com or reach out via support.
