codingrow.com
Withdrawal Button

Handle EU Right of Withdrawal Requests Natively in Magento 2

A step-by-step native Magento 2 guide to collect, track and process EU right of withdrawal requests via RMA settings and return attributes.

Withdrawal Button — Handle EU Right of Withdrawal Requests Natively in Magento 2

Since 2023, EU merchants must let customers exercise their right of withdrawal within 14 days and confirm the request in writing, referencing Directive 2023/2673. Handling right of withdrawal Magento 2 requests without a dedicated flow usually means messy email threads and no audit trail — but Magento's native Return (RMA) tools can structure this process properly.

  • Enable and configure Magento's native RMA (Return Merchandise Authorization) module
  • Create a custom return attribute to capture the legal withdrawal reason
  • Set up automatic email confirmations that reference the 14-day deadline
  • Track, authorize and refund withdrawal requests from a single admin grid
Native RMA is available on Adobe Commerce (and Commerce Cloud). If you run Magento Open Source, skip to the alternative form-based workaround described near the end, or consider a dedicated storefront widget.

Step 1: Enable RMA on your store

StoresSettingsConfigurationSalesSalesRMA Settings
Yes
Yes
select your registered legal address

Save the section, then clear the cache. A My Returns tab will now appear in the customer account dashboard.

Set Enable RMA on Product Level to Yes so customers can request withdrawal per line item rather than for the whole order — required when only part of an order is returned.

Step 2: Create a "Right of Withdrawal" return attribute

StoresAttributesReturn Attributes
Attribute Code = `withdrawal_reason`
Dropdown

Add option values such as:

  • Right of Withdrawal (EU Directive 2023/2673)
  • Product Defective
  • Wrong Item Received

Assign the attribute to the default return attribute set so it appears on the storefront return form.

Without a dedicated withdrawal reason, you can't easily filter or report on legal cancellation requests separately from regular defect returns — add this attribute before going live.

Step 3: Configure return reasons, resolutions and conditions

StoresSettingsConfigurationSalesSalesRMA Settings (scroll to Return Reasons / Resolutions / Item Conditions)
add "Withdrawal within 14 days"
add "Full Refund" and "Refund minus return shipping"
keep default ("New", "Used", "Opened box")

These values populate the dropdowns customers see when they fill in the storefront return form.

Step 4: Set up automatic email confirmations

StoresSettingsConfigurationSalesSales Emails
choose or duplicate the default RMA template
keep default or customize

Edit the confirmation template under ContentDesignEmail Templates and add a short compliance note, for example: "Your withdrawal request has been received within the legal 14-day period as per EU Directive 2023/2673."

Include the order number, requested resolution and submission date/time inside the email body — this becomes your written proof of the withdrawal request.

Step 5: Test the storefront request flow

Customer accountMy ReturnsRequest a Return
choose a completed order
`Right of Withdrawal (EU Directive 2023/2673)`
`Full Refund`

Submit the form as a test customer and confirm the automatic email arrives with all the details captured.

Step 6: Process and refund the request

SalesReturns
change from `Pending` to `Authorized`
create a credit memo linked to the original order

Once authorized, generate the credit memo from the linked order and issue the refund through the original payment method.

EU rules generally require refunding within 14 days of receiving the returned goods (or proof of shipment) — use the Returns grid's creation date column to monitor this deadline per request.

Checklist

  • ☐ RMA enabled on storefront and product level
  • ☐ Custom withdrawal_reason attribute created and assigned
  • ☐ Return reasons and resolutions configured for legal withdrawal
  • ☐ Confirmation email references the 14-day legal period
  • ☐ Test request submitted and email verified
  • ☐ Refund credit memo issued within the legal deadline

Common mistakes

Problem: Customers can't find where to request a withdrawal.

Fix: Add a direct link to My Returns in your order confirmation email and account navigation menu.

Problem: No proof of the exact request date exists for a legal dispute.

Fix: Rely on the automatic RMA confirmation email timestamp instead of manual customer service replies.

Problem: Withdrawal requests get mixed with regular defect returns in reporting.

Fix: Filter the SalesReturns grid by the withdrawal_reason attribute value.

Problem: Refunds are issued late, breaching the legal window.

Fix: Set a recurring admin reminder or export the Returns grid weekly sorted by creation date.

FAQ

Is native RMA available on Magento Open Source?

No, the built-in Return (RMA) module is exclusive to Adobe Commerce. Open Source merchants typically rely on a Contact Us form, manual order comments, or a dedicated storefront widget to collect withdrawal requests.

Can I limit withdrawal requests to within 14 days automatically?

Magento's native RMA does not enforce a deadline by itself; you'll need to manually check the order date against the request date, or add custom validation via a developer.

Do I need a separate attribute for EU withdrawal versus normal returns?

Yes, it's strongly recommended. A dedicated reason value lets you report, prioritize and legally document withdrawal requests separately from defect-based returns.

Where do refunds appear after a withdrawal request is authorized?

Once you create a credit memo from the linked order in SalesReturns, the refund follows the standard Magento credit memo and payment gateway refund flow.

A faster alternative

If you're on Magento Open Source, don't need full RMA logistics, or simply want a compliant, ready-made public page for EU withdrawal requests without building attributes and email templates by hand, a dedicated widget can save significant setup time.

Withdrawal Button admin configuration in Magento
Withdrawal Button admin configuration in Magento

The Withdrawal Button extension adds a storefront page where customers submit their name, email, order number and desired delivery/return date, automatically referencing EU Directive 2023/2673 — no custom attributes or email template edits required.

The public withdrawal request page with EU Directive 2023/2673 compliance note
The public withdrawal request page with EU Directive 2023/2673 compliance note

It's a lightweight way to stay compliant while you evaluate whether full native RMA configuration is worth the extra setup for your store.

Questions & Answers

No questions yet — be the first to ask.

Ask a question

Public. Shown only after moderation. No spam.