Schlussrechnung mit Abschlagsrechnungen als XRechnung und ZUGFeRD (BT-113, BG-3)

Thema
VB.NET
SDK-Mitglieder
AddDocumentNote() AddInvoiceReferencedDocument() AddProduct_Comfort() AddTradeTax() BuyerReference CreateInvoice() Document_Type InvoiceCurrencyCode Last_Error SaveXML()
Business Terms
BT-113 Vorauszahlungsbetrag BG-3 Referenz auf die vorausgegangene Rechnung BT-25 Referenz auf die vorausgegangene Rechnung BT-26 Rechnungsdatum der vorausgegangenen Rechnung BT-22 Freitext zur Rechnung BT-3 Code für den Rechnungstyp BT-112 Rechnungsgesamtbetrag einschließlich Umsatzsteuer BT-115 Fälliger Zahlungsbetrag
Codebeispiele
VB.NET, XML
Veröffentlicht

Eine Schlussrechnung rechnet die gesamte Leistung ab und zieht die bereits bezahlten Abschlagsrechnungen ab. Nach § 14 Abs. 5 UStG müssen dabei die vereinnahmten Abschläge und die darauf entfallende Umsatzsteuer abgesetzt werden. Bei einer E-Rechnung gilt das für die XML-Daten – die PDF-Ansicht allein reicht nicht. Steht in der XML nur der gezahlte Bruttobetrag, lehnen Rechnungsempfänger die Rechnung häufig mit dem Hinweis ab, die genaue Anzahlung fehle.

Diese Seite zeigt an einem vollständigen Beispiel mit Musterdaten, welche Angaben in die XML gehören und wie Sie sie mit der Aloaha ZUGFeRD SDK schreiben.

Was in die XML gehört

AngabeFeldSDK
Rechnungsart Schlussrechnung (Bau)BT-3 = 877 (optional, sonst 380)Document_Type
Bezug auf die Abschlagsrechnung: Nummer und DatumBG-3 mit BT-25, BT-26AddInvoiceReferencedDocument
Abschläge mit Netto, Umsatzsteuer und Brutto, RestzahlungBT-22 (Rechnungshinweis)AddDocumentNote
Bereits gezahlter Betrag (Summe der Abschläge, brutto)BT-113WriteTotals (Parameter Prepaid)
ZahlbetragBT-115WriteTotals (Parameter DuePayable)

Die EN 16931 kennt kein eigenes strukturiertes Feld für Netto und Steuer einer Abschlagszahlung. In XRechnung und den ZUGFeRD-Profilen bis EN 16931 (COMFORT) gehört diese Aufschlüsselung deshalb in einen Rechnungshinweis (BT-22). Die Umsatzsteueraufschlüsselung (BG-23) und die Summen bleiben die der gesamten Leistung.

Beispiel: Zahlen

Kanalsanierung, drei Positionen, 19 % Umsatzsteuer, zwei Abschlagsrechnungen (alle Daten frei erfunden):

NettoUSt 19 %Brutto
Gesamtleistung56.280,0010.693,2066.973,20
Abschlagsrechnung AR-2026-0101 vom 15.07.202620.000,003.800,0023.800,00
Abschlagsrechnung AR-2026-0102 vom 14.08.202625.000,004.750,0029.750,00
Summe Abschläge45.000,008.550,0053.550,00
Restzahlung11.280,002.143,2013.423,20

In der XML wird daraus: Bruttobetrag BT-112 = 66.973,20, gezahlter Betrag BT-113 = 53.550,00, Zahlbetrag BT-115 = 66.973,20 − 53.550,00 = 13.423,20 (Rechenregel BR-CO-16).

VB.NET

Dim LicenseKey As String = "IHR-LIZENZSCHLUESSEL"
Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, LicenseKey)

alo.CreateInvoice("SR-2026-0042", "Schlussrechnung Kanalsanierung Musterweg 12", "20260930", "102", , "", "EUR")
alo.InvoiceCurrencyCode = "EUR"
alo.Document_Type = Aloaha_ZUGFeRD.iXML.DocumentType.FinalConstructionInvoice   ' 877 = Schlussrechnung Bauleistung
alo.BuyerReference = "04011000-12345-34"                                         ' Leitweg-ID / Käuferreferenz (BT-10)

' Verkäufer, Käufer und Zahlungsdaten wie im Schnellstart
alo.WriteSeller("Muster Tiefbau GmbH", "12345", "Musterstadt", "Baustraße 1", "", "DE", "DE123456789")
' ...

' Positionen der gesamten Leistung
Dim MwStKat As String = alo.VatCategoryCode(Aloaha_ZUGFeRD.iXML.VAT_Category.StandardRate)
alo.AddProduct_Comfort("1", "", "POS-01", "120", "MTQ", "Erdaushub Rohrgraben", "inkl. Abfuhr", "", "EUR", "", "MTQ", False, "", "", "",
                       "85.00", "EUR", "1", "MTQ", "VAT", MwStKat, "19.00", "", "10200.00", "EUR")
alo.AddProduct_Comfort("2", "", "POS-02", "240", "MTR", "Rohrleitung DN 150 verlegen", "", "", "EUR", "", "MTR", False, "", "", "",
                       "145.50", "EUR", "1", "MTR", "VAT", MwStKat, "19.00", "", "34920.00", "EUR")
alo.AddProduct_Comfort("3", "", "POS-03", "180", "MTK", "Oberfläche wiederherstellen", "Asphalt", "", "EUR", "", "MTK", False, "", "", "",
                       "62.00", "EUR", "1", "MTK", "VAT", MwStKat, "19.00", "", "11160.00", "EUR")

' Umsatzsteuer der gesamten Leistung (BG-23)
alo.AddTradeTax("10693.20", "EUR", "56280.00", "EUR", "VAT", MwStKat, "19.00")

' 1. Bezug auf die Abschlagsrechnung (BG-3) – XRechnung erlaubt nur einen Verweis, siehe Hinweise
alo.AddInvoiceReferencedDocument("AR-2026-0102", "", "20260814", "102")

' 2. Aufschlüsselung aller Abschläge mit Netto und Umsatzsteuer (BT-22)
alo.AddDocumentNote("Abzüglich Abschlagsrechnung AR-2026-0101 vom 15.07.2026: netto 20.000,00 EUR, USt 19 % 3.800,00 EUR, brutto 23.800,00 EUR. " &
                    "Abzüglich Abschlagsrechnung AR-2026-0102 vom 14.08.2026: netto 25.000,00 EUR, USt 19 % 4.750,00 EUR, brutto 29.750,00 EUR. " &
                    "Summe Abschläge: netto 45.000,00 EUR, USt 8.550,00 EUR, brutto 53.550,00 EUR. " &
                    "Restzahlung: netto 11.280,00 EUR, USt 2.143,20 EUR, brutto 13.423,20 EUR.", "AAI")

' 3. Summen: Netto Positionen, Brutto, Zahlbetrag, Steuerbasis, Steuer, Abschläge, bereits gezahlt (BT-113)
alo.WriteTotals(56280.0, 66973.2, 13423.2, 56280.0, 10693.2, 0, 53550.0)

alo.SaveXML("C:\Rechnungen\SR-2026-0042.xml", LicenseKey, Aloaha_ZUGFeRD.iXML.ZUGFeRDVersion.xInvoice)
If alo.Last_Error <> "" Then Console.WriteLine(alo.Last_Error)

VBA / VB6 (COM)

alo.Document_Type = 877                                   ' Schlussrechnung Bauleistung
alo.AddInvoiceReferencedDocument "AR-2026-0102", "", "20260814", "102"
alo.AddDocumentNote "Abzüglich Abschlagsrechnung AR-2026-0101 vom 15.07.2026: netto 20.000,00 EUR, USt 19 % 3.800,00 EUR, brutto 23.800,00 EUR. " & _
                    "Abzüglich Abschlagsrechnung AR-2026-0102 vom 14.08.2026: netto 25.000,00 EUR, USt 19 % 4.750,00 EUR, brutto 29.750,00 EUR. " & _
                    "Restzahlung: netto 11.280,00 EUR, USt 2.143,20 EUR, brutto 13.423,20 EUR.", "AAI"
alo.WriteTotals 56280, 66973.2, 13423.2, 56280, 10693.2, 0, 53550

Ergebnis in der XML (Auszug)

<rsm:ExchangedDocument>
  <ram:ID>SR-2026-0042</ram:ID>
  <ram:TypeCode>877</ram:TypeCode>
  ...
  <ram:IncludedNote>
    <ram:Content>Abzüglich Abschlagsrechnung AR-2026-0101 vom 15.07.2026: netto 20.000,00 EUR, USt 19 % 3.800,00 EUR, ... Restzahlung: netto 11.280,00 EUR, USt 2.143,20 EUR, brutto 13.423,20 EUR.</ram:Content>
    <ram:SubjectCode>AAI</ram:SubjectCode>
  </ram:IncludedNote>
</rsm:ExchangedDocument>
...
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:LineTotalAmount>56280.00</ram:LineTotalAmount>
  <ram:TaxBasisTotalAmount>56280.00</ram:TaxBasisTotalAmount>
  <ram:TaxTotalAmount currencyID="EUR">10693.20</ram:TaxTotalAmount>
  <ram:GrandTotalAmount>66973.20</ram:GrandTotalAmount>
  <ram:TotalPrepaidAmount>53550.00</ram:TotalPrepaidAmount>
  <ram:DuePayableAmount>13423.20</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:InvoiceReferencedDocument>
  <ram:IssuerAssignedID>AR-2026-0102</ram:IssuerAssignedID>
  <ram:FormattedIssueDateTime>
    <qdt:DateTimeString format="102">20260814</qdt:DateTimeString>
  </ram:FormattedIssueDateTime>
</ram:InvoiceReferencedDocument>

Die mit diesem Code erzeugte XRechnung besteht die Prüfung mit dem KoSIT-Validator (XRechnung 3.0) ohne Fehler und Warnungen. So prüfen Sie Ihre eigene Datei: Wie prüfe ich meine XRechnung vor dem Versand?

Hinweise

  • Nur ein Verweis in XRechnung: XRechnung 3.0 erlaubt im Rechnungskopf nur eine vorausgegangene Rechnung (BG-3); ab Version 11.0.0.1 schreibt die SDK bei XRechnung nur den ersten Verweis (ältere Versionen schrieben alle, was zu einem Schemafehler führte). Rufen Sie AddInvoiceReferencedDocument deshalb einmal mit der letzten Abschlagsrechnung auf und führen Sie alle Abschläge im Rechnungshinweis auf. ZUGFeRD 2.5.2 / Factur-X 1.09.2 erlauben mehrere Verweise; dort schreibt die SDK alle.
  • Nicht nur brutto: Der gezahlte Betrag BT-113 ist immer brutto. Netto und Umsatzsteuer jeder Abschlagszahlung stehen deshalb im Rechnungshinweis – sonst fehlt dem Empfänger die Angabe für den Vorsteuerabzug.
  • Summen nicht kürzen: Positionen, Steueraufschlüsselung, Nettobetrag, Steuer und Bruttobetrag beziehen sich auf die gesamte Leistung. Nur BT-113 und der Zahlbetrag BT-115 berücksichtigen die Abschläge.
  • Rechnungsart: 877 (Schlussrechnung Bauleistung) ist in XRechnung zulässig. Klären Sie im Zweifel mit dem Empfänger, ob er 877 verarbeitet; 380 (Handelsrechnung) ist ebenfalls gültig.
  • ZUGFeRD EXTENDED: Im Profil EXTENDED gibt es strukturierte Felder für Abschlagszahlungen mit Steuerangaben: AddSpecifiedAdvancePayment. Für XRechnung-Empfänger ist der Rechnungshinweis der richtige Weg.
  • Diese Seite beschreibt die technische Umsetzung und ersetzt keine Steuerberatung.

Mehr zum Verweis auf frühere Rechnungen: Vorausgegangene Rechnung referenzieren (BG-3). Zu Rechnungshinweisen: Freitexte zur Rechnung und Position.

Häufige Fragen

Warum lehnt der Empfänger meine Schlussrechnung wegen der Anzahlung ab?

Meist steht in der XML nur der gezahlte Bruttobetrag (BT-113). Für den Vorsteuerabzug braucht der Empfänger die abgezogenen Abschläge mit Nettobetrag und Umsatzsteuer sowie den Bezug auf die Abschlagsrechnung. Ergänzen Sie BG-3 und einen Rechnungshinweis mit der Aufschlüsselung.

Wo trage ich Netto und Umsatzsteuer einer Abschlagszahlung ein?

In XRechnung und ZUGFeRD bis EN 16931 als Rechnungshinweis (BT-22, AddDocumentNote). Nur das Profil ZUGFeRD EXTENDED hat dafür eigene Felder (AddSpecifiedAdvancePayment).

Kann ich in einer XRechnung auf mehrere Abschlagsrechnungen verweisen?

Im Rechnungskopf nur auf eine. Verweisen Sie auf die letzte Abschlagsrechnung und nennen Sie alle Abschläge im Rechnungshinweis.

Business Terms in diesem Artikel: BT-113 BG-3 BT-25 BT-26 BT-22 BT-3 BT-112 BT-115 BG-22 BG-23