Contents
- Key plugin features
- Plugin menu and settings
- Global settings
- Request types: Refund, Reclamation, and Repair
- Request type settings
- Edit request form
- Request on the My Account page
- Request without logging in [PRO]
- Managing requests by the store administrator
- E-mails
- Public request form FAQ
- Free vs. PRO Feature Comparison
Key plugin features
Flexible Refund and Return Order for WooCommerce lets you manage customer requests directly in WooCommerce. Customers can submit requests from My Account → Orders. Customers who placed an order as a guest can also use a public form without logging in. The plugin supports three request types: Refund, Reclamation, and Repair.
- Support for Refund, Reclamation, and Repair requests.
- Separate settings, button labels, and forms for each request type.
- Request button visibility based on order status, user role, payment method, product, or product category PRO.
- ANY / ALL matching modes for product and product category conditions PRO.
- A time limit for submitting requests PRO.
- Public request forms for guest orders PRO.
- Automatically created public pages and configurable page assignment PRO.
- Guest access to request status through a link in an email PRO.
- Administrator notices about public page configuration and store navigation PRO.
- A history of multiple requests for the same order, with one active request at a time.
- Requested, Shipment, Verifying, Approved, Refused, and Canceled request statuses.
- Request information in the WooCommerce order list and order details.
- Email notifications for customers and the store administrator.
- Full order refunds and payment gateway refunds where supported by the gateway.
- Partial refunds for selected products and quantities PRO.
- Several shipping cost refund modes.
- Refund coupons and automatic refund approval PRO.
- Free vs. PRO feature comparison.
The plugin helps you collect customer information and manage refunds, complaints, and repair requests from the WooCommerce order.
Go to the Flexible Refund menu in the WordPress admin panel. The plugin adds the following menu items:
- Flexible Refund → Requests,
- Flexible Refund → Refund,
- Flexible Refund → Reclamation,
- Flexible Refund → Repair,
- Flexible Refund → Global settings.
The Refund, Reclamation, and Repair sections configure individual request types. Each section has two tabs:
- Settings - request availability, button label, public form shortcode, assigned public page, availability period, and policy page.
- Edit form - fields completed by the customer when submitting a request.
Global settings
Go to Flexible Refund → Global settings. These settings are shared by all request types and public request forms.
Search by visible order number - enable this option to use the order number displayed to the customer instead of the internal WooCommerce order ID in public request forms. This is useful when your store uses custom order numbering.
PRO Cancel unpaid order button - enable this option to display the Cancel action in My Account → Orders for orders with the Pending payment or On hold status.
When the customer cancels an eligible order, its status changes to Cancelled. This action cancels the order itself; it is separate from canceling a refund, reclamation, or repair request.

Request types: Refund, Reclamation, and Repair
The plugin supports three request types. Each type has its own form and settings.
Refund - use this type when the customer wants to return products and receive a refund. Only Refund requests support the refund method, automatic approval, coupons, and shipping cost refunds.
PRO Reclamation - use this type when the customer reports a product defect or an order issue. Reclamation requests use their own form, request statuses, and email notifications. Approving a Reclamation request does not process a monetary refund.
PRO Repair - use this type when the customer wants to submit a product for repair. Repair requests use their own form, request statuses, and email notifications. Approving a Repair request does not process a monetary refund.
In the free version, only the Refund request type is available for use. Reclamation and Repair forms can be configured and enabled in PRO.

Request type settings
Go to Flexible Refund → Refund, Flexible Refund → Reclamation, or Flexible Refund → Repair, and open the Settings tab.
Enable form - select Show this request type to eligible customers to make the request type available. Customers must also meet its availability conditions.
Button label - enter the button text displayed in My Account → Orders. You can use your own text or keep the default label: Refund, Reclamation, or Repair.
Public form shortcode [PRO]
Public form shortcode - displays the shortcode for the selected request type. Click Copy shortcode to copy it.
[flexible_refund_public]- public refund form.[flexible_reclamation_public]- public reclamation form.[flexible_repair_public]- public repair form.
Read more about public request forms.
Public page assignment [PRO]
Starting with PRO 2.1.0, each request type has a public page selection field:
- Select the page with the refund shortcode - for Refund requests.
- Select the page with the reclamation shortcode - for Reclamation requests.
- Select the page with the repair shortcode - for Repair requests.
Select a published page containing the correct shortcode. The page must not be password-protected. Selecting a page does not insert the shortcode into its content.
If you use your own page, add the shortcode in the page editor, publish the page, select it in the request type settings, and save your changes. Use Open public request page to open the page from the settings.
Button visibility - configure the conditions that must be met before the request button is displayed.
Available condition types:
- User roles,
- Order statuses,
- Payment methods,
- Products,
- Product categories.
Two operators are available: is and is not. Multiple condition rows are combined with and.
For Products and Product categories, you can also select ANY or ALL. ANY checks for a match with at least one selected value. ALL checks for a match with every selected value. The selected operator determines whether that match permits or excludes the request.
For example, combine an Order statuses condition with a Payment methods condition to display the request button for Processing orders paid by bank transfer.

Refund type
Refund type is available only for Refund requests. The options in the current settings screen are Bank account / cash and Coupon.
Bank account / cash - approving the request creates a WooCommerce refund. A payment gateway refund is attempted when the gateway used for the order supports refunds in WooCommerce. If the gateway does not support refunds, arrange the payment separately, for example by bank transfer. Recording a WooCommerce refund does not itself guarantee that money has been transferred.
PRO Coupon - approving the request also generates a coupon with a value equal to the refund amount. The generated coupon has a usage limit of one. You can include its code in an email.

{coupon_code} placeholder to include the generated coupon code in an email template.Automatic approval [PRO]
Automatic approval is available only for Refund requests. Enable it to approve requests automatically after submission.
Automatic approval starts the WooCommerce refund process without an administrator reviewing each request. Check the refund method, shipping refund settings, and availability conditions before enabling this option.
Shipping refund
Shipping refund is available only for Refund requests. It determines whether and how shipping costs are included.
- Do not refund - shipping costs are not included in the request.
- Leave the decision to the customer - the customer selects whether to include shipping. The original shipping cost is used for partial and full returns.
- Always refund the original shipping cost - shipping is included automatically when products are selected for return. The original shipping cost is used for partial and full returns.
- Refund the lowest shipping cost for partial returns - shipping is included automatically. For a partial return, the plugin uses the configured lowest shipping cost, capped at the shipping cost in the order. When all remaining products are returned, it uses the original shipping cost.

Cheapest shipping cost in the store - enter the amount to use for partial returns when Refund the lowest shipping cost for partial returns is selected. The plugin uses the amount entered here; it does not automatically find the cheapest shipping method in the store.

Availability period [PRO]
Availability period - limit how long customers can start a request after the order was placed. You can choose hours, days, weeks, months, or years.
The period is calculated from the order creation date. It also applies when a customer tries to submit a request through a public form.
Policy page
Policy page - select the page explaining the rules for the selected request type. Each type can have its own policy page.
Use the {refund_info_page} placeholder to include the link in an email. This setting does not select the page containing the public request form.

Edit request form
Each request type has its own form. Go to Flexible Refund → Refund, Flexible Refund → Reclamation, or Flexible Refund → Repair, and open Edit form.

Available field types:
- Text - a short text field.
- Textarea - a longer text field.
- Checkbox - checkbox options.
- Radio - a single-choice option group.
- Select - a dropdown list.
- PRO Multi Select - a list allowing multiple selections.
- PRO Upload - a file upload field with a configurable file limit.
- PRO HTML - custom HTML content.
To add a field, select its Field type, enter a Label and Name, and click Add field. Configure the field and save your changes.
Form field settings
The field editor contains the General, Advanced, and Appearance sections. Available settings depend on the field type.
General:

Label - the field label displayed to the customer.
Name - the technical field name. It cannot be changed after the field has been added.
Enable - uncheck this option to hide the field.
Required - check this option to require an answer.
Options - add the values available in Checkbox, Radio, Select, and Multi Select fields.
Advanced:

Description - additional information displayed with the field.
Min length - the minimum number of characters for Text and Textarea fields.
Max length - the maximum number of characters for Text and Textarea fields.
Files Limit - the number of files allowed in an Upload field.
Appearance:

Placeholder - helper text displayed in an empty field.
CSS class - a custom CSS class for the field.
Change the field order by dragging and dropping fields. Save your changes when you finish editing.

Request on the My Account page
On My Account → Orders, customers see buttons for the request types available for their orders. The default labels are Refund, Reclamation, and Repair. You can change them with Button label.
After clicking a button, the customer selects products and completes the configured form fields.
For Refund requests, the free version submits all available product quantities. In PRO, customers can select individual products and quantities for a partial refund.
Shipping costs follow the Shipping refund setting. Depending on the selected mode, the customer chooses shipping manually or the plugin includes it automatically.
Reclamation and Repair requests collect product selections and answers, but approving them does not process a monetary refund.
Submitting a request creates a record with the Requested status. Request status is separate from the WooCommerce order status. The customer can view the active request in the order details. A Refund request with Automatic approval enabled may be approved immediately.
Canceling a request
In My Account, the customer can click Cancel Request when the request status is Requested or Verifying. The button is not displayed for Shipment or completed requests.
After cancellation, the request status changes to Canceled, and the plugin restores the saved previous order status. The canceled request remains in the request history.
Request without logging in [PRO]
Public forms let customers submit Refund, Reclamation, or Repair requests for orders placed as a guest. The customer enters the order reference and the billing email address used for that order.
Automatically created public pages
Starting with PRO 2.1.0, the plugin initializes public pages for the three request types. It looks for existing pages containing the matching shortcode. If a suitable page is found, it can be assigned to the request type. Otherwise, the plugin creates a page containing the correct shortcode.
- New pages for enabled request types are published.
- New pages for disabled request types are saved as drafts.
- When a request type is enabled for the first time, the plugin can publish its assigned draft if the plugin originally created that page.
Check the pages under Pages in WordPress and in the settings for each request type. Publish custom pages yourself. Disabling a form prevents new submissions of that type; it does not automatically delete the page.
Using your own public page
You can keep the automatically created page or use your own page.
[flexible_refund_public]- Refund.[flexible_reclamation_public]- Reclamation.[flexible_repair_public]- Repair.
- Create or edit a WordPress page.
- Add the shortcode for the selected request type.
- Publish the page without password protection.
- Open the relevant request type under Flexible Refund.
- In Settings, select the page in Select the page with the refund shortcode, Select the page with the reclamation shortcode, or Select the page with the repair shortcode.
- Enable the form if necessary and save your changes.
- Add the page to the store navigation.
What the customer sees
The public page separates the customer journey into I do not have an account in the store and I have an account in the store.
For a guest order, the customer enters:
- Order ID or Order number, depending on Search by visible order number.
- Email address used in the order billing details.
The customer then clicks View refund form, View reclamation form, or View repair form.
Customers with an account can use Log in. If a customer enters the details of an account-linked order in the guest section, the plugin also directs them to login.
Public submissions respect the form's availability conditions, availability period, and the restriction of one active request per order.
The plugin displays a reminder when an enabled request type has a public page that is not found in the store navigation. Follow the notice link to add the page to a menu.
The request settings also provide Menu settings →. For block themes, the navigation link opens the Site Editor navigation screen.
If the selected public page is missing or unsuitable, the plugin displays a warning asking you to select a published page containing the correct shortcode.
Viewing request status from an email
In PRO 2.1.0, the {refund_url} placeholder generates a link to the relevant request. For guest orders, the link contains an access key so the customer can check the request status without logging in or entering the order details again.
The guest status view displays Order ID and Request status. It does not display the full form, submitted answers, or a cancellation button.
The link identifies a specific request. Customers should use the email corresponding to the request they want to check.
For account-linked orders, the customer must log in as the order owner and view the request in My Account.
Managing requests by the store administrator
Open Flexible Refund → Requests or use the request status filter in the WooCommerce order list.
The order edit screen contains the Customer requests metabox. Within it, the request panel is headed Flexible Refunds - Requests, followed by the number of requests.
The administrator can select a request and review:
- Request ID and request type.
- Submission date.
- Requested products and quantities.
- Customer answers, including uploaded file links where applicable.
- Request status.
- Request note.
- Available status changes for an active request.
Request statuses
- Requested - submitted and waiting for processing.
- Shipment - the store is waiting for the customer's shipment.
- Verifying - the request is being reviewed.
- Approved - the request has been approved.
- Refused - the request has been refused.
- Canceled - the request has been canceled.
To update an active request, enter a note if needed, select the status, and click Update. The plugin saves the status, adds an order note, and sends the related email notification.
Approved, Refused, and Canceled are completed statuses. A completed request cannot change status through the standard request workflow. A new case should be submitted as a new request if the availability conditions allow it.
Approving a Refund request
For Refund requests, selecting Approved starts the WooCommerce refund process. Product refund amounts use the selected quantities and the order's tax data.
If shipping is included, it appears with the requested products. The amount follows the selected Shipping refund mode. In the lowest-cost mode, partial returns use the configured amount. Returning all remaining products uses the original shipping cost where it has not already been refunded.
The plugin asks WooCommerce to restock refunded product quantities.
When the entire order amount has been refunded, the order status changes to Refunded. For a partial refund, the saved previous order status is restored if no other active request remains.
Approving a Reclamation or Repair request completes that request without processing a monetary refund.
Request history and saved form settings
An order can have multiple requests in its history, but only one can be active at a time. The plugin adds a Request status column to the WooCommerce order list so the administrator can check the latest request status without opening the order.
Each request stores a snapshot of the form and its settings at submission time. Editing the current form does not overwrite that snapshot in an existing request.
When upgrading from older versions, the plugin migrates legacy refund settings and requests. Legacy requests are processed in background batches, so they do not need to be recreated manually.
E-mails
Go to WooCommerce → Settings → Emails to manage the plugin's email notifications.
PRO Recipient(s) - edit or add recipient addresses for the administrator's new request notification.

Click Manage to configure an email.

Enable/Disable - enable or disable the notification.
Subject - keep the default subject or enter your own. Use placeholders supported by the email, such as {shop_title} and {order_number}.
Email heading - keep the default heading or enter your own. Placeholder names must match those supported by the plugin.
Additional content - edit the message content. Available placeholders:
{shop_title}, {shop_address}, {shop_url}, {shop_email}, {refund_url}, {refund_note}, {refund_order_table}, {customer_name}, {order_id}, {order_date}, {order_number}, {order_payment_method}, {coupon_code}, {admin_order_url}, {admin_refunds_url}, {refund_info_page}, {refund_request_date}, {request_id}, {request_type}, {request_type_label}, {request_label}, {refund_specific_content}.
Request-related placeholders:
{request_id}- request ID.{request_type}- technical request type identifier: refund, reclamation, or repair.{request_type_label}- translated request type name.{request_label}- the button label saved with the submitted form.{refund_request_date}- request submission date and time.{refund_note}- the note saved for the request.{refund_order_table}- the request product table.{refund_info_page}- a link to the policy page saved for the request.{refund_url}- a link to the request.{coupon_code}- generated coupon code.
To add a request link in an HTML email, use:
<a href="{refund_url}">View your request status</a>
For guest orders in PRO, this link includes the access key for the public status view. For account-linked orders, it directs the customer through login and My Account.
Email Type - choose plain text, HTML, or multipart.
The current email titles are:
- [Flexible Refund] Request Submitted - sent to the customer after submission.
- [Flexible Refund] New Request Notification - sent to the administrator after submission.
- [Flexible Refund] Request Awaiting Shipment - sent when the status changes to Shipment.
- [Flexible Refund] Request Being Verified - sent when the status changes to Verifying.
- [Flexible Refund] Request Approved - sent when the request is approved.
- [Flexible Refund] Request Refused - sent when the request is refused.
Public request form FAQ
Why does the form ask the customer to log in?
The order is linked to a customer account. The customer must log in as the order owner. Submission without login is available for guest orders.
Why can the form not find the order?
Check the billing email address and the order reference. When Search by visible order number is disabled, use the internal WooCommerce Order ID. When enabled, use the order number displayed to the customer.
What should the customer do if the form has expired?
Refresh the page and try again. The form uses a verification token that can expire.
What does “Too many attempts” mean?
The lookup is limited to 10 attempts from one IP address. When the limit is reached, the plugin asks the customer to try again in ten minutes.
- Check that the request type is enabled.
- Check its assigned public page.
- Ensure that the page is published, is not password-protected, and contains the correct shortcode.
- Check the visibility conditions and availability period.
- Check whether the order already has an active request.
If public page initialization fails, the plugin displays an administrator notice and retries automatically. If a page is deleted after initialization, create a replacement page with the appropriate shortcode and assign it in the request settings.
Can a guest cancel a request from an email link?
The public link displays request status and does not include a cancellation button. The customer should contact the store to request cancellation. In My Account, Cancel Request is displayed for Requested and Verifying requests.
Free vs. PRO Feature Comparison
The table compares the free and PRO features available in the plugin.






