---
title: "Withdrawal button 2026: requirement, implementation and Shopware 6 guide"
description: "When the withdrawal button is mandatory, what section 356a BGB requires and how to implement it properly in Shopware 6, natively or with a plugin."
canonical_url: "https://nuonic.de/en/insights/withdrawal-button-shopware-6"
---

Since 19 June 2026, online shops concluding distance contracts with consumers
that carry a statutory right of withdrawal must provide an electronic
withdrawal function – the *withdrawal button* – under [section 356a
BGB](https://www.gesetze-im-internet.de/bgb/__356a.html): a clearly labelled
button, a separate confirmation step and an immediate acknowledgement of
receipt. Shopware 6 includes the function natively from version 6.7.9.0,
backported to the 6.6 line.

The new duty is often misunderstood in both directions. It does not apply to
every website or a genuinely B2B-only shop, but it is not a concern reserved
for large merchants either. The decisive question is whether a business
concludes online contracts with consumers for which a statutory right of
withdrawal exists. This article explains the requirement and the practical
path for Shopware 6. For the wider regulatory roadmap, see our [e-commerce
deadlines for 2026/27](/en/insights/e-commerce-deadlines-2026-27).

> This article provides technical and practical guidance, not legal advice.
> Special cases – including digital content, services, marketplaces,
> international shops and mixed B2B/B2C models – should be assessed for the
> individual business model and applicable law.

## What is a withdrawal button, and what is it for?

The withdrawal button is not a way to register a return or cancel an order in
an ERP. It is the prescribed digital route for submitting a **declaration of
withdrawal**. By using it, the customer states that they want to withdraw from
their contract within the withdrawal period.

The rule closes the gap between concluding a contract online and withdrawing
from it. A customer who can enter into a contract through a shop interface
should also be able to submit their withdrawal there, without hunting for
contact details or a PDF form. The model withdrawal form, email and post remain
valid channels. The electronic function is an additional required channel.

For merchants, the distinction matters:

- **Withdrawal** is a consumer right with statutory time limits and legal
consequences.
- **Return** is the physical shipment of goods back to the merchant. It may
follow a withdrawal, but it is not the declaration itself.
- **Goodwill return** is a voluntary, contractually broader service. It does
not replace the legally required withdrawal function.

The German legal basis is [section 356a of the Civil Code
(BGB)](https://www.gesetze-im-internet.de/bgb/__356a.html). It requires both a
withdrawal function and a subsequent confirmation function, followed by an
immediate acknowledgement of receipt on a durable medium.

## When does a shop need a withdrawal button?

As a practical rule, the button is needed where a business concludes a
**distance contract through an online user interface** with a consumer and
that contract carries a statutory right of withdrawal. This includes classic
B2C goods shops, but also many online service, digital-content and subscription
contracts. The rule has applied since 19 June 2026 under the [German act
implementing the consumer-rights
reform](https://eur-lex.europa.eu/legal-content/DE/TXT/PDF/?uri=CELEX%3A72024L0825DEU_202602019),
which implements [Directive (EU) 2023/2673](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32023L2673).

That does not mean every product has a right of withdrawal. Section 312g BGB
contains exceptions, for example for certain sealed goods once opened,
made-to-order goods and digital content after the legally required consents.
The position needs to be assessed properly for the assortment and process. A
shop with a few exempt products should not switch the function off too quickly:
it will often also offer other contracts that remain eligible.

<table>
<thead>
  <tr>
    <th>
      Shop model
    </th>
    
    <th>
      Withdrawal button?
    </th>
    
    <th>
      Why
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      B2C goods shop
    </td>
    
    <td>
      usually yes
    </td>
    
    <td>
      Online distance selling with a statutory withdrawal right
    </td>
  </tr>
  
  <tr>
    <td>
      B2C subscription, course or digital service
    </td>
    
    <td>
      often yes
    </td>
    
    <td>
      The rule is not limited to goods
    </td>
  </tr>
  
  <tr>
    <td>
      Genuine B2B-only shop
    </td>
    
    <td>
      no
    </td>
    
    <td>
      No contract with a consumer
    </td>
  </tr>
  
  <tr>
    <td>
      Information or corporate website
    </td>
    
    <td>
      no
    </td>
    
    <td>
      No contract is concluded online
    </td>
  </tr>
  
  <tr>
    <td>
      Shop selling only contracts with valid withdrawal exclusions
    </td>
    
    <td>
      obtain advice
    </td>
    
    <td>
      Exceptions depend on product and contract
    </td>
  </tr>
</tbody>
</table>

## How does the law require the process to work?

Section 356a BGB requires three steps: a clearly labelled withdrawal function
that stays available throughout the withdrawal period, a separate confirmation
function after only the necessary details have been requested, and an
immediate acknowledgement of receipt on a durable medium. A link to the
withdrawal policy alone is not enough – the workflow is short but fully
prescribed.

### 1. A clearly labelled withdrawal function that is always available

The function must be clearly legible and labelled **“Withdraw from contract”**
or another unambiguous equivalent. During the withdrawal period, it must be
constantly available, prominently placed and easy to access. Labels such as
“return”, “send back” or “cancel” are not safe substitutes because they do not
unambiguously express withdrawal.

The law does not set a specific pixel position. What matters is actual
discoverability in the shop – including on mobile, for guest orders and where
account access is restricted. A hidden text link among many footer links or a
mandatory login creates needless risk.

### 2. Request only necessary information, then ask for a separate confirmation

After the click, the shop may request information needed to identify the
consumer and the contract concerned. This typically includes a name, order or
contract number and an electronic channel for the acknowledgement. The
customer may enter those details or confirm information already held.

The declaration must then be sent through a separate, clearly labelled
confirmation function – for example, **“Confirm withdrawal”**. The process
must not be blocked by unnecessary mandatory fields: a reason for withdrawal,
a return method or an account password do not belong in the required path.

### 3. Send an immediate acknowledgement that can be retained as evidence

Once the confirmation function has been activated, the merchant must promptly
send an acknowledgement on a durable medium, usually by email. It must at least
contain the declaration's content and the date and time it was received. Only
then is the statutory online process complete.

This is more than a UX concern. A withdrawal submitted through the function
before the deadline is deemed to have been received in time. Deliverability,
logging and a reliable internal handling route are therefore part of the
feature.

## Do I need the button if I offer free returns and goodwill at any time?

Yes, where the conditions above are met. A free returns policy is customer
friendly, but it does not change the legal obligation to provide the electronic
withdrawal function. It also answers a different question: what happens to the
goods? Withdrawal answers how the customer declares, on time, that they want to
end the contract.

A returns portal can complement the workflow by creating labels, tracking a
shipment and handling refunds. It does not automatically replace the
withdrawal button. It would need to meet every part of the statutory process:
an unambiguous declaration, the necessary identification, a separate
confirmation and an immediate acknowledgement. Do not infer this from a
portal's name; test and assess the actual workflow.

## B2B, large merchants and ordinary websites: who is exempt?

Only businesses without withdrawable online consumer contracts are exempt:
genuinely B2B-only shops and websites where no contract is concluded online.
There is no exemption based on size, turnover or small-business status – a
one-person shop selling B2C at a distance is just as affected. Mixed B2B/B2C
shops need the function for their consumer business.

### Genuinely B2B-only shops do not need a withdrawal button

The provision protects consumers. A shop that demonstrably sells exclusively
to businesses is outside its scope. “Exclusively” matters: B2B pricing, a VAT
ID field or an indication in the terms alone do not automatically turn a freely
accessible shop into a B2B-only shop. If consumers can in fact order, the B2C
position should be checked.

A [mixed B2B/B2C shop](/en/shopware-agency/b2b) needs the function for its
consumer business. Whether it is shown only in selected sales channels or to
selected customer groups is a technical configuration based on a legal prior
decision, not merely cosmetic.

### Not only for large merchants: no general size threshold

There is no general exemption for small businesses, turnover or headcount. A
one-person shop selling B2C at a distance may be just as affected as an
international merchant. The [IHK's guidance](https://www.ihk.de/osnabrueck/recht-und-fair-play/recht/internetrecht/widerrufsbutton-ab-juni-2026-6975440)
expressly describes the scope as independent of size, revenue and legal form.

### Not every website needs a button

A website with services, references, a contact form and a newsletter, but no
consumer contract concluded online, does not need a withdrawal button. That
can change where an appointment booking, payment, course registration or
digital purchase forms a contract directly on the site. Again, the actual
contract is decisive.

## Footer or order list: where should the withdrawal button appear?

The safe standard in Shopware 6 is a clearly visible button in the footer,
complemented by contextual entry points in the order confirmation and customer
account. The law does not prescribe a fixed position, but it does require
constant, easy accessibility throughout the withdrawal period – including for
guests and on mobile. The order list alone is therefore not a sufficient sole
route.

The order list in the customer account is not specified by law as the required
location. It can be very useful because the customer sees the relevant order
and its data can be prefilled. But it should not be the only route: guest
customers and people without working account access could otherwise be excluded.

In Shopware 6, a clear footer button is the standard approach. Shopware's
documentation describes a dedicated withdrawal-request page and the option to
show the **“Withdraw from contract”** button in the footer. In a standard
storefront, this is a sensible starting point, provided its accessibility is
tested in the actual theme and on mobile devices.

The extra contextual entry improves usability without replacing general
access. Do not confuse the two: the withdrawal policy still needs to be correctly
available in the footer and checkout; that is a separate obligation.

## Implementing it in Shopware 6: native from 6.7.9.0

Shopware introduced the native withdrawal function in **version 6.7.9.0** and
backported it to the 6.6 line. According to Shopware, it is part of the core
and also available in Community Edition. For a standard storefront, it is
therefore usually the best route: no extra plugin stack, a configurable footer
entry point and a system-level basis for form and acknowledgement. Our article
on [Shopware 6.7 and the benefits of updating](/en/insights/shopware-6-7-release-update-benefits)
provides the broader technical release context.

The exact wording in the admin may differ by patch level, but the workflow is
straightforward:

1. **Check version and theme.** Use at least 6.7.9.0, or a Shopware 6.6 patch
level containing the backport. Headless, custom themes and other frontends
need a deliberate integration.
2. **Assign the withdrawal-request page.** Under *Settings → Basic
information → Shop pages*, assign the layout for that page.
3. **Enable the footer function.** Under *Law and privacy*, enable the
“Withdraw from contract” button in the footer.
4. **Check flow and email.** The event flow for a submitted withdrawal form
must be active, the customer message deliverable and the internal recipient
defined. An HTTP 200 after form submission is not a substitute for a
delivered acknowledgement.
5. **Test end to end.** Test as a guest and logged-in user, on mobile, with
real mailboxes and with the intended hand-off to support, ERP and returns.

Shopware documents the footer setting in its [basic information
documentation](https://docs.shopware.com/en/shopware-en/settings/basic-information#revocation-request-in-the-storefront).
Shopware's [article on the withdrawal-button
requirement](https://www.shopware.com/en/news/withdrawal-button-requirement-germany-2026/)
explains the introduction in 6.7.9.0 and its 6.6 backport.

## Older Shopware 6 versions, Shopware 5 and headless: plugin or custom integration

If you cannot update to a supported 6.6/6.7 level, do not improvise the
statutory function with an ordinary contact form. For older Shopware 6 versions
and special requirements, we have had good experiences with mediameets’
**“Withdrawal button & online withdrawal form”** plugin. According to the
vendor, it supports several Shopware 6 versions and covers form, confirmation
and email workflow:

- [mediameets plugin for Shopware 6](https://store.shopware.com/de/media50620347541m/widerrufsbutton-online-widerrufsformular-nach-eu-richtlinie-2023-2673.html)

There is also a [mediameets extension for Shopware
5](https://store.shopware.com/de/media82172519414m/widerrufsbutton-online-widerrufsformular-nach-eu-richtlinie-2023-2673.html).
That is an interim measure, not a recommendation for permanent operation:
Shopware 5 has been end-of-life since July 2024. Read our [Shopware 5 EOL
assessment](/en/insights/shopware-5-end-of-life), and see our [Shopware 6
migration page](/en/shopware-agency/migration) for a planned move.

For headless shops, the same principle applies whether you use core or a
plugin: the frontend itself must visibly and consistently provide the required
experience. Do not merely check that a form exists in the backend. Verify that
the public storefront actually delivers the button, two-step flow,
acknowledgement email and accessibility. With a custom frontend, this belongs
to [Shopware development](/en/shopware-agency/development), not just the
administration.

## Pre-launch checklist

- Do we distinguish B2C, B2B-only and mixed sales channels correctly?
- Is “Withdraw from contract” easy to reach without login, search or contacting
support, including on mobile?
- Is the second action clearly labelled “Confirm withdrawal”?
- Does the form request only the necessary information and not a reason for
withdrawal?
- Does the customer promptly receive an email with content, date and time?
- Does the declaration reach support, ERP and the returns process without a
manual media break?
- Does the workflow work with real email addresses, guest orders, the custom
theme and every relevant language?
- Have recipients, retention and responsibilities been aligned with privacy and
legal advice?

The withdrawal button is not a major commerce project. But it is not a footer
link to add without testing either. Thinking about workflow, evidence and
technical integration together does more than meet a new obligation: it
removes avoidable friction for support teams and customers. For updates, email
delivery and continuous technical checks, our [Shopware support
team](/en/shopware-agency/support) can help.

### Sources and further information

- [Section 356a BGB: electronic withdrawal function for distance contracts](https://www.gesetze-im-internet.de/bgb/__356a.html)
- [German act implementing the consumer-rights reform, 3 February 2026](https://eur-lex.europa.eu/legal-content/DE/TXT/PDF/?uri=CELEX%3A72024L0825DEU_202602019)
- [Directive (EU) 2023/2673: consumer protection rules for distance contracts](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32023L2673)
- [German Federal Ministry of Justice: proposal for simple digital online-purchase withdrawals](https://www.bmjv.de/SharedDocs/Pressemitteilungen/DE/2025/0903_Widerrrufsbutton.html)
- [IHK Osnabrück: withdrawal button mandatory since 19 June 2026](https://www.ihk.de/osnabrueck/recht-und-fair-play/recht/internetrecht/widerrufsbutton-ab-juni-2026-6975440)
- [Händlerbund: exemptions for small shops?](https://ohn.haendlerbund.de/recht/politik-gesetze/widerrufsbutton-ausnahmen-kleine-shops)
- [Shopware documentation: revocation request in the storefront](https://docs.shopware.com/en/shopware-en/settings/basic-information#revocation-request-in-the-storefront)
- [Shopware: Germany's withdrawal-button requirement 2026](https://www.shopware.com/en/news/withdrawal-button-requirement-germany-2026/)
- [Shopware Community Forum: activation and implementation from 6.7.9.0](https://forum.shopware.com/t/widerrufsbutton-in-shopware-6-7-9-0-wo-aktivieren-wie-umsetzen/109001)
- [digitalman: set up the withdrawal button in Shopware 6.6](https://digitalmann.de/blog/widerrufsbutton-shopware-6-6-einrichten)
- [mediameets: withdrawal button for Shopware 6](https://store.shopware.com/en/media50620347541m/withdrawal-button-online-withdrawal-form-according-to-eu-directive-2023-2673.html)
- [mediameets: withdrawal button for Shopware 5](https://store.shopware.com/en/media82172519414m/withdrawal-button-online-withdrawal-form-according-to-eu-directive-2023-2673.html)
