Welche Gesetze in unserem Code stecken
Ein Kündigungsknopf, der ohne Login erreichbar sein muss. Ein Formular, das niemals ablehnen darf. Warum Rechtspflichten bei uns Architektur sind und keine Textbausteine.

Als wir Premium verkaufbar gemacht haben, dachten wir, der rechtliche Teil sei ein paar Seiten Text im Footer. Das war falsch. Ein Teil der Pflichten lässt sich überhaupt nicht in einen Text schreiben, weil er festlegt, wie eine Funktion gebaut sein muss.
Vier Beispiele, an denen das besonders deutlich wurde. Vorweg, damit klar ist, was dieser Text ist: eine Beschreibung unserer Umsetzung, keine Rechtsberatung.
Der Kündigungsknopf, der keinen Login haben darf
§ 312k BGB verlangt für Verträge im Internet eine Kündigungsmöglichkeit, die unmittelbar erreichbar ist. Daraus folgen Dinge, die man nicht nachträglich hineinformuliert:
- Die Seite muss ohne Anmeldung funktionieren
- Sie muss im Footer jeder Seite stehen
- Sie braucht zwei Schritte: erst eingeben, dann eindeutig beschriftet bestätigen
- Es muss eine Zugangsbestätigung in Textform rausgehen
Der letzte Punkt ist der, der die Architektur bestimmt. Eine Kündigung ist eine einseitige Erklärung und wird mit Zugang wirksam. Sie muss also immer protokolliert und bestätigt werden, egal von wem sie kam.
Das Formular darf niemals ablehnen
Hier liegt die Stelle, an der uns der naheliegende Ansatz fast einen Fehler gekostet hätte.
Naheliegend wäre: Die Kündigung nur annehmen, wenn Server ID und E-Mail zu einem aktiven Abo passen. Klingt vernünftig, ist aber gleich doppelt falsch.
Erstens würde es einen echten Kunden aussperren, der sich bei der E-Mail vertippt oder eine andere Adresse angibt. Seine Kündigung wäre nicht zugegangen, das Abo verlängert sich weiter, und er hat einen Beleg in der Hand, dass er es versucht hat.
Zweitens, und das ist der unangenehmere Teil: Die Fehlermeldung selbst wäre eine Auskunft. Wer "kein Abo gefunden" zurückbekommt, weiß, dass dieser Server nicht zahlt. Eine Discord Server ID ist kein Geheimnis, jedes Mitglied kann sie auslesen. Das Formular wäre damit ein Werkzeug, um fremde Server abzufragen.
Die Lösung trennt zwei Dinge, die intuitiv zusammengehören:
| Bedingung | |
|---|---|
| Zugang der Erklärung | bedingungslos, wird immer protokolliert und bestätigt |
| Ausführung der Kündigung | nur wenn die angegebene E-Mail zum hinterlegten Käufer passt |
Alles andere landet in einer Warteschlange und wird von einem Menschen angesehen. Das ist zulässig, weil § 312k Abs. 2 ausdrücklich erlaubt, Angaben zur Identifizierung zu verlangen. Verboten ist nur der Login davor.
Aus demselben Grund darf die öffentliche Antwort das Enddatum nur nennen, wenn die Identität bestätigt ist. Sonst wird aus der Bestätigung wieder ein Orakel.
Der Widerruf, der bewusst einen Login hat
Direkt daneben steht eine Funktion, die wir genau andersherum gebaut haben: Der Widerruf mit anteiliger Erstattung sitzt hinter einer Anmeldung.
Das ist kein Widerspruch. § 312k betrifft die Kündigung, nicht den Widerruf, und es gibt keine Pflicht, überhaupt ein Online Widerrufsformular anzubieten, solange der formlose Weg offen bleibt. Der Unterschied ist die Folge: Eine Kündigung wirkt in die Zukunft, eine Erstattung bewegt jetzt Geld, und sie ist nicht rückholbar.
Drei Regeln, die daraus folgen und die wir nicht aufweichen:
Kein Pflichtgrund. § 355 Abs. 1 BGB gewährt den Widerruf ausdrücklich ohne Angabe von Gründen. Das Feld ist optional und muss es bleiben, so verlockend eine Pflichtangabe für die Statistik wäre.
Nach 14 Tagen wird nur der Automatikweg abgelehnt, nie die Erklärung. Die Frist verlängert sich auf bis zu zwölf Monate und vierzehn Tage, wenn nicht ordnungsgemäß belehrt wurde. Ein pauschales "zu spät" wäre also möglicherweise falsch.
Der Schutz gegen Doppelauszahlung ist pessimistisch. Die Markierung wird gesetzt, bevor die Erstattung läuft. Scheitert die Erstattung danach, bleibt die Markierung stehen und ein Mensch übernimmt. Doppelt auszuzahlen ist der einzige Ausgang, der sich nicht heilen lässt.
Eine Discord DM ist kein dauerhafter Datenträger
§ 312f Abs. 3 BGB verlangt eine Vertragsbestätigung auf einem dauerhaften Datenträger, und sie muss die erteilte Zustimmung wiedergeben.
Wir haben zuerst eine Discord Direktnachricht verschickt, weil das der Kanal ist, in dem unsere Kunden ohnehin sind. Das genügt dafür nicht. Eine DM lebt auf einer Plattform, auf die wir keinen Einfluss haben, und sie ist weder speicherbar noch unveränderlich in dem Sinne, den die Vorschrift meint.
Also kam eine E-Mail dazu, und mit ihr eine unangenehme Abhängigkeit: Sind die Zugangsdaten für den Mailversand nicht gesetzt, schreibt der Versand nur eine Warnung ins Log und die Pflicht ist nicht erfüllt. Eine gesetzliche Pflicht, die an einer Umgebungsvariable hängt, ist ein Zustand, den man sich bewusst machen sollte.
Keine Umsatzsteuer, und das muss überall gleich stehen
AlphaCloud ist Kleinunternehmer nach § 19 UStG. Die Preise sind Endpreise, es wird nie Umsatzsteuer ausgewiesen.
Das klingt nach einer Fußnote und ist in Wahrheit eine Konsistenzaufgabe über viele Stellen: die Preisseite, der Kaufdialog, die AGB, die Datenschutzerklärung, der Rechnungsfuß und die Konfiguration beim Zahlungsdienstleister müssen dieselbe Aussage treffen. Wir hatten dort lange ein "zzgl. MwSt." stehen, das schlicht falsch war.
Und die KI
Seit August 2026 gilt die Transparenzpflicht der europäischen KI Verordnung in vollem Umfang. Wer mit einem KI System spricht, muss das erkennen können, und zwar spätestens bei der ersten Interaktion.
Der wichtigste Satz für uns aus dieser Prüfung: Eine Rechtsseite im Footer erfüllt das vermutlich nicht. Die Kennzeichnung muss dort stattfinden, wo die Interaktion stattfindet, also in der Discord Nachricht selbst. Unser KI Support im Ticket stellt sich deshalb von sich aus vor und hat einen sichtbaren Knopf zum Abschalten. Was wir dazu im Einzelnen einschätzen, steht auf KI Transparenz.
Der gemeinsame Nenner
Alle vier Beispiele haben dieselbe Form: Die Pflicht sah nach einem Text aus und war in Wahrheit eine Anforderung an den Aufbau. Ein Login an der falschen Stelle, eine Fehlermeldung, die zu viel verrät, eine Bestätigung im falschen Kanal, eine Reihenfolge, die eine doppelte Auszahlung erlaubt.
Deshalb lesen wir Rechtstexte inzwischen wie eine Spezifikation, und wir prüfen in die andere Richtung mit: Tut der Code wirklich das, was in unseren AGB steht? Bei genau dieser Frage haben wir zwei echte Abweichungen gefunden, darüber gibt es einen eigenen Artikel.
Weitere Artikel
Warum bei AlphaCloud fast alles kostenlos bleibt
Die meisten Discord Bots sperren ihre nützlichsten Funktionen hinter ein Abo. Wir machen das bewusst nicht, und das hat weniger mit Großzügigkeit zu tun, als es klingt.
Hinter den KulissenWie wir 4.000 Discord Server im Blick behalten: Grafana, PostHog und was sie uns gezeigt haben
Ein Loop, der still die Hälfte unseres Verkehrs erzeugte, drei Millionen unnötige Anfragen am Tag und ein Angriff, der nach einer Minute vorbei war. Was unser Monitoring sieht, und was es bewusst nicht sieht.
Hinter den KulissenAls unser KI Anbieter das Modell abschaltete
Ein Modellwechsel, leere Antworten ohne Fehlermeldung und eine Rechnung, die plötzlich ein Vielfaches betrug. Was dabei kaputtging und warum die Ursache so schwer zu sehen war.