Abrechnung
Tarife, Test-Zeitraum, Zusatzleistungen, Rechnungen, Reverse-Charge.
Abrechnung
Die Abrechnung läuft pro Mandant (Team), nicht pro Person. Wer mehrere Mandanten betreut, hat mehrere Abos. Bezahlt wird über Stripe.
Aufruf
Einstellungen → Abrechnung
Sichtbar ist diese Seite nur, wenn der Plattform-Betreiber das Modul
aktiviert hat (FEATURE_BILLING_ENABLED=true in der .env).
Test-Zeitraum
Wer sich auf der Preise-Seite für Advanced entscheidet, bekommt 14 Tage kostenlosen Test ohne Kreditkarte. Der volle Funktionsumfang ist in dieser Zeit freigeschaltet. Nach Ablauf des Tests passiert eines von beidem:
- Tarif gewählt: Sie geben in der Stripe-Kasse Ihre Zahlungsdaten ein, das Abo läuft regulär weiter.
- Kein Tarif gewählt: Der Mandant wird in den Read-Only-Modus versetzt — Daten und Exporte bleiben verfügbar, neue Eingaben sind gesperrt. Sobald Sie einen Tarif buchen, wird die Sperre aufgehoben.
Während des Tests gibt es keine Mahnungen und keine automatischen Buchungen.
Tarif buchen oder wechseln
In der Übersicht sehen Sie alle Tarife (Starter, Advanced, Enterprise) als Karten mit Monats- und Jahres-Toggle. Der Jahresplan entspricht zehn Monatspreisen — also rund 17 % Rabatt gegenüber der monatlichen Buchung.
- Buchen öffnet die Stripe-Hosted-Checkout-Seite. Dort geben Sie Zahlungsdaten ein und schließen den Kauf ab. Nach Erfolg landen Sie zurück auf der Abrechnungs-Seite.
- Wechseln zwischen aktiven Tarifen läuft direkt, ohne erneute Checkout-Seite. Stripe rechnet anteilig den Rest des laufenden Zeitraums ab und stellt den neuen Tarif anteilig in Rechnung.
- Enterprise hat keinen Self-Service-Checkout — Sie kontaktieren uns per Demo-Anfrage und bekommen ein Angebot.
Zusatzleistungen
Unter dem Tarif-Block gibt es Zusatzleistungen, die Sie unabhängig vom laufenden Plan dazubuchen können:
| Posten | Modus | Beschreibung |
|---|---|---|
| Onboarding-Workshop (2 h) | Einmalzahlung | Strukturierte Einrichtung mit einem unserer Berater. |
| Coaching-Stunde (60 min) | Einmalzahlung, Anzahl wählbar | Beratung nach Bedarf — Tabletop-Übung, Score-Review, NIS2-Sparring. |
| Coaching-Retainer (4 h/Monat) | Abo, monatlich kündbar | Günstiger als Einzelstunden, geeignet für laufende Begleitung. |
| Zusatz-User | Einmalzahlung, Anzahl wählbar | Pro App-User über das Plan-Limit hinaus. |
Einmalzahlungen erscheinen sofort in der Rechnungs-Liste. Der Coaching-Retainer ist ein eigenständiges Abo und lässt sich getrennt vom Haupt-Tarif kündigen.
Kündigen und fortsetzen
- Kündigen zum Periodenende stoppt die nächste Verlängerung. Bis zum Ablauf bleibt der Tarif voll aktiv. Danach geht der Mandant in den Read-Only-Modus.
- Solange das Abo in der Schonfrist ist (Kündigung erfolgt, aber Periode noch nicht zu Ende), erscheint Kündigung zurücknehmen — ein Klick reicht, das Abo läuft normal weiter.
- Daten bleiben 30 Tage nach Ablauf als ZIP-Archiv exportierbar.
Rechnungen
Alle bezahlten und offenen Rechnungen erscheinen in der unteren Tabelle. Jede Rechnung lässt sich als PDF herunterladen.
Die Rechnung enthält:
- Mandanten-Name als Empfänger
- USt-IdNr (sofern bei Stripe hinterlegt)
- Reverse-Charge-Vermerk bei B2B-Kunden im EU-Ausland
- Posten-Details (Tarif, Zeitraum, Add-on)
- Brutto, Netto, Steuersatz
USt-IdNr und Reverse-Charge
Im Stripe-Checkout können Sie eine USt-IdNr angeben. Stripe Tax prüft sie automatisch und rechnet bei B2B-Kunden im EU-Ausland im Reverse-Charge-Verfahren ab — die Rechnung weist dann keine deutsche Umsatzsteuer aus.
Innerhalb Deutschlands gilt der reguläre Satz (19 %). Privatkunden zahlen den Brutto-Preis.
Stripe-Setup (für Plattform-Betreiber)
Vor dem Aktivieren von FEATURE_BILLING_ENABLED=true müssen Products und
Prices im Stripe-Dashboard existieren und ihre IDs in der .env stehen.
Die Vorlagen liegen unter storage/stripe-bootstrap/ und werden vom
Artisan-Command stripe:bootstrap in das verbundene Stripe-Konto
gespiegelt:
php artisan stripe:bootstrap --dry-run # Vorschau, ohne etwas anzulegen
php artisan stripe:bootstrap # Products + Prices anlegen
Voraussetzung: STRIPE_SECRET (Test- oder Live-Mode-Key) ist in der
.env gesetzt. Der Command ist idempotent — bereits angelegte
Products werden anhand des metadata.planb_key erkannt, Prices über den
lookup_key. Mehrfach-Ausführungen erzeugen keine Duplikate.
Nach dem Lauf gibt der Command einen Block mit STRIPE_PRICE_*-Werten
aus, der direkt in die .env übernommen werden kann. Anschließend:
- Webhook-Endpoint im Stripe-Dashboard auf
https://<domain>/stripe/webhookregistrieren und das Signing-Secret alsSTRIPE_WEBHOOK_SECRETsetzen. FEATURE_BILLING_ENABLED=trueschalten.
Sicherheit
- Zahlungsdaten erreichen unseren Server nicht — die Eingabe erfolgt ausschließlich auf Stripe-Seiten (PCI-DSS Level 1).
- Wir speichern nur eine Stripe-Kunden-ID und die letzten vier Stellen der hinterlegten Karte (für die Anzeige).
- Stripe-Webhooks halten den Abrechnungs-Status synchron — Statuswechsel (Zahlung erfolgreich / fehlgeschlagen, Kündigung, Trial-Ende) treffen innerhalb weniger Sekunden bei uns ein.