Pakete
[pakete] [admin] [billing]
Lizenzpakete sind das Herzstück. Sie definieren Preis, Laufzeit, Funktionsumfang und Produktauswahl pro Kunde.
Für wen
Admins (Tenants), die ihren Kunden Lizenzen zu unterschiedlichen Konditionen verkaufen wollen.
Paket-Typen
Basis-Paket (package_type='base')
Hauptlizenz. Genau ein Basis-Paket pro Kunde. Bestimmt Grundpreis + Laufzeit.
Add-on-Paket (package_type='addon')
Zusatz-Modul, das mehrere Basis-Pakete erweitern kann. Z.B. "Premium-Support" oder "Erweiterte Druckprofile". Kunde kann mehrere Add-ons gleichzeitig haben.
Schritt für Schritt — Paket anlegen
1. Übersicht öffnen
Einstellungen → Pakete.
2. + Paket
- Name (Pflicht)
- Beschreibung (optional, in Pricing-Sektion sichtbar)
- Paket-Typ: Basis oder Add-on
- Status: aktiv / inaktiv
3. Preise
- Monatliche Gebühr (
monthly_fee, Netto) - Setup-Fee (
setup_fee, einmalig zur Vertragsstart) - Wiederkehrend (
is_recurring, true/false) — wenn false, einmalig - Mindestlaufzeit in Monaten (
min_contract_months, default 1) - Kündigungsfrist in Monaten (
cancellation_notice_months, default 1)
4. Abrechnungsintervalle (für Self-Service-Pakete)
Tab "Intervalle": Monatlich / Quartalsweise / Halbjährlich / Jährlich / 2 Jahre / 3 Jahre — pro Intervall optional Rabatt-Prozent.
5. Self-Service
self_service— Kunden können sich selbst registrieren über/join-Pageauto_activate— bei Self-Service-Registration sofort aktivieren (statt manueller Freischaltung)show_in_join_preview— Paket auf Landing-Page-Preview-Cards zeigen
6. Einschränkungen
Tab "Einschränkungen" → siehe Paket-Einschränkungen.
7. Speichern
Speichern triggert Stripe-Sync: licensio legt automatisch Stripe-Product + Price-Objekte an (im Connected-Account des Tenants). Stripe-IDs werden in license_packages.stripe_* gespeichert.
Vertragslaufzeiten
Beispiel-Konfiguration: Basic-Paket mit 12 Monaten Mindestlaufzeit, 1 Monat Kündigungsfrist:
- Kunde startet 1.1. → frühestens kündbar zum 31.12. mit Kündigung bis spätestens 30.11.
Im Kunden-Detail siehst du:
- Vertragsstart (
contract_start_at) - Mindestlaufzeit in Monaten
- Frühestens kündbar zum
- Kündigungs-Status (offen / gekündigt zum X)
Stripe-Integration
Pro Paket-Speichern wird in Stripe angelegt:
- Product (
stripe_product_id) — repräsentiert das Paket - Price (
stripe_price_id) — wiederkehrender Subscription-Preis - Setup Price (
stripe_setup_price_id, optional) — einmalige Setup-Fee alsadd_invoice_itemsbei Subscription-Start
Stripe Tax automatisch berechnet:
- DE → DE: 19 % MwSt
- DE → EU mit USt-ID: Reverse Charge 0 %
- DE → EU ohne USt-ID: lokaler Satz
- DE → Nicht-EU: 0 %
Häufige Fragen
Kann ich Preise nachträglich ändern? Stripe erzeugt für Preisänderungen einen neuen Price im Product. Bestehende Kunden bleiben am alten Price (Bestandsschutz), neue Kunden bekommen den neuen. Wenn du Bestandskunden migrieren willst → Stripe-Subscription-Update.
Wie kommt der Kunde zum Paket? Drei Wege:
- Einladung durch Admin (Mail mit Registrierungs-Token)
- Self-Service über
/join(Landing-Page-Sektion oder Direkt-Link) - Manuelle Zuordnung im Kunden-Detail (z.B. Paket-Wechsel)
Was wenn Stripe-Sync fehlschlägt?
Paket wird in licensio gespeichert, aber stripe_product_id bleibt leer. Im UI siehst du einen Warn-Indikator. Erneutes Speichern triggert Re-Sync.
Add-ons im Checkout?
Bei Kunden-Detail kannst du Add-ons zuweisen (customer_packages-Tabelle). Die werden als zusätzliche Subscription-Items im Stripe abgerechnet.
Verwandt
- Paket-Einschränkungen — Whitelist/Blacklist + Limits
- Rechnungsstellung — Stripe-Connect-Setup
- Kunden — Paket-Zuweisung per Kunde