Back to Blog
WooCommerce Returns & Refunds Sep 24, 2026

How to configure return eligibility rules and time limits in WooCommerce

Yash Patel

Yash Patel

Administrator

How to configure return eligibility rules and time limits in WooCommerce

A customer emails on day 31 asking to return a jacket. Your policy page says 30 days. Your store shows her a Return button anyway, because nothing in WooCommerce knows what your policy page says. Your support person now has to choose between breaking the policy and arguing with a customer who was told, by your own site, that she could.

The fix is to turn the written policy into rules the store enforces: how long the window stays open, which orders qualify, which products never qualify, and how many returns one customer can make before someone looks at the account. When those rules live in the software, the Return button appears only when the policy says it should.

This guide walks through setting those rules in Zorem Returns, a WooCommerce returns plugin that runs the whole return and exchange flow from the customer’s My Account page. If you have not yet written the policy itself, start with how to set up a WooCommerce returns policy and come back here to enforce it.

Why return eligibility needs rules, not just a policy page

WooCommerce core has no concept of a return window. Refunds are something an admin does to an order, at any time, for any reason. So every eligibility decision falls to a person reading an email and checking dates by hand.

Zorem Returns decides eligibility in layers, and a request has to pass all of them:

  1. The order. Is it in a status you allow returns from, and was it paid with a method that allows returns?
  2. The clock. Is it still inside the return window for this customer?
  3. The item. Is the product excluded, in an excluded category, or on sale?
  4. The customer. Are they on the blocklist, or over their return limit?

One detail matters more than the rest: when the clock starts. By default the window opens on the day the order moves to Processing, which for most payment gateways is the day payment clears, not the day the parcel arrives. A 14-day window on an order that spends 10 days in transit leaves the customer four days. If your carriers are slow, set the window with transit time in mind.

How to set return eligibility rules and time limits in WooCommerce

All the settings below live in WooCommerce > Returns Center > Settings, split across the sections in the left sidebar. The full option reference is in the Zorem Returns setup documentation.

Step 1: Set the return window

  1. Open General Settings.
  2. In Return/Exchange Window (Days), enter your window. The default is 30 and the field accepts 0 to 90.
  3. Save.

The same window applies to returns and exchanges. The last day counts: with a 30-day window, a request on day 30 is still accepted.

Step 2: Choose which order statuses qualify

In Eligible Order Statuses for Returns/Exchanges, select every status that should show the return and exchange buttons. The default is Completed only. If you use a custom status such as Delivered, add it here. Orders that already have a partial return stay eligible so the customer can return the rest.

This setting controls whether the button appears. It does not move the start of the window, which stays tied to Processing.

Step 3: Exclude products and categories

Still in General Settings:

  • Exclude Categories from Returns/Exchanges: pick categories that are final sale, such as underwear, earrings, personalised items or perishables.
  • Products Not Eligible for Returns/Exchanges: pick individual products that break the category rule, such as one clearance item in an otherwise returnable range.

Both lists apply to returns and exchanges alike.

Step 4: Decide on sale items

This is the setting most stores miss. Allow Returns for Sale Products in Return Settings is off by default, which means sale items cannot be returned until you switch it on. Exchange Settings has its own toggle, Allow exchanges for sale products, also off by default. Many stores refuse refunds on sale items but still allow a size swap, and the two separate toggles let you do exactly that. Our guide to handling WooCommerce product exchanges covers the rest of the exchange setup.

Step 5: Block returns by payment method

In Return Settings, Disable Returns for Payment Methods hides the Return button for orders paid through the gateways you select. Cash on Delivery is the usual case, because there is no card to refund. Write what the customer should do instead in Return Disabled Message. Exchange Settings has a matching pair of options.

Step 6: Give individual customers a longer window

Turn on Enable Per-User Return Window Extension in General Settings. A Custom Return Window (Days) field then appears on each customer’s WordPress user profile (Users > Edit). Enter a number and that customer’s orders use it instead of the store window. Leave it at 0 and they use the store default.

Use it for wholesale accounts, VIP customers, or a customer your team has agreed to help after a shipping delay.

Step 7: Limit how often one customer can return

Open Fraud Prevention, switch on Enable Fraud Prevention, then Enable Per-Customer Return Limit. Set:

  • Maximum Returns per Customer: default 3.
  • Time Window (Days): a rolling look-back, default 90.
  • Limit-Reached Message: what the customer sees instead of the Return button.

Requested, approved and completed returns count towards the limit. Rejected and cancelled ones do not, so a request you turned down never counts against the customer. For accounts you never want to accept returns from, add their email or user ID to the Customer Blocklist. Turn on Email Admin When Limit Is Hit if you want to know when someone reaches the cap.

How to confirm your eligibility rules are working

Settings pages do not tell you what a customer actually sees. Check it directly:

  1. Place a test order containing one normal product, one excluded product and one sale item. Move it to Processing, then to Completed.
  2. Open the order from the customer’s My Account > Orders page. The normal product should have a Return button. The excluded and sale items should not. If every item in an order is ineligible, the order-level Start a Return button disappears too. Logging in as the customer is easiest with a tool built for it, as in our guide to testing your store as a customer.
  3. For the return limit, go to Fraud Prevention > Check Customer Return Count and enter the customer’s email or user ID. It shows the counted total, every matching return, and whether the customer is on the blocklist.
  4. For the window, test on an older order that should already be outside it. Its buttons should be gone.

What the eligibility rules do not do

These limits are worth knowing before you promise anything in your policy copy. They apply to version 1.7.5, the current release when this post was written in September 2026.

  • There is one return window for the whole store. You cannot give a single product or category a 60-day window while the rest get 30. Per-product and per-category periods exist only for warranty claims, which are a separate flow.
  • The maximum window is 90 days. Both the store setting and the per-customer field stop at 90.
  • The window starts at Processing, and there is no setting to change that. A developer can move it to another status with the zorem_return_window_start_status filter.
  • The sale check looks at today’s price. It asks whether the product is on sale when the customer submits the request, not whether it was on sale when they bought it. An item bought at full price that has since been discounted counts as a sale item. An item bought on sale whose sale has ended does not.
  • Category exclusion reads a product’s first category. If a product sits in several categories, exclude it by product as well.
  • Per-customer windows need an account. Guest orders always use the store window.
  • Condition is not checked automatically. “Unworn, with tags” is something your team confirms when the parcel arrives, before approving the refund.

Frequently asked questions

When does the return window start in WooCommerce?

WooCommerce itself has no return window. In Zorem Returns, the window starts on the day an order moves to Processing. If there is no record of that date, for example on orders placed before the plugin was installed, it uses the Completed date and then the order date. A developer can change the starting status with a filter.

Can I make certain products non-returnable?

Yes. In General Settings, add them to Products Not Eligible for Returns/Exchanges, or add their category to Exclude Categories from Returns/Exchanges. Excluded items get no Return or Exchange button on the customer’s order page. If every item in an order is excluded, the Start a Return button is hidden as well.

Why can’t my customer return a sale item?

Allow Returns for Sale Products is off by default, so sale items are ineligible until you enable it in Return Settings. Exchanges have a separate toggle. The check uses the product’s sale status at the time of the request, so a product that went on sale after purchase is also treated as a sale item.

Can one customer have a longer return window than everyone else?

Yes. Enable Per-User Return Window Extension in General Settings, then set Custom Return Window (Days) on that customer’s user profile. The value replaces the store window for their orders, up to 90 days. It only works for registered customers, because guest orders have no profile to attach it to.

Does a rejected return count towards the customer’s limit?

No. The per-customer limit counts requested, approved and completed returns inside the rolling window. Rejected and cancelled requests are left out, so a request your team turned down does not count against the customer. You can see what is being counted with the Check Customer Return Count tool in Fraud Prevention.

What happens after the return window closes?

The Return and Exchange buttons disappear from the order. If you enable the warranty workflow, customers see a Submit Warranty Claim button instead while the product is still under warranty. Warranty periods can be set per product and per category, unlike the return window.

Conclusion

A returns policy only works if the store enforces it the same way every time. Set the window with transit time in mind, pick the statuses that qualify, exclude what is final sale, make a deliberate choice about sale items, and cap repeat returns. Then check the result from the customer’s side, not the settings page. If you are still choosing a tool, our comparison of the best WooCommerce returns plugins sets out how the options differ.

Enforce your returns policy automatically.

Zorem Returns adds return windows, order and product eligibility rules, and per-customer return limits to your WooCommerce store.