
From June 2026, online stores operating in the EU will need to provide consumers with a clear and easily accessible way to withdraw from contracts concluded online.
This requirement is part of Directive (EU) 2023/2673, which updates consumer rights rules and introduces the obligation to provide a digital contract withdrawal function, often described as a “withdrawal button”.
For merchants, this means that the right of withdrawal should not only be described in terms and conditions. It also needs to be available as a clear process in the store interface.
To support this change, we adapted Contract Withdrawal as part of the Return Management module in Sylius Plus. It extends the existing return management capabilities with a dedicated contract withdrawal flow. The module provides more than the required withdrawal function. It delivers a complete flow across the storefront and the admin panel: customers can submit a withdrawal request directly in the shop, and store teams can manage it from the existing return requests view.
This dedicated flow works alongside the standard returns process and helps merchants prepare for the new requirement without building the functionality from scratch.
Contract Withdrawal allows customers to withdraw from a purchase directly from the storefront. They can do it for the whole order or only for selected items.
Within Return Management, contract withdrawal is handled as a dedicated flow, separate from the standard RMA process. This matters because contract withdrawal is not just a regular return request. It is a formal declaration that the customer wants to exercise their statutory right of withdrawal.
The customer does not need to provide a reason. They do not need to contact customer support. They also do not need to wait for manual approval.
When the order is eligible, the customer follows a simple two-step process:
After confirmation, the store sends an email with the selected items and timestamp. This gives the customer proof that the declaration has been received.
For logged-in customers, the withdrawal option is available directly on the order page.
If the order still qualifies, the customer sees a “Withdraw from contract here” button. This creates a clear entry point for the withdrawal process without requiring the customer to search through support pages or terms and conditions.

Caption: Logged-in customers can start the withdrawal process directly from the order page.
After opening the withdrawal flow, the customer selects the items they want to include in the declaration. They can choose all eligible items or only selected ones.
No reason is required. The form does not ask for additional explanations or return categories. The goal is to keep the process clear and aligned with the nature of contract withdrawal.

Caption: The customer selects the items they want to withdraw from.
This makes the final action intentional and separate from item selection. The customer can check the selected items before submitting the declaration.

Caption: The declaration is reviewed and confirmed in a separate step.
Once confirmed, the store immediately sends an email confirmation. The email includes the selected items and the submission time, so the customer has proof that the declaration has been received.
The module also supports guest orders.
A permanent “Withdraw from contract” link can be added to the shop footer. A guest customer enters the order number and the email address used during checkout. Then they receive a secure one-time link that opens the same withdrawal form.

Caption: Guest customers can start the withdrawal process from a footer link. After entering the order number and checkout email address, they receive a secure one-time link to the withdrawal form.
The response is the same whether the data matches an order or not. This helps protect customer privacy and prevents the form from being used to check whether a specific order exists in the system.
The module can be configured in the standard Sylius admin panel.
Merchants can enable contract withdrawal per sales channel and define the withdrawal period counted from delivery. The default period is 14 days.

Caption: Merchants can enable contract withdrawal per sales channel and define the withdrawal period counted from delivery.
This channel-level configuration is useful for multi-market stores. Different sales channels can follow different operational setups where needed.
Merchants can also exclude specific product variants from withdrawal eligibility. This is useful for products that usually do not qualify, such as personalized items, perishable goods, sealed hygiene products, or selected digital content.
The withdrawal window is based on the delivery date, so this information needs to be recorded in the system. It can be added by store staff or provided through a carrier integration.
Withdrawal requests appear in the admin panel together with return requests, but they are marked with a separate type.
This allows the operations team to work in a familiar place while still distinguishing contract withdrawals from standard returns.

Caption: Withdrawal requests appear alongside return requests, but they are marked with a separate type.
A valid withdrawal is accepted automatically. This gives the customer clarity and keeps the process aligned with the legal requirement.
At the same time, the refund remains under the store’s control. Nothing is paid out automatically when the declaration is submitted. The store can issue the refund after receiving the goods back or according to its internal process and legal obligations.
The Contract Withdrawal module helps with compliance, but its value is also operational.
It reduces the need for manual support. Customers get a self-service path instead of contacting the store for instructions.
It creates a structured record of each withdrawal, including the selected items and submission time.
It supports multi-market operations through channel-level configuration.
It gives merchants control over eligibility rules, withdrawal periods, delivery dates, and refund handling.
It also improves the customer experience. A visible button, a short process, and email confirmation make the withdrawal flow easier to understand and easier to complete.
The new EU rules require more than updated legal copy. They also affect the storefront experience and the processes behind it.
The Contract Withdrawal module in Sylius Plus provides a dedicated flow for this requirement. It covers the withdrawal entry point, two-step declaration, logged-in and guest customers, channel configuration, product exclusions, and email confirmation on a durable medium.
For merchants, this means less custom development and a clearer implementation path. For customers, it means a straightforward way to exercise their right of withdrawal directly in the store.
From June 2026, online stores operating in the EU must provide consumers with a clear and easily accessible digital way to withdraw from contracts concluded online. This requirement is part of Directive (EU) 2023/2673 and is often referred to as the “withdrawal button” requirement.
For merchants, this means the right of withdrawal should not only be described in terms and conditions. It should also be available as a visible and simple process in the storefront.
Sylius Plus supports this requirement through Contract Withdrawal, part of the Return Management module.
It provides a dedicated withdrawal flow in the storefront and admin panel. Customers can submit a withdrawal request directly in the shop, while store teams can manage it from the existing return requests view. This helps merchants prepare for the new requirement without building the functionality from scratch.
Eligible customers can withdraw from the whole order or only from selected items.
For logged-in customers, the withdrawal option is available directly on the order page. The process has two steps: item selection and declaration confirmation. After submission, the customer receives an email confirmation with the selected items and submission time.
Guest customers can also use the flow through a “Withdraw from contract” link, where they enter their order number and checkout email address to receive a secure one-time access link.
Yes. Merchants can configure Contract Withdrawal in the Sylius admin panel.
They can enable it per sales channel, define the withdrawal period counted from delivery, and exclude selected product variants from eligibility. This is useful for multi-market stores and for products that may not qualify for withdrawal, such as personalized goods, perishable products, sealed hygiene items, or selected digital content.
Contract Withdrawal helps merchants meet the new EU requirement while improving post-purchase operations.
It gives customers a self-service withdrawal path, reduces manual support work, creates a structured record of each declaration, and keeps refund handling under the store’s control. It also improves the customer experience by making the withdrawal process clear, accessible, and confirmed by email.