Kündigungsbutton (§ 312k BGB) / Guide
Cancellation button for OpenCart: § 312k BGB guide
Do you sell continuing contracts to consumers in Germany through OpenCart? 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.
OpenCart: manual implementation
- Create a public information page under Catalogue > Information. A working form also requires your own extension with a catalog controller and Twig template. Use the structure appropriate to the installed release: extension paths differ between OpenCart 3.0 and 4.1. Make the form route available without a customer account.
- If the information page only explains the process, link the footer directly to the form route instead. Add the link through your own theme or an event on the common/footer controller; avoid editing core files. Check information links, custom checkout pages and every active language. Render the form without sales banners or recommendations.
- Have the catalog controller validate and store the input with a server-generated UTC timestamp, then immediately send confirmation through OpenCart’s mail library. Configure the shop’s Mail tab under System > Settings. Send the declaration, receipt date, time and requested end date to the customer and a separate notification to the shop.
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.