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 |
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.
Vorlagen bearbeiten
Vorlage auswählen
Klicke auf Bearbeiten bei der gewünschten Vorlage (Rechnung, Storno, Gutschrift oder Mahnung) und wähle die Sprache.
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 }}.
Platzhalter nach Kategorie
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 |
Verfügbar für: Rechnung, Gutschrift, Storno
| Platzhalter | Beschreibung | Beispielwert |
|---|
customer.firstName | Vorname | Max |
customer.lastName | Nachname | Mustermann |
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 |
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 |
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.
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 |
Verfügbar für: Angebote
| Platzhalter | Beschreibung | Beispielwert |
|---|
offer.number | Angebotsnummer | AG-2026-0001 |
offer.name | Angebotsname | Enterprise Paket |
Platzhalter können in verschiedenen Formaten verwendet werden:
{{ documentNumber }}
{{ $documentNumber }}
{{documentNumber}}
{{$documentNumber}}
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 €).
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
Der Name der Positionsgruppen auf Rechnungen kann unter Einstellungen > Abrechnung 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 |
{{ 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.
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.
Custom PDF Rendering
Wenn du vollständige Kontrolle über das PDF-Layout benötigst, kannst du mit Custom PDF Rendering deine eigene PDF-Engine verwenden. Alle oben aufgeführten Platzhalter stehen auch im Webhook-Payload zur Verfügung.