# Consumer law

> How ShopAssist handles withdrawal, returns, complaints, price indications and marketing consent under EU consumer law.

Source: https://shopassist.coec.dk/docs/compliance/consumer-law · Updated 2026-10-01

You are responsible for what your assistant tells shoppers. ShopAssist enforces these rules in code, so a model mistake cannot override them.

## Right of withdrawal [#withdrawal]

* When a shopper wants to withdraw from a purchase ("change my mind", "fortryd", "Widerruf"), the reply always links your **withdrawal function** ("Withdraw from contract here") or offers a person.
* Set the link under **Orders & actions → Returns → Withdrawal URL**. Stores in the EU/EEA with cancellations or returns enabled and no withdrawal URL get the health warning `withdrawal_function_missing`.
* The chat does not replace the withdrawal function your shop must provide.

## No final refusals [#no-refusal]

The assistant never tells a shopper they "cannot" withdraw or have "no right". When a request is outside your policy, it quotes the policy, offers the withdrawal function and a handoff to your team.

## Withdrawal, returns and complaints are kept apart [#separation]

* **Withdrawal:** the statutory 14-day right; no reason needed.
* **Return policy:** your voluntary returns.
* **Defect complaints:** the legal guarantee (at least 2 years). A defect is never answered with "the return window has passed"; the assistant offers a person.

## Confirmations [#confirmations]

After a cancellation or return request, the shopper gets an email (a durable medium) with the order, items, status and the exact time of their confirmation. For withdrawals the email confirms when the statement was received. See [cancellations](/docs/orders-and-identity/cancellations) and [returns and withdrawal](/docs/orders-and-identity/returns-and-withdrawal).

## Prices [#prices]

* Prices and stock come only from your store data.
* "Was" prices and discounts are hidden by default. Showing compare-at prices requires the price-reference attestation; see [prices](/docs/guardrails/prices#attestation).
* Prices without VAT are marked "excl. VAT". Discount codes are never invented.

## Marketing [#marketing]

* Newsletter consent is never pre-ticked and is confirmed by double opt-in.
* Proactive messages are checked on save: texts like "Hurry, only 2 left!" are rejected.
* Decline buttons use neutral wording ("No thanks").
