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 (Anbieter), 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": neben monatlich kannst du Vorauszahlungs-Intervalle von 2 bis 120 Monaten definieren (z.B. quartalsweise, halbjährlich, jährlich, 2 oder 3 Jahre). Pro Intervall optional ein Rabatt — als Prozentsatz oder Pauschalbetrag.

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 Anbieter). Stripe-IDs werden in license_packages.stripe_* gespeichert.

Vertragslaufzeiten​

Beispiel-Konfiguration — ein Paket, das der Anbieter „Basic" nennt (ein selbst gewählter Paketname für deine eigenen Kunden, kein licensio-Tarif), mit 12 Monaten Mindestlaufzeit und 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​