WHMCS-Bestellformulare rechtssicher machen (Deutschland)
WHMCS liefert seine Bestellstrecke in angelsächsischer Logik aus: Der Bestell-Button heißt „Complete Order”, eine Widerrufsbelehrung fehlt, und die Umsatzsteuer ist nicht auf deutsche Verbrauchergeschäfte eingestellt. Für den Verkauf von Hosting, Domains oder Serverleistungen an Verbraucher in Deutschland reicht das nicht — hier drohen Abmahnungen nach dem UWG. Dieser Beitrag zeigt, welche Stellen Sie konkret ändern müssen: die Button-Lösung, die Pflichtangaben über dem Button, AGB- und Widerrufs-Checkboxen, den korrekten Datenschutzhinweis und die Umsatzsteuer-Konfiguration — jeweils so, dass die Anpassungen ein Update überstehen.
Wo Sie in WHMCS ansetzen
Rechtlich relevante Änderungen verteilen sich auf drei Ebenen:
- Ordering-Einstellungen unter Konfiguration → Systemeinstellungen → Allgemeine Einstellungen → Reiter „Ordering” (in WHMCS 7 noch „Setup → General Settings”). Hier wählen Sie das Bestellformular-Template und hinterlegen die AGB-URL.
- Das Bestellformular-Template — die Smarty-Dateien unter
/templates/orderforms/, etwastandard_cart/viewcart.tpl. - Sprach-Overrides unter
/lang/overrides/german.phpfür alle festen Textbausteine.
Wichtig: Bearbeiten Sie nie die mitgelieferten Template- oder Sprachdateien direkt. WHMCS überschreibt sie beim Update. Duplizieren Sie stattdessen den Ordner templates/orderforms/standard_cart zu z. B. standard_cart_de, wählen Sie ihn in den Ordering-Einstellungen aus und ändern Sie nur diese Kopie. Textbausteine gehören ausschließlich in /lang/overrides/german.php — diese Datei bleibt bei Updates unangetastet.
Button-Lösung: „Zahlungspflichtig bestellen”
Das ist der wichtigste und am häufigsten übersehene Punkt. Nach § 312j Abs. 3 BGB muss der Bestell-Button bei Verbrauchergeschäften ausdrücklich und unmissverständlich auf die Zahlungspflicht hinweisen. Zulässig ist ausschließlich die Formulierung „zahlungspflichtig bestellen” oder eine eindeutig entsprechende Angabe. Das englische „Complete Order” oder ein simples „Bestellen” genügt nicht — ein solcher Vertrag kommt im Zweifel gar nicht wirksam zustande.
Ändern Sie das Button-Label über die Sprachdatei statt im Template. Legen Sie /lang/overrides/german.php an (oder ergänzen Sie sie):
<?php
// Beschriftung des finalen Bestell-Buttons
$_LANG['orderForm']['completeOrder'] = 'Zahlungspflichtig bestellen';
Der exakte Sprachschlüssel unterscheidet sich je nach eingesetztem Bestellformular-Template. Alternativ setzen Sie das Label direkt im Button der viewcart.tpl Ihres Template-Ordners.
Pflichtangaben direkt über dem Button
§ 312j Abs. 2 BGB verlangt, dass Sie unmittelbar vor dem Button klar und hervorgehoben die wesentlichen Vertragsangaben anzeigen: die wesentlichen Merkmale der Leistung, den Gesamtpreis inklusive Umsatzsteuer sowie — bei Abonnements typisch für Hosting — die Laufzeit und die Mindestvertragslaufzeit. Die Bestellübersicht (ordersummary) im Template muss also den Bruttopreis, den Abrechnungszyklus (z. B. „pro Jahr”) und eventuelle Einrichtungsgebühren zeigen. Prüfen Sie, dass der wiederkehrende Preis und nicht nur die erste Rechnung sichtbar ist.
AGB, Widerruf und Datenschutz als Checkboxen
AGB-Checkbox (bordeigene Funktion)
Tragen Sie in den Ordering-Einstellungen im Feld „Terms of Service URL” die URL Ihrer AGB-Seite ein. WHMCS blendet daraufhin automatisch eine Pflicht-Checkbox im Checkout ein, ohne die keine Bestellung möglich ist. Den Begleittext übersetzen Sie per Sprach-Override. Diese Checkbox ist bei WHMCS standardmäßig leer und muss es bleiben — eine vorausgewählte AGB-Zustimmung wäre unwirksam.
Widerrufsrecht (14 Tage)
Verbraucher haben bei online geschlossenen Verträgen ein 14-tägiges Widerrufsrecht (§ 355 BGB). Sie müssen im Bestellprozess deutlich darauf hinweisen und die Widerrufsbelehrung verlinken. Für sofort aktivierte Leistungen — Hosting-Paket, VPS oder eine sofort registrierte Domain — kann das Widerrufsrecht vorzeitig erlöschen. Welche Schwelle gilt, hängt von der rechtlichen Einordnung ab, und die beiden Absätze unterscheiden sich deutlich:
- Dienstleistung (§ 356 Abs. 4 BGB): Das Widerrufsrecht erlischt erst, wenn Sie die Leistung vollständig erbracht haben — und nur, wenn der Kunde vorher ausdrücklich zugestimmt hat, dass Sie vor Fristablauf beginnen, und bestätigt hat, dass er dadurch bei vollständiger Vertragserfüllung sein Widerrufsrecht verliert. Die bloße Aktivierung reicht hier nicht.
- Digitale Inhalte ohne körperlichen Datenträger (§ 356 Abs. 5 BGB): Hier genügt tatsächlich der Beginn der Ausführung nach entsprechender Zustimmung und Bestätigung, damit das Widerrufsrecht erlischt.
Verlassen Sie sich bei Ihren AGB nicht auf die verbreitete Faustregel „Aktivierung reicht immer” — das trifft nur auf Abs. 5 zu.
Setzen Sie dafür eine eigene, nicht vorausgewählte Checkbox um. Am saubersten geht das über ein zusätzliches Pflichtfeld unter Konfiguration → Custom Client Fields: Feldtyp „Checkbox”, Optionen „Required Field” und „Show on Order Form” aktivieren. So bleibt die Zustimmung dokumentiert und übersteht Updates, ohne dass Sie das Template anfassen.
Datenschutzhinweis statt erzwungener Einwilligung
Ein verbreiteter Irrtum: Für die Verarbeitung der Bestelldaten brauchen Sie kein Einwilligungs-Häkchen. Die Verarbeitung ist zur Vertragserfüllung erforderlich und stützt sich auf Art. 6 Abs. 1 lit. b DSGVO. Eine erzwungene „Einwilligung” wäre sogar unwirksam, weil eine Einwilligung freiwillig sein muss. Richtig ist ein klarer, gut sichtbarer Hinweis mit Link auf die Datenschutzerklärung im Bestellformular — keine Zustimmungspflicht.
Ein echtes Consent-Häkchen brauchen Sie nur für optionale Zwecke, etwa den Newsletter. Dieses muss dann separat, leer vorbelegt und idealerweise über Double-Opt-in bestätigt werden. Wie Sie Einwilligungen sauber trennen, zeigt auch unser Beitrag zum DSGVO-konformen Umgang mit Kundendaten.
Umsatzsteuer korrekt ausweisen
Nach der Preisangabenverordnung müssen Verbraucher den Bruttopreis inklusive Umsatzsteuer sehen. Konfigurieren Sie unter Konfiguration → Systemeinstellungen → Tax Configuration:
- Tax-Regel für Deutschland mit 19 % (bei Bedarf zusätzlich 7 % für ermäßigte Leistungen).
- Beim Tax Type für ein reines Verbrauchergeschäft die inklusive Anzeige wählen, damit die Preise brutto dargestellt werden.
Verkaufen Sie auch an Geschäftskunden im EU-Ausland, aktivieren Sie das mitgelieferte EU-VAT-Addon. Es prüft die USt-IdNr. über das VIES-System, wendet bei gültiger ID das Reverse-Charge-Verfahren an (B2B ohne deutsche USt.) und legt Steuersätze je EU-Land an — relevant für die OSS-Regelung bei grenzüberschreitenden B2C-Verkäufen. Als Kleinunternehmer nach § 19 UStG weisen Sie keine Umsatzsteuer aus und setzen die Sätze auf 0 %, ergänzt um den passenden Hinweis auf der Rechnung.
Rechnungen und E-Mail-Vorlagen
Die automatisch erzeugten Rechnungen und Bestätigungsmails müssen ebenfalls den deutschen Vorgaben genügen — insbesondere den Pflichtangaben nach § 14 UStG (vollständige Anschrift, Steuernummer oder USt-IdNr., fortlaufende Rechnungsnummer, Steuersatz und -betrag). Die deutschen E-Mail-Vorlagen pflegen Sie unter Konfiguration → Systemeinstellungen → E-Mail-Vorlagen, das PDF-Layout in /templates/invoicepdf.tpl. Wie Sie die Rechnungen im Detail anpassen, behandelt der eigene Beitrag Rechnungen in WHMCS an deutsche Anforderungen anpassen; für den Steuerberater-Export lohnt die Anbindung an lexoffice oder sevDesk.
Typische Fehler
- Button bleibt englisch: „Complete Order” statt „Zahlungspflichtig bestellen” — der häufigste Abmahngrund.
- Direkt in mitgelieferten Dateien editiert: Änderungen sind nach dem nächsten Update verschwunden. Immer Template-Kopie und
/lang/overrides/nutzen. - Erzwungenes Datenschutz-Häkchen: rechtlich unwirksam. Vertragsdaten laufen über Art. 6 Abs. 1 lit. b DSGVO, nicht über Einwilligung.
- Nettopreise für Verbraucher: verstößt gegen die Preisangabenverordnung. Brutto anzeigen.
- Impressum vergessen: Die Impressumspflicht liegt seit Mai 2024 in § 5 DDG (löste das TMG ab) und muss auch aus dem Bestellprozess erreichbar sein.
FAQ
Reicht es, den Bestell-Button auf „Bestellen” zu übersetzen? Nein. § 312j Abs. 3 BGB verlangt einen ausdrücklichen Hinweis auf die Zahlungspflicht. Nur „zahlungspflichtig bestellen” oder eine eindeutig gleichwertige Formulierung ist rechtssicher.
Kann ich die Widerrufs-Checkbox ohne Programmierung einbauen? Ja. Legen Sie unter Custom Client Fields ein Pflicht-Checkbox-Feld an und aktivieren Sie „Show on Order Form”. Das kommt ohne Template-Änderung aus und bleibt beim Update erhalten.
Muss ich für Geschäftskunden im EU-Ausland Umsatzsteuer berechnen? Bei gültiger USt-IdNr. greift das Reverse-Charge-Verfahren: Sie stellen ohne deutsche Umsatzsteuer aus, der Kunde versteuert im eigenen Land. Das EU-VAT-Addon prüft die ID automatisch über VIES und setzt den Steuersatz entsprechend.
Brauchen Sie Hilfe dabei? Ypsilon.dev — Webagentur aus Regensburg, kostenlose Erstberatung.