> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fynn.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Produkt-Updates Februar 2026

> Neue Funktionen und Verbesserungen in Fynn im Februar 2026.

<Update rss={{ title: "Bankbuchungsabgleich: Zahlungshistorie bei manueller Zuordnung einsehen" }}>
  ## Bankbuchungsabgleich: Zahlungshistorie bei manueller Zuordnung

  Bei der manuellen Zuordnung von Bankbuchungen zu Rechnungen kann jetzt die **bestehende Zahlungshistorie** einer Rechnung direkt in den Suchergebnissen eingesehen werden. Ein Klick auf den Pfeil neben einer Rechnung zeigt alle bisherigen Zahlungseingänge — inklusive Status, Datum, Zahlungsweg und Betrag.

  So erkennst du sofort, ob bereits Zahlungen für eine Rechnung vorliegen, bevor du eine weitere Bankbuchung zuordnest. Das verhindert versehentliche Doppelzuordnungen und gibt mehr Sicherheit bei der manuellen Zuordnung.

  * [Kontobewegungen Dokumentation](/guide/payments/bank-transactions#manuelle-zuordnung)
</Update>

<Update rss={{ title: "Überzahlungen automatisch als Kundenguthaben verbuchen und auf offene Rechnungen anrechnen" }}>
  ## Automatische Guthabenverrechnung bei Überzahlungen

  Wenn ein Kunde eine Rechnung überbezahlt, wird der überschüssige Betrag ab sofort automatisch dem Kundenguthaben (Wallet) gutgeschrieben. Das Guthaben kann anschließend automatisch auf offene Rechnungen angerechnet werden, beginnend mit der ältesten fälligen Rechnung.

  **So funktioniert es:**

  Sobald eine Zahlung den offenen Rechnungsbetrag übersteigt, erkennt Fynn die Differenz und bucht sie als Guthaben auf das Kundenkonto. Der offene Betrag der Rechnung wird dabei automatisch auf null gesetzt. Falls der Kunde weitere offene Rechnungen hat, kann das Guthaben automatisch darauf angerechnet werden.

  **Neue Einstellungen:**

  * **Überzahlungen als Guthaben verbuchen**: Steuert, ob Überzahlungen automatisch ins Kundenguthaben überführt werden
  * **Guthaben automatisch auf offene Rechnungen anrechnen**: Wenn aktiviert, wird vorhandenes Guthaben automatisch auf offene Rechnungen angewendet (älteste zuerst)

  Beide Einstellungen lassen sich global unter **Einstellungen > Abrechnung** konfigurieren und pro Kunde individuell überschreiben.

  **Szenarien:**

  * **Einfache Überzahlung**: Kunde zahlt 130 € auf eine 100 €-Rechnung. Die Rechnung wird als bezahlt markiert, 30 € landen im Guthaben.
  * **Mehrfache Zahlungen**: Geht nach einer Überzahlung eine weitere Zahlung ein, wird nur der neue Überschuss zusätzlich gutgeschrieben. Bereits verrechnete Beträge werden nicht doppelt gebucht.
  * **Automatische Anrechnung**: Bei 70 € Guthaben und zwei offenen Rechnungen (40 € und 60 €) wird zuerst die ältere Rechnung vollständig beglichen, die restlichen 30 € werden auf die zweite Rechnung angerechnet.

  Für spätere Auszahlungen speichert Fynn die ursprüngliche Zahlungsmethode, das Gateway und die Transaktionsreferenz mit jeder Guthaben-Transaktion.

  * [Kundenguthaben Dokumentation](/guide/invoices/wallet-balance)
  * [Abrechnungseinstellungen](/guide/tenant/billing)
</Update>

<Update rss={{ title: "Konsolidierte Tagesabrechnung: Ein Kunde, eine Rechnung pro Tag" }}>
  ## Konsolidierte Tagesabrechnung

  Fynn fasst ab sofort alle Abrechnungen eines Kunden an einem Kalendertag in **einer einzigen Rechnung** zusammen. Bisher konnte es vorkommen, dass mehrere Abonnements desselben Kunden zu separaten Rechnungen am gleichen Tag führten.

  **Verhalten:**

  * Alle fälligen Positionen eines Kunden werden gesammelt und als eine Rechnung erstellt
  * Dies betrifft reguläre Abo-Abrechnungen, die am selben Tag fällig werden
  * Manuell erstellte Rechnungen und Sofortabrechnungen sind davon nicht betroffen

  **Vorteil:** Weniger Rechnungen, weniger Zahlungsvorgänge und eine übersichtlichere Buchhaltung — besonders bei Kunden mit mehreren Abonnements.

  * [Abrechnungseinstellungen](/guide/tenant/billing)
</Update>

<Update rss={{ title: "Passkey-Login: Anmeldung mit Face ID, Touch ID oder Sicherheitsschlüssel" }}>
  ## Passkey-Login

  Die Anmeldung bei Fynn ist ab sofort auch per **Passkey** möglich. Passkeys nutzen die biometrische Authentifizierung deines Geräts (Face ID, Touch ID, Windows Hello) oder einen Hardware-Sicherheitsschlüssel für einen schnellen und sicheren Login — ohne Passwort.

  **So funktioniert es:**

  * **Einrichten**: Unter **Mein Profil > Sicherheit** einen Passkey hinzufügen
  * **Anmelden**: Auf der Login-Seite **Mit Passkey anmelden** wählen und per Biometrie bestätigen
  * **Mehrere Geräte**: Für jedes Gerät kann ein eigener Passkey eingerichtet werden

  **Sicherheitsvorteile:**

  * Phishing-resistent — Passkeys sind an die Domain gebunden
  * Kein gemeinsames Geheimnis, das abgefangen werden kann
  * Der private Schlüssel verlässt dein Gerät nie

  Passkeys ergänzen den bestehenden Passwort-Login. Beide Methoden funktionieren parallel.

  * [Passkeys Dokumentation](/guide/tenant/passkeys)
</Update>

<Update rss={{ title: "Globale Suche mit Vorschau-Panels" }}>
  ## Globale Suche mit Vorschau

  Die globale Suche (`Ctrl+K` / `Cmd+K`) zeigt jetzt **detaillierte Vorschau-Panels** für Suchergebnisse an. Beim Navigieren durch die Ergebnisse siehst du sofort die wichtigsten Informationen — ohne die aktuelle Seite zu verlassen.

  **Vorschau verfügbar für:**

  * **Kunden**: Name, Kundennummer, Adresse, aktive Abonnements
  * **Rechnungen**: Betrag, Status, Kunde, Positionen
  * **Abonnements**: Produkte, Status, nächste Abrechnung
  * **Produkte & Preispläne**: Details und Konfiguration
  * **Transaktionen**: Betrag, Status, Zahlungsmethode
  * **Mahnungen**: Stufe, offener Betrag, verknüpfte Rechnung
  * **Rabatte**: Konfiguration und Einlösungen

  Zusätzlich werden **Treffer im Kontext** hervorgehoben — du siehst sofort, in welchem Feld (Name, Nummer, Adresse etc.) der Suchbegriff gefunden wurde.

  * [Suche Dokumentation](/guide/tenant/search)
</Update>

<Update rss={{ title: "Übersicht-E-Mails: Persönliche Benachrichtigungen mit Kennzahlen und Aufgaben" }}>
  ## Übersicht-E-Mails (Digest)

  Fynn versendet jetzt regelmäßige Übersicht-E-Mails, die die wichtigsten Kennzahlen und offenen Aufgaben deiner Organisation zusammenfassen. Jeder Benutzer kann individuell konfigurieren, welche Informationen er erhalten möchte.

  **Neuer Benutzerkontobereich:**

  Im neuen persönlichen Benutzerkontobereich stehen die Tabs **Profil** und **Benachrichtigungen** zur Verfügung. Unter Benachrichtigungen lassen sich die Übersicht-E-Mails aktivieren und die einzelnen Abschnitte konfigurieren.

  **Verfügbare Abschnitte:**

  * **Kunden & Umsatz**: Neue Kunden, Umsatzübersicht
  * **Rechnungen & Zahlungen**: Rechnungen zur Freigabe, Offene SEPA-Exporte, Nicht zugeordnete Zahlungen
  * **Buchhaltung**: Monatsabschluss verfügbar
  * **Betrieb**: Fehlgeschlagene E-Mails, Xentral-Bestellungen

  **Frequenzoptionen:**

  * Täglich (Montag bis Freitag) oder wöchentlich — pro Abschnitt konfigurierbar
  * Kombinierte E-Mail am Montag, wenn tägliche und wöchentliche Abschnitte aktiv sind
  * Keine E-Mail bei leeren Zeiträumen

  **SEPA-Export-Benachrichtigung:** Die Benachrichtigung über ausstehende SEPA-XML-Exporte wird jetzt über die Übersicht-E-Mails gesteuert und kann individuell pro Benutzer konfiguriert werden.

  Die verfügbaren Abschnitte richten sich automatisch nach den Berechtigungen des jeweiligen Benutzers.

  * [Übersicht-E-Mails Dokumentation](/guide/notifications/digest-emails)
</Update>

<Update rss={{ title: "Korrektur der Betragsanzeige in Mahnungen bei Teilzahlungen" }}>
  ## Mahnungen: Korrektur der Betragsanzeige bei Teilzahlungen

  Die Platzhalter `totalGrossAmount` und `referencedInvoiceTotalGrossAmount` in Mahnungsvorlagen zeigen jetzt den **offenen Restbetrag** statt des ursprünglichen Rechnungsbetrags an. Bei Rechnungen mit Teilzahlungen wurde bisher fälschlicherweise der volle Bruttobetrag angezeigt.

  **Beispiel:** Eine Rechnung über 100,00 € mit einer Teilzahlung von 30,00 € und 5,00 € Mahngebühren zeigt jetzt korrekt 75,00 € als Gesamtbetrag (70,00 € offener Betrag + 5,00 € Mahngebühren) — statt zuvor 105,00 €.

  Diese Korrektur gilt für PDF-Belegvorlagen und E-Mail-Benachrichtigungsvorlagen.

  * [Belegvorlagen & Platzhalter](/guide/invoices/document-templates)
</Update>

<Update rss={{ title: "Globale E-Mail-Übersicht mit Status und Filtern" }}>
  ## Globale E-Mail-Übersicht

  Alle gesendeten E-Mails können jetzt zentral in einer mandantenweiten Übersicht eingesehen werden — unabhängig vom einzelnen Kunden.

  **Funktionen:**

  * Mandantenweite Liste aller gesendeten E-Mails mit Zustellstatus

  * Filter nach Zeitraum, Status, Betreff, Empfänger und Kunde

  * Detailansicht mit vollständigem E-Mail-Inhalt und Zustellungsverlauf

  * Per-Empfänger-Status bei E-Mails mit mehreren Empfängern

  * Organisationsübergreifende Ansicht: E-Mails aller Child-Kunden einer Organisation einbeziehen

  * [E-Mail-Versand und Statusverfolgung](/guide/customers/email-tracking)
</Update>

<Update rss={{ title: "Abonnement-Platzhalter in Rechnungsvorlagen und konfigurierbares Positionsgruppen-Format" }}>
  ## Abonnement-Platzhalter in Rechnungsvorlagen

  In Rechnungsvorlagen (Titel, Einleitung, Abschlusstext) stehen jetzt Abonnement-Platzhalter zur Verfügung. Damit lassen sich Abonnement-Daten wie Name, Nummer, Bestellnummer und benutzerdefinierte Felder direkt in Rechnungsdokumente einbinden.

  **Neue Platzhalter:**

  * `subscription.name` — Abonnementname
  * `subscription.number` — Abonnementnummer
  * `subscription.poNumber` — Bestellnummer (PO)
  * `subscription.customFields.<key>` — Benutzerdefinierte Felder des Abonnements

  Bei Rechnungen mit mehreren Abonnements werden die Werte automatisch kommagetrennt zusammengefasst.

  **Konfigurierbares Positionsgruppen-Format:**

  Der Name der Positionsgruppen auf Rechnungen kann jetzt unter **Einstellungen > Abrechnung** frei konfiguriert werden. Das Format unterstützt Variablen, Bedingungen und benutzerdefinierte Felder. Eine Live-Vorschau zeigt das Ergebnis direkt bei der Eingabe.

  * [Belegvorlagen & Platzhalter](/guide/invoices/document-templates)
  * [Abrechnungseinstellungen](/guide/tenant/billing)
</Update>

<Update rss={{ title: "Organisationsstruktur: Parent-Child-Beziehungen zwischen Kunden" }}>
  ## Organisationsstruktur: Parent-Child-Beziehungen zwischen Kunden

  Kunden können jetzt in einer Hierarchie organisiert werden. Mit der neuen Organisationsstruktur lassen sich Parent-Child-Beziehungen zwischen Kunden abbilden — ideal für Unternehmen mit mehreren Abteilungen, Standorten oder Tochtergesellschaften.

  **Funktionen:**

  * Bis zu 3 Hierarchieebenen (z. B. Hauptunternehmen → Tochtergesellschaft → Abteilung)
  * Zuweisung und Entfernung von Parent-Kunden über Web-App und API
  * Übersicht aller Child-Kunden mit Abo-Metriken
  * Vollständige Hierarchie als Baumstruktur abrufbar
  * Neue Filter: `parentCustomerId`, `isParent`, `hasParent`
  * Organisationsübergreifende Ansichten für Abonnements, Rechnungen und Transaktionen
  * Webhook-Events: `customer.parent.assigned`, `customer.parent.removed`

  Die Organisationsstruktur ist die Grundlage für zukünftige organisationsbasierte Abrechnungsfunktionen (Consolidated Billing).

  <Note>
    Diese Funktion erfordert die Aktivierung des Feature-Flags `customer.hierarchy`. Kontaktiere den Support zur Freischaltung.
  </Note>

  * [Organisationsstruktur Dokumentation](/guide/customers/organization-hierarchy)
  * [Set Parent Customer API](/api-reference/customer/set-parent-customer)
  * [Get Customer Hierarchy API](/api-reference/customer/get-customer-hierarchy)
</Update>

<Update rss={{ title: "Alle auswählen: Untergeordnete Belege werden korrekt markiert" }}>
  ## Alle auswählen: Untergeordnete Belege werden korrekt markiert

  Die Funktion „Alle auswählen" in Tabellen mit Baumstruktur (z.B. Rechnungsliste) markiert jetzt auch die untergeordneten Belege korrekt. Bisher wurden beim Klick auf die Checkbox im Tabellenkopf nur die übergeordneten Zeilen ausgewählt – Gutschriften und Stornos, die unter der Ursprungsrechnung gruppiert waren, blieben unmarkiert.

  * **Vollständige Auswahl**: Alle sichtbaren Zeilen inklusive aufgeklappter Unterbelege werden markiert
  * **Korrekte Anzeige**: Der Zustand der Kopf-Checkbox (alle/einige/keine) berücksichtigt jetzt die Gesamtzahl der sichtbaren Zeilen
  * **Massenaktionen**: Aktionen wie „Senden", „PDF herunterladen" oder „Klärung erstellen" werden auf alle markierten Belege angewendet
</Update>

<Update rss={{ title: "Automatische Spracherkennung für Kunden" }}>
  ## Automatische Spracherkennung für Kunden

  Die Sprache eines Kunden wird jetzt automatisch anhand des Landes erkannt. Kunden aus Deutschland, Österreich und der Schweiz (DACH) erhalten automatisch **Deutsch** als Sprache, alle anderen Kunden **Englisch**. Die Sprache bestimmt, in welcher Sprache Benachrichtigungen, Rechnungen und andere Dokumente erstellt werden.

  **Verhalten bei Neuanlage:**

  * Wird keine Sprache angegeben, wird diese automatisch aus dem Ländercode ermittelt
  * DACH-Länder (DE, AT, CH) → Deutsch
  * Alle anderen Länder → Englisch
  * Eine explizit gewählte Sprache überschreibt die automatische Erkennung

  **Web-App:**
  Bei der Kundenanlage wird die Sprache automatisch vorgeschlagen, sobald ein Land ausgewählt wird. Die Auswahl kann manuell überschrieben werden.

  **API:**
  Das Feld `language` ist bei `POST /customers` jetzt optional. Wird es nicht angegeben, wird die Sprache automatisch aus dem `countryCode` ermittelt. Bei `PUT /customers` bleibt `language` weiterhin ein Pflichtfeld.

  **Bestehende Kunden:**
  Bestehende Kunden mit Sprache Deutsch und einem Nicht-DACH-Land wurden automatisch auf Englisch umgestellt, damit sie Dokumente in der richtigen Sprache erhalten.

  * [Kunde erstellen API](/api-reference/customer/create-customer)
  * [Kundeneinstellungen](/guide/customers/settings)
</Update>

<Update rss={{ title: "Mehrsprachige E-Mail-Benachrichtigungen" }}>
  ## Mehrsprachige E-Mail-Benachrichtigungen

  E-Mail-Benachrichtigungen können jetzt in **Deutsch und Englisch** versendet werden. Kunden erhalten Benachrichtigungen automatisch in der Sprache, die in ihren Stammdaten hinterlegt ist.

  **E-Mail-Vorlagen pro Sprache:**

  * Jede Benachrichtigung kann nun eine separate deutsche und englische Vorlage haben
  * Die Vorlagen werden unabhängig voneinander bearbeitet und versioniert
  * Im Vorlagen-Editor kann per Sprachreiter zwischen Deutsch und Englisch gewechselt werden

  **KI-gestützte Übersetzung:**

  * Mit einem Klick kann die deutsche Vorlage automatisch ins Englische übersetzt werden
  * Die Übersetzung berücksichtigt MJML-Struktur, Platzhalter und Template-Variablen
  * Die generierte Übersetzung kann vor dem Speichern überprüft und angepasst werden

  **Globaler Header & Footer:**

  * Header und Footer der E-Mails können ebenfalls pro Sprache konfiguriert werden
  * Systemtexte wie "Geschäftsführer" oder "E-Mail im Browser öffnen" werden automatisch übersetzt

  **Automatischer Fallback:**

  * Ist keine englische Vorlage konfiguriert, wird automatisch die deutsche Version verwendet

  * Die Sprache wird aus dem Kundenprofil ermittelt (Feld "Sprache")

  * [Benachrichtigungen konfigurieren](/guide/notifications/introduction)
</Update>

<Update rss={{ title: "Up- & Downgrades dokumentiert" }}>
  ## Up- & Downgrades dokumentiert

  Die API und Dokumentation für Up- & Downgrades ist jetzt vollständig verfügbar. Mit Produktgruppen definierst du, welche Produkte zusammengehören und wie Kunden zwischen ihnen wechseln können.

  **Features:**

  * Definiere Upgrade- und Downgrade-Pfade zwischen Produkten

  * Konfiguriere Wechselzeitpunkt (sofort oder zum Periodenende)

  * Steuere Gutschriften bei sofortigem Wechsel

  * Aktiviere Self-Service im Kundenbereich

  * [Up- & Downgrades Guide](/guide/catalogue/product-groups)

  * [API Guide: Upgrades implementieren](/api-reference/guides/implement-upgrades)

  * [API: Product Groups](/api-reference/productgroup/get-product-groups)
</Update>

<Update rss={{ title: "Globale Suche: Kunden nach Adresse finden" }}>
  ## Globale Suche: Kunden nach Adresse finden

  In der globalen Suche können Kunden jetzt auch nach Rechnungs- und Lieferadresse gesucht werden. So findest du Kunden schneller – auch wenn du nur die Adresse kennst.
</Update>

<Update rss={{ title: "Kostenlose Positionen werden sofort aktiv" }}>
  ## Kostenlose Positionen werden sofort aktiv

  Abonnement-Positionen mit einem Preis von 0,00 € werden jetzt direkt in den Status `active` überführt, anstatt im Status `pending` zu verbleiben. Dies betrifft z.B. kostenlose Add-ons oder Testprodukte.
</Update>

<Update rss={{ title: "Zahlungsmethoden-Link: Redirect URL" }}>
  ## Zahlungsmethoden-Link: Redirect URL

  Beim Erstellen eines Zahlungsmethoden-Links kann jetzt eine `redirectUrl` angegeben werden. Nach dem Hinzufügen der Zahlungsmethode wird der Kunde auf diese URL weitergeleitet – anstatt auf die Standard-Statusseite.

  ```bash theme={null}
  POST /payment-methods/link
  {
    "customer": "customer-uuid",
    "redirectUrl": "https://example.com/done"
  }
  ```

  [API-Dokumentation](/api-reference/paymentmethod/create-payment-method-link)
</Update>

<Update rss={{ title: "Abonnement-Positionen durchsuchen" }}>
  ## Abonnement-Positionen durchsuchen

  Bei Abonnements mit vielen Positionen wird jetzt eine Suchfunktion angezeigt:

  * **Phasen-Ansicht**: Ab 5 Positionen pro Phase können diese durchsucht werden
  * **Kündigung**: Bei mehr als 5 Positionen können einzelne Produkte zur Kündigung gesucht werden
  * **Aktivierung**: Bei mehr als 5 Positionen können einzelne Produkte zur Aktivierung gesucht werden
</Update>

<Update rss={{ title: "Rechnungsliste: Zusammengehörige Belege auf einen Blick" }}>
  ## Rechnungsliste: Zusammengehörige Belege auf einen Blick

  <Frame>
    <img src="https://mintcdn.com/fynnsubscriptionbilling/ltRYexyj4zhYSpW8/images/changelog/invoice-list-tree.png?fit=max&auto=format&n=ltRYexyj4zhYSpW8&q=85&s=2c6e64dda5dfea857a98ff882515e7e2" alt="Rechnungsliste mit Baumansicht" width="934" height="111" data-path="images/changelog/invoice-list-tree.png" />
  </Frame>

  Die Rechnungsliste zeigt jetzt zusammengehörige Belege in einer übersichtlichen Baumstruktur an. Gutschriften und Stornos werden direkt unter der zugehörigen Ursprungsrechnung gruppiert – so erkennst du auf einen Blick, welche Belege zusammengehören.

  * **Bessere Übersicht**: Zusammengehörige Belege sind visuell gruppiert
  * **Schnelle Navigation**: Per Klick auf den Pfeil werden verknüpfte Belege ein- oder ausgeklappt
</Update>

<Update rss={{ title: "Custom PDF Rendering" }}>
  ## Custom PDF Rendering

  ### Eigene PDF-Rendering-Engine für Rechnungen, Gutschriften & Stornos

  Mit dem neuen Custom PDF Rendering Feature können Enterprise-Kunden ihre eigene PDF-Rendering-Engine für die Generierung von Rechnungen, Gutschriften und Stornos verwenden.

  Du möchtest Belege exakt nach deinen Corporate-Design-Vorgaben gestalten – ohne Einschränkungen durch Templates? Oder branchenspezifische Anforderungen an Beleglayouts erfüllen? Mit Custom PDF Rendering hast du die volle Kontrolle über das Erscheinungsbild deiner Dokumente.

  Nutze bewährte Tools wie LaTeX, Typst oder Puppeteer, generiere mehrsprachige Belege mit eigenen Übersetzungen und füge individuelle Inhalte wie QR-Codes oder kundenspezifische Anhänge hinzu – ganz nach deinen Anforderungen.

  **Funktionsweise:**

  1. Beim Finalisieren eines Belegs wechselt dieser in den Status `STATUS_FINALIZING`
  2. Fynn sendet den Webhook `invoice.pdf.generation_requested` mit allen Belegdaten
  3. Dein System generiert das PDF mit deiner eigenen Engine
  4. Das PDF wird über `POST /api/invoices/{id}/pdf` hochgeladen
  5. Fynn bettet optional ZUGFeRD-XML ein und schließt die Finalisierung ab

  **Konfigurationsoptionen** (unter Einstellungen > Abrechnung):

  | Option                                       | Beschreibung                                                    |
  | -------------------------------------------- | --------------------------------------------------------------- |
  | Benutzerdefiniertes PDF-Rendering aktivieren | Delegiert die Beleg-PDF-Generierung an ein externes System      |
  | ZUGFeRD-XML einbetten                        | Bettet e-Rechnungsdaten automatisch in das hochgeladene PDF ein |
  | Automatischer Fallback                       | Nutzt den internen Renderer bei Timeout                         |
  | Timeout                                      | Wartezeit bis zum Fallback (1-1440 Minuten)                     |

  <Note>
    Diese Funktion ist nur im Enterprise-Plan verfügbar.
  </Note>

  [Zur Dokumentation](/integrations/custom-pdf-rendering)
</Update>

<Update rss={{ title: "Schnellerer Checkout" }}>
  ## Schnellerer Checkout

  Der Checkout-Prozess wurde deutlich beschleunigt. Kunden gelangen jetzt noch schneller zur Bestätigungsseite.
</Update>

<Update rss={{ title: "Login per E-Mail-Link" }}>
  ## Login per E-Mail-Link

  Der Login zum Kundenbereich ist jetzt noch einfacher: Kunden geben ihre E-Mail-Adresse ein und erhalten einen Login-Link per E-Mail. Ein Klick genügt – kein Code mehr nötig.

  Zusätzlich können Mitarbeiter jetzt direkt aus der Wallet eine Login-E-Mail an Kunden senden, z.B. für Support-Anfragen.

  Der Login-Link ist jetzt auch deutlich kürzer, sodass er problemlos in E-Mail-Clients und Messenger eingefügt werden kann.

  <Tip>
    Die E-Mail-Vorlage kann unter **Einstellungen > Benachrichtigungen** angepasst werden (Vorlage: "Kunden Login-Link angefordert").
  </Tip>

  * [Zur Dokumentation](/guide/customers/customer-portal#login-e-mail-an-kunden-senden)
  * [API: Login-E-Mail senden](/api-reference/customer/send-login-email)
  * [API: Login-Link anfordern](/api-reference/customerotp/request-login-link)
</Update>

<Update rss={{ title: "Customer Authentication API" }}>
  ## Customer Authentication API

  ### Authentifizierte Kundenbereich-Links per API generieren

  Mit dem neuen Endpoint `POST /customers/{id}/authenticate` können authentifizierte Links zum Kundenbereich generiert werden. Kunden können damit direkt auf ihren Kundenbereich zugreifen – ohne Login.

  **Anwendungsfälle:**

  * **Kundenbereich-Zugang**: Generiere Links für E-Mails oder Kundenportale
  * **API im Kundenkontext**: Nutze den Access-Token für API-Aufrufe im Namen des Kunden
  * **Self-Service Integration**: Binde den Kundenbereich nahtlos in deine Anwendung ein

  **Response:**

  ```json theme={null}
  {
      "data": {
          "accessToken": "eyJhbGci...",
          "refreshToken": "eyJhbGci...",
          "customerAreaLink": "https://example.customerfront.app/customer-area/login?token=abc"
      }
  }
  ```

  [Zur API-Dokumentation](/api-reference/customer/authenticate-customer)
</Update>

<Update rss={{ title: "Verbesserung: invoice.finalized Webhook" }}>
  ## Verbesserung: invoice.finalized Webhook

  ### Webhook wird jetzt nach Zahlungsinitialisierung ausgelöst

  **Bisheriges Verhalten:**

  * Der Webhook wurde ausgelöst, während die Rechnung noch im Status `STATUS_FINALIZING` war
  * Die Zahlungsabwicklung wurde erst danach initialisiert

  **Neues Verhalten:**

  * Der Webhook wird jetzt ausgelöst, **nachdem** die Zahlungsabwicklung initialisiert wurde
  * Die Rechnung hat zum Zeitpunkt des Webhooks den Status `STATUS_UNPAID`
  * Das `paymentIntent` ist bereits erstellt und in der Rechnung verfügbar

  **Vorteile:**

  * Vollständigere Rechnungsdaten im Webhook (inkl. Payment Intent)
  * Konsistenterer Zustand für nachgelagerte Systeme
  * Bessere Integration mit Zahlungsprozessen

  **Migration:**
  Falls dein System auf `status: "STATUS_FINALIZING"` prüft, aktualisiere die Prüfung auf `status: "STATUS_UNPAID"`.

  ```javascript theme={null}
  // Vorher
  if (invoice.status === 'STATUS_FINALIZING') { ... }

  // Nachher
  if (invoice.status === 'STATUS_UNPAID') { ... }
  ```
</Update>

<Update rss={{ title: "Entitlement Status Feld" }}>
  ## Entitlement Status Feld

  ### Neues Status-Feld für Subscription Entitlements

  Die Subscription Entitlements API wurde um ein neues `status`-Feld erweitert. Dieses berechnete Feld zeigt den aktuellen Zustand eines Entitlements an und ergänzt das bestehende `active`-Flag.

  **Mögliche Status-Werte:**

  * **`active`**: Das Entitlement ist aktiviert und liegt innerhalb des Gültigkeitszeitraums. Der Kunde kann das Feature nutzen.
  * **`pending`**: Das Entitlement ist aktiviert, aber das `validFrom`-Datum liegt in der Zukunft. Das Feature wird automatisch aktiv, sobald das Datum erreicht ist.
  * **`disabled`**: Das Entitlement wurde manuell deaktiviert.
  * **`expired`**: Das `validUntil`-Datum ist abgelaufen. Das Entitlement war aktiv, ist aber nicht mehr gültig.

  **Beispiel API-Response:**

  ```json theme={null}
  {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "feature": { "id": "white-labeling", "name": "White Labeling" },
      "value": "true",
      "validFrom": "2026-03-01T00:00:00Z",
      "validUntil": null,
      "active": true,
      "status": "pending"
  }
  ```

  Das neue Feld ermöglicht eine präzisere Steuerung von Features basierend auf Gültigkeitszeiträumen. Bei Status-Änderungen wird weiterhin der `entitlement.state.updated` Webhook ausgelöst.

  **Neue Query-Parameter:**

  | Parameter        | Beschreibung                                                                  |
  | ---------------- | ----------------------------------------------------------------------------- |
  | `status`         | Filtert Entitlements nach Status (`active`, `pending`, `disabled`, `expired`) |
  | `includeExpired` | Schließt abgelaufene Entitlements ein (Standard: `false`)                     |

  **Beispiele:**

  ```bash theme={null}
  # Nur aktive Entitlements abrufen
  GET /subscriptions/{id}/entitlements?status=active

  # Alle Entitlements inkl. abgelaufener abrufen
  GET /subscriptions/{id}/entitlements?includeExpired=true
  ```

  <Note>
    Expired Entitlements werden standardmäßig ausgeblendet, um die API-Antworten übersichtlich zu halten.
  </Note>

  **Betroffene API-Endpoints:**

  * [GET /subscriptions/{id}/entitlements](/api-reference/entitlement/get-subscription-entitlements)
  * [POST /subscriptions/{id}/entitlements](/api-reference/entitlement/add-subscription-entitlement)
  * [GET /subscription-items/{id}/entitlements](/api-reference/entitlement/get-subscription-item-entitlements)
  * [POST /subscription-items/{id}/entitlements](/api-reference/entitlement/add-subscription-item-entitlement)
  * [PUT /entitlements/{id}/status](/api-reference/entitlement/update-entitlement-status)

  [Zur Dokumentation](/guide/entitlements/introduction#entitlement-status)
</Update>
