Right of withdrawal

The Right of withdrawal feature lets a webshop consumer formally withdraw from the contract — the legally binding, no-reason cancellation guaranteed to consumers by EU law — directly from the customer portal, without contacting support and without logging in.

It is built on top of the standard eYssen RMA (Return Merchandise Authorization) system: the backend adds a dedicated, non-rejectable withdrawal declaration record, while the customer portal adds the public, two-step declaration flow and the durable-medium confirmation e-mail.

End-to-end flow (summary)

  1. Consumer opens the declaration from the order page or from the order e-mail link (Withdrawal on the portal).

  2. They choose product quantities (shipping lines are never offered), confirm, and receive a durable-medium confirmation e-mail.

  3. A withdrawal declaration is created in the backend already in Posted state under Sales ‣ Orders ‣ Withdrawals.

  4. When goods come back, the agent clicks Start Return / Refund → works a normal RMA (Post → accept lines → Done → validate receipt → credit note). See Handling withdrawals (backend).

Key principles

The withdrawal declaration is treated very differently from an ordinary return request:

  • Legally binding and irrevocable. A confirmed withdrawal can never be rejected — it is a unilateral consumer statement. The backend enforces this with database-level guards.

  • Immutable proof. At confirmation time the system stores a frozen snapshot of the declaration (consumer, products, quantities, exact timestamp) and sends a durable-medium confirmation e-mail.

  • No automatic logistics. A withdrawal never auto-generates a return picking or a refund. An RMA agent decides how to handle the physical return and the refund manually via Start Return / Refund (see Handling withdrawals (backend)).

  • Stays Posted. A confirmed declaration remains in Posted forever. That is normal — it is not stuck. The physical return and refund run on a separate ordinary RMA.

  • Goods only. Carrier shipping lines (is_delivery) cannot be withdrawn or returned as standalone items. Only product lines appear on the portal form.

  • B2C scope only. The feature is available only for genuine business-to-consumer webshop orders (see Withdrawal on the portal).

Withdrawal vs ordinary RMA (at a glance)

Topic

Withdrawal declaration

Ordinary RMA (return)

Menu

Sales ‣ Orders ‣ Withdrawals

Sales ‣ Orders ‣ RMAs

Who creates it

Consumer on the portal (or e-mail link)

Agent (or consumer Request Return)

State after creation

Always Posted (legal record)

Draft → Posted → Done

Can reject lines?

No

Yes (with reason)

Creates stock picking?

Never by itself

Yes, when marked Done

Agent next step

Start Return / Refund

Post → accept lines → Done

Scope and modules

The feature is delivered by two modules:

  • RMA (eyssen_rma) — the backend withdrawal declaration, configuration, the Withdrawals menu and the confirmation e-mail.

  • RMA - Website Portal (eyssen_rma_website_sale) — the public portal pages, the withdrawal button on the order page and the login-free link in the order-confirmation e-mail.