EU Withdrawal Returns

EU Right of Withdrawal

ReturnZap includes a dedicated withdrawal workflow that makes your return portal compliant with the EU Consumer Rights Directive. It runs alongside your standard returns process — your existing returns are unaffected — and gives EU shoppers a low-friction way to exercise their statutory right of withdrawal.

This article explains what the feature does, how to turn it on, and how withdrawals appear in your ReturnZap admin.

What is the right of withdrawal?

Under the EU Consumer Rights Directive, consumers can withdraw from a purchase contract within a set period, with minimal friction and without giving a reason. To stay compliant, the withdrawal flow is intentionally different from a normal return: no account login is required, no return reason is requested, and the number of steps is kept to a minimum.

When you enable withdrawal support, ReturnZap creates a parallel withdrawal process that sits next to your standard return portal. You get a separate embed link you can place anywhere on your storefront — for example, a "Withdraw from your contract here" link in your footer, in your own local language. Customers who use that link enter withdrawal mode; everyone else continues to use your normal returns portal exactly as before.

How withdrawal mode is different from a standard return

In withdrawal mode, ReturnZap automatically removes friction and disables steps that don't apply to a statutory withdrawal:

  • No login or authentication — lookup is by order number and email only (postal-code lookup is disabled in withdrawal mode, even if it's enabled for your standard portal).
  • No return reasons are requested.
  • Exchange and store credit are disabled — a refund is the only outcome.
  • Upsell and incentive prompts are suppressed.
  • The final button reads "Confirm withdrawal," and the success page shows "Withdrawal confirmed" with the line "A confirmation email is on its way."

The two withdrawal flows

Withdrawal mode automatically chooses one of two flows based on whether the order has shipped. ReturnZap re-checks the fulfillment status at the moment the customer confirms, so the correct flow is always used.

Pre-fulfillment withdrawal (order has not shipped)

When the entire order is still unfulfilled, the customer withdraws from the whole order in one click. There is no line-item selection, no shipping step, no label, and no fee shown.

On confirmation, ReturnZap:

  1. Creates a withdrawal record marked "Pre-fulfillment withdrawal."
  2. Sends the legally required pre-fulfillment confirmation email.
  3. Automatically cancels the full order in Shopify — restocking the items, refunding to the original payment method, recording the cancellation as customer-initiated with a ReturnZap EU-withdrawal note, and suppressing Shopify's own cancellation email so only the ReturnZap confirmation is sent.

Note: In this first version, a pre-fulfillment withdrawal always cancels the entire order. Cancelling individual line items before fulfillment is not yet supported. Individual item selection is supported after fulfillment (see below).

If the Shopify cancellation can't be completed (for example, the order can no longer be cancelled), the withdrawal still stands as a valid legal declaration. The record's cancellation state changes to "Manual action required" and the Shopify failure reason is shown in your admin so you can resolve it manually.

Post-fulfillment withdrawal (order has shipped)

When at least one item has shipped, the withdrawal is handled much like a standard return, using your existing return flow but in withdrawal mode. The customer can:

  • Select one or more items (and quantities) to withdraw.
  • See which fees apply.
  • Choose a return shipping method, if return shipping is required.
  • Confirm the withdrawal in one click.

No return reasons are requested. The withdrawal declaration is effective on submission without requiring your approval, while the physical return still proceeds through your normal workflow — so you can mark it received, review it, and process it as you would any return. The post-fulfillment confirmation email is sent automatically.

Mixed orders: If an order has some items shipped and some not, it routes to the post-fulfillment flow. ReturnZap does not automatically cancel the unfulfilled portion in this version — you handle that part operationally.

How to enable withdrawal support

Withdrawal support is off by default and is enabled per shop.

  1. Go to ReturnZap → Settings → Portal.
  2. Under EU right of withdrawal, turn on "Enable EU right of withdrawal."
  3. Copy the withdrawal embed snippet shown on that page and place it on your storefront wherever you want the withdrawal entry point to appear (for example, your footer).

The withdrawal snippet is the same as your standard portal embed, with a withdrawal   attribute added:

<script src="https://portal.returnzap.com/app.js" async></script>
<return-zap shop-id="YOUR-SHOP-ID" withdrawal></return-zap>

Your standard portal embed (without the withdrawal   attribute) continues to work exactly as before. The two can coexist on the same storefront.

Important: Enable withdrawal through the Portal settings page rather than any other method. Turning it on here is what provisions your two withdrawal confirmation email templates. If the withdrawal embed is placed on a store where withdrawal support isn't enabled, it shows "Withdrawal is not available for this store. Please contact the merchant." — it never silently falls back to standard return mode.

Confirmation emails

Every confirmed withdrawal sends exactly one confirmation email, which serves as the durable, legally required acknowledgment of the withdrawal under the EU Consumer Rights Directive. Two separate templates are provisioned when you enable the feature, and both are editable in your notification settings (visible only while withdrawal support is enabled):

  • Pre-fulfillment template — confirms the entire order is withdrawn, references the cancellation and refund to the original payment method, and notes that no return shipment is required.
  • Post-fulfillment template — includes a line-item breakdown of the withdrawn items, the return shipping address, the 14-day return deadline, cost-liability and withhold-refund-until-receipt statements, and return label/instructions per your configuration.

Both templates include the EU Consumer Rights Directive acknowledgment naming your store, the receipt timestamp in your store's time zone, the original order reference, the customer's name and lookup email, the 14-day refund statement, and your contact information. They are available in English, German, French, and Spanish.

Withdrawals in your ReturnZap admin

Withdrawals appear in the same Returns list as standard returns, clearly distinguished so your support team never treats a statutory withdrawal as a discretionary return:

  • Returns list: withdrawal records show a "Withdrawal" tag.
  • Return detail page: shows a prominent "Withdrawal" identifier and the subtype (Pre-fulfillment or Post-fulfillment).
  • Pre-fulfillment records also show the cancellation state — Cancellation pending, Cancellation completed, or Manual action required — and, when a cancellation fails, the Shopify failure reason so you can act on it.

A completed pre-fulfillment withdrawal shows that ReturnZap has automatically cancelled the order and returned the items to your inventory. A post-fulfillment withdrawal behaves like a standard return that you receive, review, and process.

Scoping withdrawals with rules

The withdrawal flow uses your existing ReturnZap rules engine, with a new request type condition so you can scope a rule to standard returns, withdrawals, or both. A rule with no request-type condition applies to everything, exactly as today.

In withdrawal mode, only legally compatible rule behaviors take effect:

  • Deny an item with a message — for example, to exclude customized or exempt products from withdrawal. This blocks the item in withdrawal mode without affecting standard returns.
  • Waive the shipping fee.

Other rule behaviors — requiring approval, reason, photo, comment, or custom questions; routing to exchange or store credit; restocking fees; and upsell — have no effect in withdrawal mode.

The request-type condition appears in the rule builder only while withdrawal support is enabled, but existing rules that use it continue to evaluate correctly even if you later disable the feature.

Fees

ReturnZap does not charge shipping, label, or restocking fees for pre-fulfillment withdrawals, and does not charge restocking fees for post-fulfillment withdrawals. Post-fulfillment return shipping fees are not waived by default — if you want to cover return shipping, set up a withdrawal-scoped rule to waive the fee.

Turning withdrawal support off

If you disable withdrawal support, any withdrawals already in progress remain valid and continue through their workflow, and existing rules that reference the withdrawal request type keep working. New withdrawal submissions are no longer accepted, and the withdrawal configuration controls (email templates, the rule condition, the embed entry point) are hidden — but the withdrawal indicators on existing records stay visible so your team can still identify and handle active withdrawals.

Summary

Enabling EU withdrawal support gives any store selling into the EU a compliant, low-friction withdrawal process that runs in parallel with standard returns: a dedicated embed link, automatic order cancellation before fulfillment, a return-style flow after fulfillment, legally required confirmation emails in four languages, and clear withdrawal labeling throughout your admin.

Still need help? Contact Us Contact Us