> ## 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.

# Belegvorlagen & Platzhalter

> Alle verfügbaren Platzhalter für PDF-Belegvorlagen nach Dokumenttyp

Fynn generiert PDFs für verschiedene Belegtypen. Jede Vorlage unterstützt Platzhalter, die beim Erstellen des Dokuments automatisch durch die tatsächlichen Werte ersetzt werden.

## Dokumenttypen

Fynn unterstützt folgende Belegtypen mit eigenen PDF-Vorlagen:

| Dokumenttyp               | Beschreibung                           | Verfügbare Platzhalter          |
| ------------------------- | -------------------------------------- | ------------------------------- |
| **Rechnung**              | Standardrechnung                       | Beleg, Organisation, Abonnement |
| **Gutschrift**            | Gutschrift / Erstattung                | Beleg, Organisation, Abonnement |
| **Storno**                | Stornierung einer Rechnung             | Beleg, Organisation, Abonnement |
| **Mahnung**               | Mahnschreiben                          | Mahnung, Organisation           |
| **Kündigungsbestätigung** | Bestätigung einer Abonnement-Kündigung | Abonnement, Organisation        |

<Info>
  Rechnungen, Gutschriften und Stornos verwenden dieselben Platzhalter — sie basieren alle auf dem Belegmodell. Die Referenzfelder (z.B. `referencedInvoiceNumber`) sind nur bei Gutschriften und Stornos gefüllt.
</Info>

## Vorlagen bearbeiten

<Steps>
  <Step title="Einstellungen öffnen">
    Gehe zu [Einstellungen > Belege](https://app.fynn.eu/settings/invoices) und scrolle zu **Vorlagen**.
  </Step>

  <Step title="Vorlage auswählen">
    Klicke auf **Bearbeiten** bei der gewünschten Vorlage (Rechnung, Storno, Gutschrift oder Mahnung) und wähle die Sprache.
  </Step>

  <Step title="Platzhalter einfügen">
    Verwende die unten aufgeführten Platzhalter in den Feldern Titel, Einleitung, Abschlusstext und Informationsfelder. Platzhalter werden in doppelten geschweiften Klammern geschrieben: `{{ platzhalter }}`.
  </Step>
</Steps>

## Platzhalter nach Kategorie

### Beleginformationen

Verfügbar für: **Rechnung**, **Gutschrift**, **Storno**

| Platzhalter        | Beschreibung          | Beispielwert              |
| ------------------ | --------------------- | ------------------------- |
| `documentNumber`   | Belegnummer           | `RE-2026-0001`            |
| `documentDate`     | Belegdatum            | `15.02.2026`              |
| `totalGrossAmount` | Gesamtbetrag (brutto) | `119,00 €`                |
| `dueDate`          | Fälligkeitsdatum      | `01.03.2026`              |
| `dueDateInDays`    | Tage bis Fälligkeit   | `14`                      |
| `servicePeriod`    | Leistungszeitraum     | `01.02.2026 - 28.02.2026` |
| `customerNumber`   | Kundennummer          | `KD-10042`                |
| `dunningLevel`     | Mahnstufe             | `1`                       |

### Referenz-Beleg

Verfügbar für: **Gutschrift**, **Storno** (Felder der ursprünglichen Rechnung)

| Platzhalter                         | Beschreibung                           | Beispielwert   |
| ----------------------------------- | -------------------------------------- | -------------- |
| `referencedInvoiceNumber`           | Nummer der Ursprungsrechnung           | `RE-2026-0001` |
| `referencedInvoiceDate`             | Datum der Ursprungsrechnung            | `01.02.2026`   |
| `referencedInvoiceDueDate`          | Fälligkeitsdatum der Ursprungsrechnung | `15.02.2026`   |
| `referencedInvoiceTotalGrossAmount` | Bruttobetrag der Ursprungsrechnung     | `119,00 €`     |

### Zahlungsmethode

Verfügbar für: **Rechnung**, **Gutschrift**, **Storno**

| Platzhalter                 | Beschreibung                    | Beispielwert       |
| --------------------------- | ------------------------------- | ------------------ |
| `paymentMethod.displayName` | Anzeigename der Zahlungsmethode | `SEPA-Lastschrift` |
| `paymentMethod.type`        | Typ der Zahlungsmethode         | `sepa_debit`       |
| `paymentMethod.gatewayName` | Name des Payment-Gateways       | `stripe`           |
| `paymentMethod.name`        | Interner Name                   | `SEPA Hauptkonto`  |

### SEPA-Lastschrift

Verfügbar für: **Rechnung**, **Gutschrift**, **Storno** (nur bei SEPA-Zahlungsmethode)

| Platzhalter                                               | Beschreibung                            | Beispielwert                  |
| --------------------------------------------------------- | --------------------------------------- | ----------------------------- |
| `isSepa`                                                  | Ist SEPA-Lastschrift aktiv              | `true` / `false`              |
| `sepa.iban`                                               | IBAN des Kunden                         | `DE89 3704 0044 0532 0130 00` |
| `sepa.bic`                                                | BIC des Kunden                          | `COBADEFFXXX`                 |
| `sepa.accountHolder`                                      | Kontoinhaber                            | `Max Mustermann`              |
| `sepa.mandateReference`                                   | SEPA-Mandatsreferenz                    | `MNDT-2026-00001`             |
| `sepa.creditorId`                                         | Gläubiger-ID                            | `DE98ZZZ09999999999`          |
| `sepa.bankName`                                           | Bankname                                | `Commerzbank`                 |
| `sepa.amount`                                             | Einzugsbetrag                           | `119,00 €`                    |
| `paymentMethod.sepa.mandateReferenceNumber`               | Mandatsreferenznummer                   | `MNDT-2026-00001`             |
| `paymentMethod.sepa.mandateReferenceSigningDate`          | Mandats-Unterschriftsdatum              | `2025-01-15`                  |
| `paymentMethod.sepa.mandateReferenceSigningDateFormatted` | Mandats-Unterschriftsdatum (formatiert) | `15.01.2025`                  |
| `paymentMethod.sepa.iban`                                 | IBAN (formatiert)                       | `DE89 3704 0044 0532 0130 00` |
| `paymentMethod.sepa.bic`                                  | BIC                                     | `COBADEFFXXX`                 |
| `paymentMethod.sepa.bankName`                             | Bankname                                | `Commerzbank`                 |
| `paymentMethod.sepa.accountHolder`                        | Kontoinhaber                            | `Max Mustermann`              |
| `paymentMethod.sepa.isFirstSepaDebit`                     | Ersteinzug                              | `true` / `false`              |
| `paymentMethod.sepa.creditorIdentificationNumber`         | Gläubiger-ID                            | `DE98ZZZ09999999999`          |

### Überweisung

Verfügbar für: **Rechnung**, **Gutschrift**, **Storno** (nur bei Überweisung)

| Platzhalter                     | Beschreibung          | Beispielwert             |
| ------------------------------- | --------------------- | ------------------------ |
| `isBankTransfer`                | Ist Überweisung aktiv | `true` / `false`         |
| `bankTransfer.iban`             | IBAN des Empfängers   | `DE89370400440532013000` |
| `bankTransfer.bic`              | BIC des Empfängers    | `COBADEFFXXX`            |
| `bankTransfer.accountHolder`    | Kontoinhaber          | `Fynn GmbH`              |
| `bankTransfer.bankName`         | Bankname              | `Commerzbank`            |
| `bankTransfer.amount`           | Überweisungsbetrag    | `119,00 €`               |
| `bankTransfer.usageDescription` | Verwendungszweck      | `RE-2026-0001`           |

### Kundeninformationen

Verfügbar für: **Rechnung**, **Gutschrift**, **Storno**

| Platzhalter          | Beschreibung | Beispielwert |
| -------------------- | ------------ | ------------ |
| `customer.firstName` | Vorname      | `Max`        |
| `customer.lastName`  | Nachname     | `Mustermann` |

### Organisationsinformationen

Verfügbar für: **alle Dokumenttypen**

| Platzhalter                   | Beschreibung           | Beispielwert             |
| ----------------------------- | ---------------------- | ------------------------ |
| `tenant.name`                 | Handelsname            | `Fynn`                   |
| `tenant.legalCompanyName`     | Rechtlicher Firmenname | `Fynn GmbH`              |
| `tenant.street`               | Straße                 | `Barthelstr.`            |
| `tenant.housenumber`          | Hausnummer             | `4`                      |
| `tenant.zip`                  | Postleitzahl           | `50823`                  |
| `tenant.city`                 | Stadt                  | `Köln`                   |
| `tenant.countryCode`          | Ländercode             | `DE`                     |
| `tenant.email`                | E-Mail-Adresse         | `hi@fynn.eu`             |
| `tenant.phone`                | Telefonnummer          | `0221 29246377`          |
| `tenant.vatId`                | USt-IdNr.              | `DE123456789`            |
| `tenant.website`              | Website                | `https://fynn.eu`        |
| `tenant.ceo`                  | Geschäftsführer        | `Giuliano Schindler`     |
| `tenant.bankAccount.iban`     | IBAN                   | `DE89370400440532013000` |
| `tenant.bankAccount.bic`      | BIC                    | `COBADEFFXXX`            |
| `tenant.bankAccount.bankName` | Bankname               | `Commerzbank`            |

### Abonnementinformationen

Verfügbar für: **Rechnung**, **Gutschrift**, **Storno**, **Kündigungsbestätigung**

| Platzhalter                       | Beschreibung                                          | Beispielwert      |
| --------------------------------- | ----------------------------------------------------- | ----------------- |
| `customerNumber`                  | Kundennummer                                          | `KD-10042`        |
| `subscription.number`             | Abonnementnummer(n)                                   | `SUB-2026-00001`  |
| `subscription.name`               | Abonnementname(n)                                     | `Enterprise Plan` |
| `subscription.poNumber`           | Bestellnummer(n) (PO)                                 | `PO-12345`        |
| `subscription.customFields.<key>` | Wert eines benutzerdefinierten Feldes des Abonnements | `LS-2024-001`     |

<Info>
  Bei Rechnungen mit **mehreren Abonnements** werden die Werte mit Komma getrennt zusammengefasst (z.B. `SUB-001, SUB-002`). Bei manuell erstellten Rechnungen ohne Abonnement-Bezug werden die Platzhalter als leere Zeichenkette aufgelöst.
</Info>

### Mahnungsinformationen

Verfügbar für: **Mahnung**

| Platzhalter                         | Beschreibung                                                        | Beispielwert   |
| ----------------------------------- | ------------------------------------------------------------------- | -------------- |
| `documentNumber`                    | Mahnnummer                                                          | `MH-2026-0001` |
| `documentDate`                      | Datum der Mahnung                                                   | `15.03.2026`   |
| `referencedInvoiceNumber`           | Nummer der gemahnten Rechnung                                       | `RE-2026-0001` |
| `referencedInvoiceDate`             | Datum der gemahnten Rechnung                                        | `01.02.2026`   |
| `referencedInvoiceDueDate`          | Fälligkeitsdatum der gemahnten Rechnung                             | `15.02.2026`   |
| `referencedInvoiceTotalGrossAmount` | Offener Restbetrag der gemahnten Rechnung (abzüglich Teilzahlungen) | `119,00 €`     |
| `totalGrossAmount`                  | Offener Restbetrag inkl. Mahngebühren                               | `129,00 €`     |
| `dueDate`                           | Fälligkeitsdatum der Mahnung                                        | `29.03.2026`   |
| `customerNumber`                    | Kundennummer                                                        | `KD-10042`     |
| `dueDateInDays`                     | Tage bis Fälligkeit                                                 | `14`           |
| `dunningLevel`                      | Mahnstufe                                                           | `2`            |

### Angebotsinformationen

Verfügbar für: **Angebote**

| Platzhalter    | Beschreibung   | Beispielwert       |
| -------------- | -------------- | ------------------ |
| `offer.number` | Angebotsnummer | `AG-2026-0001`     |
| `offer.name`   | Angebotsname   | `Enterprise Paket` |

## Platzhalter-Format

Platzhalter können in verschiedenen Formaten verwendet werden:

```
{{ documentNumber }}
{{ $documentNumber }}
{{documentNumber}}
{{$documentNumber}}
```

<Note>
  Alle Datumsangaben werden im Format `dd.mm.yyyy` (z.B. `15.02.2026`) ausgegeben. Geldbeträge werden im deutschen Format mit Währungssymbol formatiert (z.B. `119,00 €`).
</Note>

## Platzhalter per API abrufen

Du kannst die verfügbaren Platzhalter auch programmatisch abrufen:

```
GET /ui/document-placeholder?contexts=invoice,tenant,subscription
```

Mögliche Kontexte: `invoice`, `dunning`, `tenant`, `subscription`

## Positionsgruppen-Format

Der Name der Positionsgruppen auf Rechnungen kann unter [Einstellungen > Abrechnung](https://app.fynn.eu/settings/billing) konfiguriert werden. Das Format unterstützt Variablen und Bedingungen.

### Verfügbare Variablen

| Variable                          | Beschreibung             | Beispielwert      |
| --------------------------------- | ------------------------ | ----------------- |
| `subscription.name`               | Abonnementname           | `Enterprise Plan` |
| `subscription.number`             | Abonnementnummer         | `SUB-001`         |
| `subscription.poNumber`           | Bestellnummer (PO)       | `PO-12345`        |
| `subscription.customFields.<key>` | Benutzerdefiniertes Feld | `LS-2024-001`     |

### Standardformat

```
{{ subscription.name }}{% if subscription.poNumber %} - PO Number: {{ subscription.poNumber }}{% endif %}
```

Ergebnis: `Enterprise Plan - PO Number: PO-12345` (oder nur `Enterprise Plan`, wenn keine PO-Nummer vorhanden ist).

### Beispiel mit benutzerdefiniertem Feld

```
{{ subscription.name }}{% if subscription.customFields.lieferscheinNummer is defined and subscription.customFields.lieferscheinNummer %} (LS: {{ subscription.customFields.lieferscheinNummer }}){% endif %}
```

Ergebnis: `Enterprise Plan (LS: LS-2024-001)` — oder nur `Enterprise Plan`, wenn das Feld nicht vorhanden ist.

<Warning>
  Benutzerdefinierte Felder müssen mit `is defined and` geprüft werden, da die Schlüssel nicht bei jedem Abonnement vorhanden sind. Direkte Eigenschaften wie `poNumber` können einfach mit `{% if subscription.poNumber %}` geprüft werden.
</Warning>

## Custom PDF Rendering

Wenn du vollständige Kontrolle über das PDF-Layout benötigst, kannst du mit [Custom PDF Rendering](/integrations/custom-pdf-rendering) deine eigene PDF-Engine verwenden. Alle oben aufgeführten Platzhalter stehen auch im Webhook-Payload zur Verfügung.
