Rechnungstypen & Rechnungs-Workflow
Wenn du Rechnungen an Aussteller, Dienstleister oder andere Partner deines Festivals stellen willst, bietet dir festiware ein eigenes Rechnungsmodul mit automatischer Positionsberechnung, Nummernvergabe und Statusverwaltung.
Früher musste man solche Rechnungen über Vertragsarten abbilden — ein Umweg, der schnell umständlich wurde. Das Rechnungsmodul wurde speziell für diesen Anwendungsfall entwickelt: Du definierst einmal eine Rechnungsart mit Positionen, Steuersätzen und Bedingungen, und festiware erzeugt daraus automatisch die fertigen Rechnungen für jede Gruppe oder Person.
Es geht hier ausschließlich um B2B-Rechnungen an Aussteller, Dienstleister und Partner. Wenn du nach Rechnungen aus dem Ticket-Shop suchst, findest du die unter Wo kann ich Rechnungen aus dem Shop herunterladen?.
Voraussetzungen
Bevor du mit Rechnungen arbeiten kannst, müssen einige Einstellungen im Projekt konfiguriert sein.
B2B-Rechnungen aktivieren
Öffne die Projekteinstellungen und aktiviere die Option B2B-Rechnungen aktiviert. Erst dann erscheinen die Menüpunkte Rechnungsarten und Rechnungen im Admin-Bereich.
Rechnungseinstellungen konfigurieren
In den Projekteinstellungen (Tab Shop) findest du folgende Felder, die für die Rechnungserstellung benötigt werden:

Nummernkreis: - Rechnungs-Präfix — Wird vor jede Rechnungsnummer gesetzt (z.B. "RE-") - Rechnungs-Anfangsnummer — Die erste vergebene Nummer - Rechnungs-Nummernlänge — Wie viele Stellen die Nummer haben soll (wird mit führenden Nullen aufgefüllt)
Verkäufer-Daten: - Name des Verkäufers, Straße, PLZ, Stadt, Land - USt-IdNr. — Wird für die Reverse-Charge-Erkennung und das ZUGFeRD-XML benötigt - E-Mail des Verkäufers
Zahlungsdaten: - Zahlungsempfänger - IBAN - Zahlungsziel (Tage) — Standardmäßig 14 Tage
Weitere Einstellungen: - Ort der Leistung (Land) — Wird für die Reverse-Charge-Logik verwendet. Falls nicht gesetzt, wird das Land aus den Systemeinstellungen übernommen. - Exportformat für Rechnungen — Bestimmt, welche Exportformate bei der Rechnungserstellung zur Verfügung stehen (siehe Abschnitt ZUGFeRD / Factur-X)
Ohne konfiguriertes Präfix, Startnummer und Nummernlänge können keine Rechnungen erstellt werden. festiware zeigt in diesem Fall eine Fehlermeldung an.
Projektwährung
Die Währung, in der die Rechnung erstellt wird, ergibt sich aus der Projektwährung. Neue Rechnungen übernehmen diese automatisch; bestehende Rechnungen behalten ihre ursprüngliche Währung. Für den Lexoffice-Export muss die Projektwährung EUR sein.
Rechnungsarten anlegen
Eine Rechnungsart ist eine Vorlage, die festlegt, welche Positionen auf einer Rechnung erscheinen und wie sie berechnet werden. Du kannst beliebig viele Rechnungsarten pro Projekt anlegen — z.B. eine für Standgebühren, eine für Stromkosten, eine für Cateringpauschalen.

Grundeinstellungen

- Name — Ein beschreibender Name (z.B. "Standgebühr 2026")
- Präfix — Ein eigenes Kürzel, das vor die Rechnungsnummer gesetzt wird (z.B. "STD"). Maximal 5 Zeichen. Das Präfix muss projektübergreifend eindeutig sein.
- Art des Rechnungspartners — Für welchen Typ (z.B. Aussteller, Besucher) diese Rechnungsart gilt
- Startnummer — Optionale Startnummer für die erste Rechnung dieser Art. Überschreibt die allgemeine Rechnungs-Anfangsnummer aus den Projekteinstellungen.
- Beschreibung — Freitextfeld zur internen Dokumentation
- Aktiv — Nur aktive Rechnungsarten können für neue Rechnungen verwendet werden
Rechnungspositionen
Das Herzstück jeder Rechnungsart sind die Rechnungspositionen. Über den Button Hinzufügen legst du einzelne Positionen an, die jeweils folgende Felder haben:
- Name — Bezeichnung der Position auf der Rechnung
- Beschreibung — Wird auf der Rechnung unter dem Namen angezeigt. Unterstützt Platzhalter wie
{{application.name}}oder{{person.firstname}} - Bedingung (if) — JSON-Struktur, die steuert, ob die Position auf der Rechnung erscheint (z.B.
{"field": "application.booth_row", "operator": ">", "value": 0}) - Preis — Einzelpreis als Zahl oder als Feldname (z.B.
application.sonderstandpreis) - Preisformel — Für komplexe Berechnungen als JSON-Array (z.B.
["application.discount", "*", -1]). Entweder Preis+Faktor oder Preisformel — nicht beides. - Faktor — Multiplikator als Zahl oder Feldname (z.B.
application.standgroesse) - Einheit — z.B. "Stk.", "m²", "Pauschale"
- Steuersatz — In Prozent (0 oder 1–99)
- Typ — Bestimmt, wie der Preis interpretiert wird:
- Preis (Netto) — Standardfall, der Preis ist ein Nettobetrag
- Preis (Brutto) — Der Preis ist ein Bruttobetrag, Netto wird rückgerechnet
- Abzug / Rabatt — Wird als Rabattposition ausgewiesen
- Aufpreis — Zusätzliche Gebühr
- Steuer — Reine Steuerposition
- Reihenfolge — Sortierung der Positionen auf der Rechnung
- Aktiv — Inaktive Positionen werden bei der Rechnungserstellung übersprungen
- Währung — wird automatisch aus der Projektwährung übernommen und kann pro Position nicht mehr manuell gesetzt werden. Historisch gesetzte Werte bleiben zur Nachvollziehbarkeit erhalten.
Einleitungs- und Schlusstext
Unterhalb der Positionen kannst du einen Einleitungstext und Schlusstext eingeben, die auf der Rechnung ober- bzw. unterhalb der Positionstabelle erscheinen. Beide Felder unterstützen:
- Markdown — Fettschrift mit
**Text**, Zeilenumbrüche, etc. - Twig-Variablen — z.B.
{{application.name}}oder{{data.totalAmount}}für berechnete Werte
Test-Modus
Beim Anlegen einer Rechnungsart kannst du den Test-Modus aktivieren. Rechnungen, die mit einer Test-Rechnungsart erstellt werden, erhalten ein spezielles Präfix ("TESTRECHNUNG") und können zum Prüfen der Positionsberechnung genutzt werden.
Der Test-Modus kann nach dem Anlegen nicht mehr (re-)aktiviert werden. Erstelle im Zweifelsfall eine eigene Rechnungsart zum Testen.
Import und Export
Rechnungsarten können als YAML- oder JSON-Datei exportiert und importiert werden. Das ist praktisch, um eine bewährte Rechnungsart in ein anderes Projekt zu übertragen. Die Aktion Rechnungsart importieren findest du als Button oberhalb der Rechnungsarten-Liste, den Export als Aktion auf der Detailseite einer Rechnungsart.
Rechnungen erstellen
Rechnungen werden nicht im Rechnungsmodul selbst erstellt, sondern direkt aus Gruppen (Bewerbungen) oder Personen heraus.
Schritt für Schritt
- Gehe zur Gruppen- oder Personen-Übersicht
- Wähle eine oder mehrere Einträge aus
- Klicke auf die Aktion Rechnung erstellen
- Wähle die gewünschte Rechnungsart aus
- Optional: Aktiviere Als Testrechnung erstellen, um zunächst einen Entwurf zu erzeugen (siehe Test-Modus)
- Optional: Aktiviere Rechnung direkt versenden, um die Rechnung sofort per E-Mail zuzustellen
- Bestätige die Aktion
festiware berechnet daraufhin automatisch alle Positionen basierend auf den Daten der jeweiligen Gruppe/Person und den in der Rechnungsart definierten Regeln. Nur Positionen, deren Bedingungen erfüllt sind und die aktiv sind, landen auf der Rechnung.
Wenn für einen Eintrag keine einzige Position berechnet werden kann (z.B. weil alle Bedingungen nicht erfüllt sind), wird keine Rechnung erzeugt. festiware zeigt dir in diesem Fall an, welche Einträge übersprungen wurden.
Umgang mit vorhandenen Rechnungen
Wenn für ausgewählte Einträge bereits aktive Rechnungen derselben Rechnungsart existieren, fragt festiware, wie damit umgegangen werden soll:
- Keine neue Rechnung anlegen (Standard) — Die vorhandenen Rechnungen bleiben bestehen, für diese Einträge wird nichts erstellt
- Neue Rechnung zusätzlich anlegen — Es wird eine weitere Rechnung erstellt, unabhängig von der bestehenden
Rechnungs-Workflow
Jede Rechnung durchläuft einen definierten Lebenszyklus. Die möglichen Status-Übergänge hängen vom Dokumenttyp ab.
Status-Übersicht
| Status | Bedeutung |
|---|---|
| Entwurf | Testrechnung mit vorläufiger Nummer. Kann gelöscht oder finalisiert werden. |
| Offen | Offizielle Rechnung, Zahlung ausstehend. Kann als bezahlt markiert oder storniert werden. |
| Bezahlt | Zahlung eingegangen. Endstatus. |
| Storniert / Ungültig | Rechnung wurde storniert. Eine Stornorechnung wurde automatisch erstellt. |
| Gutgeschrieben | Eine Gutschrift wurde für diese Rechnung erstellt. |
| Erstattet | Gutschrift wurde erstattet. |
Aktionen im Workflow
Testrechnung(en) finalisieren Wandelt einen Entwurf in eine offizielle Rechnung um. Dabei erhält die Rechnung eine neue, offizielle Rechnungsnummer aus dem regulären Nummernkreis. Die Testrechnung wird durch die finalisierte Rechnung ersetzt (siehe auch Test-Modus).
Als bezahlt markieren Setzt den Status einer offenen Rechnung auf "Bezahlt".
Rechnung stornieren Setzt die Originalrechnung auf "Storniert / Ungültig" und erzeugt automatisch eine zugehörige Stornorechnung mit eigener Nummer. Optional kann die Stornorechnung direkt per E-Mail versendet werden.
Löschen Nur Entwürfe können gelöscht werden. Offiziell vergebene Rechnungen lassen sich nicht löschen — stattdessen muss storniert werden.
Rechnungen versenden und herunterladen
Per E-Mail versenden
Über die Aktion Per E-Mail versenden auf der Rechnungsübersicht kannst du eine oder mehrere Rechnungen gleichzeitig per E-Mail verschicken. Die Rechnung wird als PDF-Anhang versendet.
- Bei einzelnen Rechnungen wird die E-Mail sofort verschickt
- Bei großen Mengen (ab 25 Rechnungen) wird der Versand in eine Warteschlange gestellt — du erhältst nur bei Fehlern eine Benachrichtigung
- Falls der Empfänger mehrere E-Mail-Adressen hat, kannst du auswählen, an welche Adressen die Rechnung geschickt werden soll
Testrechnungen können ebenfalls versendet werden. In diesem Fall erscheint eine zusätzliche Sicherheitsabfrage.
PDF herunterladen
Über die Aktion PDF herunterladen kannst du Rechnungen als PDF-Datei herunterladen. Bei mehreren Rechnungen werden die PDFs gebündelt und du erhältst den Download-Link per E-Mail.
Rechnungsübersicht

Unter Rechnungen im Admin-Bereich siehst du alle B2B-Rechnungen des aktuellen Projekts (Gruppen- und Personen-Rechnungen). Die Übersicht zeigt Rechnungsnummer, Typ, Status, Beträge und den Rechnungspartner. Du kannst nach Status filtern und einzelne Rechnungen aufklappen, um alle Positionen und Details zu sehen.
Reverse Charge & internationale Rechnungen
festiware erkennt beim Erstellen einer Rechnung automatisch, welches Umsatzsteuer-Szenario zutrifft, und passt die Rechnung entsprechend an.
Szenarien
| Szenario | Bedingung | Auswirkung |
|---|---|---|
| Inland | Empfänger im selben Land wie der Leistungsort | Normale Umsatzsteuer |
| EU B2B Reverse Charge | Empfänger in anderem EU-Land, ist Unternehmen, hat gültige USt-IdNr. | 0% MwSt., Hinweistext "Steuerschuldnerschaft des Leistungsempfängers (§13b UStG)" |
| EU B2C | Empfänger in anderem EU-Land, aber kein Unternehmen oder keine gültige USt-IdNr. | Normale Umsatzsteuer |
| Drittland | Empfänger außerhalb der EU | 0% MwSt., Hinweistext "Nicht im Inland steuerbar (§3a Abs. 2 UStG)" |
Voraussetzungen für die automatische Erkennung
Damit die Erkennung funktioniert, müssen folgende Daten gepflegt sein:
- Beim Verkäufer (Projekteinstellungen): USt-IdNr. und Land
- Beim Empfänger (Person): Land, und für Reverse Charge zusätzlich Firmenname und USt-IdNr.
festiware validiert das Format der USt-IdNr. anhand länderspezifischer Muster (z.B. DE + 9 Ziffern). Eine inhaltliche Prüfung über VIES findet nicht statt — die ist separat durchzuführen.
Die erkannten Daten (Szenario, Länder, USt-IdNr.) werden mit der Rechnung gespeichert und können in der Rechnungsdetailansicht nachvollzogen werden.
Lexware-Synchronisation
Rechnungen können über die Aktion Mit Lexware synchronisieren an Lexware Office übertragen werden. Dabei werden sowohl der Rechnungsempfänger als auch die Rechnung selbst in Lexware angelegt oder aktualisiert.
Die Lexware-Synchronisation funktioniert ausschließlich mit Projekten in EUR, da Lexware Office nur Euro-Buchungen unterstützt. Ist die Projektwährung eine andere als EUR, wird die Aktion Mit Lexware synchronisieren automatisch deaktiviert und ein entsprechender Hinweis in den Projekteinstellungen sowie in der Rechnungsdetailansicht eingeblendet. Wechselt die Projektwährung zurück auf EUR, steht der Export wieder zur Verfügung.
Tipps und Hinweise
- Rechnungsarten testen: Nutze den Test-Modus, um die Positionsberechnung zu prüfen, bevor du offizielle Rechnungen erstellst. Finalisiere die Testrechnungen erst, wenn alles passt.
- Platzhalter nutzen: In Beschreibungen, Einleitungs- und Schlusstexten kannst du mit
{{application.feldname}}oder{{person.feldname}}auf Daten des Rechnungsempfängers zugreifen. - Dynamische Preise: Wenn der Preis oder Faktor einer Position vom Empfänger abhängt (z.B. individuelle Standgröße), trage den Feldnamen statt einer festen Zahl ein.
- Bedingungen: Über das if-Feld kannst du Positionen nur dann erscheinen lassen, wenn bestimmte Kriterien erfüllt sind — z.B. nur für Aussteller mit Stromanschluss.
- Nummernkreise trennen: Jede Rechnungsart kann einen eigenen Präfix und eine eigene Startnummer haben. So bleiben die Nummernkreise für verschiedene Rechnungstypen sauber getrennt.