Rechnungsbeträge berechnen
Der Service Task „Rechnungsbeträge berechnen" ergänzt Rechnungsdaten automatisch um alle relevanten Beträge. Aus den Einzelpositionen (Menge, Einzelpreis netto, Umsatzsteuersatz) werden Positionssummen, Umsatzsteuer und Gesamtbeträge berechnet. So können Rechnungen vollständig automatisiert erstellt werden, ohne dass Beträge manuell kalkuliert werden müssen.
Funktionsweise
Der Task durchläuft alle Rechnungspositionen und berechnet:
- Pro Position: Nettosumme, Bruttosumme, Umsatzsteuer
- Aggregiert: Gesamtnetto, Gesamtbrutto, Umsatzsteuer nach Steuersatz (0 %, 7 %, 19 %)
Die berechneten Werte werden direkt in das Rechnungsobjekt geschrieben und stehen für nachfolgende Schritte (z. B. PDF-Erstellung oder E-Rechnung) zur Verfügung.
Input-Parameter
Als Eingabe wird das Rechnungsobjekt mit den Positionen übergeben:
{
"vat_rounding": "per_rate",
"app_invoice_items_custom": [
{
"app_item_description": "Beratung",
"app_amount": 10,
"app_item_price_net": 150.00,
"app_vat_percentage": 19,
"app_unit": "Stunden"
},
{
"app_item_description": "Material",
"app_amount": 5,
"app_item_price_net": 25.00,
"app_vat_percentage": 7,
"app_unit": "Stück"
}
]
}
Erläuterung:
vat_rounding: Rundungsverfahren der Umsatzsteuer, siehe Rundung der Umsatzsteuer.app_invoice_items_custom: Liste der Rechnungspositionen.app_amount: Menge der jeweiligen Position.app_item_price_net: Einzelpreis netto.app_vat_percentage: Umsatzsteuersatz (0, 7 oder 19).app_unit: Mengeneinheit (z. B. „Stunden", „Stück", „Pauschal").
Output
Das Rechnungsobjekt wird um berechnete Felder erweitert:
Pro Position:
| Feld | Beschreibung |
|---|---|
app_invoice_item_no |
Laufende Positionsnummer (1, 2, 3, …) |
app_items_total_sum_net |
Nettosumme der Position (Menge × Einzelpreis) |
app_items_total_sum_gross |
Bruttosumme der Position |
app_item_price_gross |
Einzelpreis brutto |
Aggregierte Felder:
| Feld | Beschreibung |
|---|---|
app_net_total |
Gesamtsumme netto |
app_gross_total |
Gesamtsumme brutto |
app_vat_total |
Gesamte Umsatzsteuer |
app_vat_nineteen |
Umsatzsteuer 19 % (Betrag) |
app_vat_seven |
Umsatzsteuer 7 % (Betrag) |
app_vat_zero |
Umsatzsteuer 0 % (Betrag) |
app_has_vat_nineteen |
true, wenn Positionen mit 19 % vorhanden |
app_has_vat_seven |
true, wenn Positionen mit 7 % vorhanden |
app_has_vat_zero |
true, wenn Positionen mit 0 % vorhanden |
app_has_reverse_charge |
true, wenn die Rechnung nach § 13b UStG ohne Umsatzsteuer gestellt wird |
app_net_reverse_charge |
Nettobetrag bei Reverse Charge (sonst 0) |
Beispiel
Eine Rechnung enthält zwei Positionen: 10 Stunden Beratung à 150,00 € netto (19 %) und 5 Stück Material à 25,00 € netto (7 %). Der Service berechnet automatisch: Netto gesamt 1.625,00 €, USt. 19 %: 285,00 €, USt. 7 %: 8,75 €, Brutto gesamt 1.918,75 €.
JSONata-Beispiel
{
"vat_rounding": "per_rate",
"app_invoice_items_custom": $.app_invoice_items_custom
}
Alle weiteren Rechnungsfelder (Rechnungsnummer, Datum, Empfänger usw.) können zusätzlich übergeben werden — sie werden unverändert durchgereicht.
Rundung der Umsatzsteuer
Wie die Umsatzsteuer gerundet wird, legt das Feld app_vat_rounding (oder vat_rounding) fest:
| Wert | Berechnung |
|---|---|
per_rate |
Pro Position wird die Nettosumme (Menge × Einzelpreis) auf den Cent gerundet. Die Umsatzsteuer wird je Steuersatz einmal aus der Summe dieser Nettosummen berechnet und gerundet. So rechnet die Norm EN 16931, auf der ZUGFeRD und XRechnung beruhen. |
| (leer) | Bisheriges Verfahren: Die Umsatzsteuer wird je Einheit gerundet und mit der Menge multipliziert. Abgekündigt und wird am 01.01.2027 entfernt. Danach rechnet der Service immer wie bei per_rate. |
Andere Werte führen zu einer Fehlermeldung.
Bisheriges Verfahren bis 01.01.2027 umstellen
Beim bisherigen Verfahren vervielfacht sich der Rundungsfehler einer Einheit mit der Menge. Beispiel: 1.000 Stück à 0,99 € netto mit 19 % ergeben 190,00 € Umsatzsteuer statt 188,10 €. Weicht die Umsatzsteuer eines Steuersatzes um 1,00 € oder mehr ab, ist die E-Rechnung ungültig (Prüfregeln BR-S-09 und BR-CO-17) und kann vom Empfänger abgelehnt werden.
Was sich beim Umstellen ändert:
- Die meisten Rechnungen bleiben centgenau gleich.
- Bei mehreren Positionen mit demselben Steuersatz oder bei Mengen über 1 kann sich der Bruttobetrag um einen Cent ändern, etwa 89,51 € statt 89,50 €. Das betrifft vor allem Nettopreise, die aus einem gewünschten Bruttopreis zurückgerechnet wurden.
- Umsatzsteuer und Bruttosumme je Position werden weiterhin für die PDF-Vorlage berechnet. Ihre Summe kann um einen Cent vom Gesamtbetrag abweichen; maßgeblich ist der Gesamtbetrag.
- Bereits erstellte Rechnungen bleiben unverändert.
Umstellen: In den Rechnungsdaten das Feld vat_rounding (oder app_vat_rounding) auf per_rate setzen – beim einzelnen Service im JSONata-Eingang wie im Beispiel, bei Komplette E-Rechnung erstellen alternativ über die Eingangs-Zuordnung des Service Tasks.
Hinweise
- Unterstützt die Umsatzsteuersätze 0 %, 7 % und 19 %. Andere Steuersätze führen zu einer Fehlermeldung.
- Ist die Steuerart
app_tax_mode(odertax_mode) aufreverse_charge_13bgesetzt, werden alle Positionen mit 0 % berechnet, unabhängig vom hinterlegten Steuersatz. Details unter Reverse Charge (§ 13b UStG) in E-Rechnungen. - Alle Beträge werden kaufmännisch auf zwei Dezimalstellen gerundet. Wie die Umsatzsteuer gerundet wird, steht unter Rundung der Umsatzsteuer.
- Neben frei definierten Positionen (
app_invoice_items_custom) werden auch Artikelpositionen (app_invoice_items_articles) unterstützt — beide Typen können in einer Rechnung kombiniert werden. - Die Positionsnummern werden fortlaufend vergeben: zuerst die freien Positionen, dann die Artikelpositionen.
Tipp
Dieser Service wird typischerweise als erster Schritt in einer Rechnungs-Pipeline eingesetzt — gefolgt von PDF aus Handlebars-Template erstellen und optional E-Rechnung erstellen (ZUGFeRD). Alternativ kann die gesamte Kette mit dem Service Komplette E-Rechnung erstellen in einem einzigen Schritt ausgeführt werden.