Kündigungsbutton (§ 312k BGB) / Guide
Cancellation button for Shopify: § 312k BGB guide
Do you sell continuing contracts to consumers in Germany through Shopify? 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.
Shopify: manual implementation
- Start with a public information page under Online Store > Pages. Actual processing needs your own HTTPS backend: Liquid cannot persist a declaration or send its confirmation. A custom Shopify app can expose the form through an app proxy, for example /apps/kuendigen. Return plain HTML there without theme promotions.
- In the admin, add the complete form address to the footer menu under Content > Menus. Select that menu in the theme editor’s footer. If the theme has no menu block, add a link in your own footer section. Check the published version after each theme switch.
- Your backend verifies app-proxy signatures and input, stores the declaration and receipt time, and immediately sends customer and merchant messages through a transactional mail service. Shopify’s standard contact-form email to the shop is insufficient. Keep this route independent of login and your subscription app’s customer portal.
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
- § 312k BGB on gesetze-im-internet.de (Federal Ministry of Justice)
- BGH press release no. 128/2026: judgment of 16 July 2026, I ZR 200/25
- BGH press release no. 133/2026: hearing on 5 November 2026 in I ZR 272/25 and I ZR 275/25 (German)
Statute and BGH press releases; as of 6 November 2026. Not legal advice.