Zum Inhalt

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 (oder tax_mode) auf reverse_charge_13b gesetzt, 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.