Zum Hauptinhalt springen

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-Page
  • auto_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 als add_invoice_items bei 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:

  1. Einladung durch Admin (Mail mit Registrierungs-Token)
  2. Self-Service über /join (Landing-Page-Sektion oder Direkt-Link)
  3. 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