MenuDeutsch

Kündigungsbutton (§ 312k BGB) / Guide

Cancellation button for Magento 2 (Adobe Commerce): § 312k BGB guide

Do you sell continuing contracts to consumers in Germany through Magento 2 (Adobe Commerce)? This guide explains the public cancellation route under § 312k BGB and how to implement it by hand.

Who needs the button?

§ 312k BGB applies to businesses offering consumers paid continuing contracts online, such as memberships, software subscriptions or recurring subscription boxes. The contract matters, not the shop system. Ordinary one-off purchases are outside this rule. Exceptions include financial services and contracts for which the law exclusively requires cancellation in a form stricter than text form.

The law and current BGH position

A legible “Verträge hier kündigen” button, or equally clear wording, leads directly to the confirmation page. Both buttons and the page must always be available and directly and easily accessible. Customers must be able to provide the cancellation type, reason for extraordinary cancellation, identifying details, contract, desired end date and an address for prompt electronic confirmation. The final button says “jetzt kündigen” or an equally clear equivalent.

After submission, the declaration must be savable on a durable medium with its date and time. Immediately confirm electronically in text form, for example by email, including the content, receipt date and time and the end date. Without a specified date, the earliest possible termination applies in case of doubt. A missing statutory cancellation route can allow cancellation without notice.

On 16 July 2026, the BGH held in I ZR 200/25 that retention offers, pause buttons and additional advertising do not belong on the confirmation page. The login cases I ZR 272/25 and I ZR 275/25 were heard on 5 November 2026; judgment is pending. Design a route without a password requirement.

Magento 2 (Adobe Commerce): manual implementation

  • Create a public CMS entry page under Content > Pages and assign the correct store views. Build the actual form in a custom module with a frontend route, controller and plain output. A CMS page alone does not receive cancellations; its POST controller must also accept guests.
  • Link the form route in a CMS footer block under Content > Blocks or extend footer_links through your own theme’s layout. Check block placement and store-view URLs. Checkout and custom themes do not always contain that block; add a separate visible entry point there.
  • Store inputs and the UTC receipt time in a custom module table. Use Magento’s TransportBuilder and custom email templates for customer confirmation and merchant notification; edit templates under Marketing > Email Templates. Configure senders and mail transport per store view and test delivery outside the admin.

Test before publishing

Protect processing against duplicate submissions without requiring login. Offer a downloadable or printable receipt containing the declaration and receipt time; keep sensitive form data out of public URLs. Test the entire route logged out on a phone and check the confirmation inbox. After theme updates, verify the footer link still exists. Disable retention popups on the confirmation page and check caching, cookie banners and maintenance mode. Then process the declaration in the actual subscription system; the form does not stop billing by itself.

Sources

Statute and BGH press releases; as of 6 November 2026. Not legal advice.