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)

DraftPostedDone

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.