Unsere Webseiten benötigen JavaScript. Dies scheint in Ihrem Browser jedoch deaktiviert zu sein.

News & Tipps zu Microsoft Access

Lesen Sie hier einige der besten Beiträge aus SmartTools Access Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Access.

Beitrag aus SmartTools Access Weekly

So erstellen Sie Teil- und Abschlagsrechnungen als E-Rechnung aus Access, Teil 3

Access 365 2024 2021 2019 2016 2013 2010

Öffentliche Auftraggeber und viele große Unternehmen nehmen E-Rechnungen nur im Format XRechnung an. Für Schlussrechnungen ist das eine Herausforderung, denn die Vorauszahlungsfelder des ZUGFeRD-Profils "Extended", die wir im zweiten Teil dieser Reihe vorgestellt haben, gibt es in XRechnungen nicht. Trotzdem müssen Sie in der Schlussrechnung die bereits gezahlten Abschläge und die darin enthaltene Umsatzsteuer absetzen, sonst weist die Rechnung die Steuer ein zweites Mal aus. Die Finanzverwaltung hat dieses Problem erkannt und lässt bis zum 30. Juni 2030 zwei Übergangslösungen zu: Entweder schreiben Sie die Einzelheiten der Abschläge in einen Freitext, oder Sie betten eine Aufstellung als Anhang in die E-Rechnung ein. In diesem dritten und letzten Teil unserer Reihe zeigen wir Ihnen beide Wege mit SmartTools E-Rechnung für Access – einschließlich der Aufstellung, die Sie direkt als Access-Bericht ausgeben.

SmartTools E-Rechnung für Access ist das Komplettpaket, mit dem Sie in Ihren Datenbanken E-Rechnungen erstellen, einlesen, anzeigen und validieren. Unterstützt werden ZUGFeRD in allen Profilen einschließlich Extended sowie XRechnung in den Syntaxen CII und UBL. Nach der automatischen Installation setzen Sie in der VBA-Entwicklungsumgebung einen Verweis auf unsere Komponente und kommen danach mit wenigen Anweisungen aus.

Im ersten Teil haben wir gezeigt, warum Schlussrechnungen als E-Rechnung schwierig sind, im zweiten Teil die Lösung mit ZUGFeRD "Extended". Wir arbeiten weiter mit demselben Beispiel: Auftrag über 500.000 € netto, zwei bezahlte Abschläge über zusammen 357.000 € brutto mit 57.000 € Umsatzsteuer.

Was die Finanzverwaltung erlaubt

Das Umsatzsteuergesetz verlangt, dass Sie in einer Endrechnung die bereits vereinnahmten Teilentgelte und die darauf entfallende Steuer absetzen (§ 14 Abs. 5 UStG). Weil das im strukturierten Teil einer XRechnung nicht vollständig möglich ist, beanstandet die Finanzverwaltung laut BMF-Schreiben vom 15. Oktober 2026 bis zum 30. Juni 2030 zwei Vorgehensweisen nicht:

  • Weg A – Freitext: Sie setzen die Abschläge im strukturierten Teil als Summe im Feld "bereits gezahlt" (BT-113) ab und geben die erforderlichen Einzelheiten zu jedem Abschlag im Freitextfeld (BT-22) an.
  • Weg B – Anhang: Sie betten eine Aufstellung der Abschläge als Anhang in die E-Rechnung ein und weisen im strukturierten Teil ausdrücklich auf diese Anlage hin.

Die Regelung gilt für alle Endrechnungen in Form einer E-Rechnung, also auch für ZUGFeRD-Rechnungen. Weg A ist in jedem Profil möglich. Für Weg B brauchen Sie Anhänge, die es bei ZUGFeRD erst ab dem Profil "EN 16931" gibt – in den Profilen "Basic" und darunter lassen sich keine Dateien einbetten. Die folgenden Beispiele zeigen wir für XRechnungen; für ZUGFeRD verwenden Sie die entsprechenden Objekte des jeweiligen Profils.

Die gemeinsame Basis

Die Schlussrechnung legen Sie zunächst wie jede andere XRechnung an – mit der Rechnungsart "Handelsrechnung" und einer oder mehreren Positionen über den vollen Auftragswert. Unabhängig vom gewählten Weg brauchen Sie dann die Bruttosumme aller Abschläge. Zusätzlich können Sie auf jede Abschlagsrechnung verweisen (BT-25 und BT-26). Diese Verweise sind rein informativ, helfen dem Empfänger aber bei der Zuordnung.

Wie in Teil 2 nehmen wir an, dass ein Recordset "rsAbschlag" die bezahlten Abschlagsrechnungen des Auftrags mit den Feldern "RgNr", "RgDatum", "Zahlungseingang", "Brutto", "USt" und "UStSatz" enthält:

objInvoice.TypeCode = DocumentTypeCode_Commercial_invoice
curSummeBrutto = 0

Do Until rsAbschlag.EOF
  'informativer Verweis auf die Abschlagsrechnung
  Set objPreceding = New _
      SmartTools_Invoicing_EN16931_XRechnung_Standard_PrecedingInvoiceDocument
  objPreceding.Id = rsAbschlag!RgNr
  objPreceding.Date = rsAbschlag!RgDatum
  objInvoice.AddPrecedingInvoice objPreceding
  Set objPreceding = Nothing

  curSummeBrutto = curSummeBrutto + rsAbschlag!Brutto
  rsAbschlag.MoveNext
Loop

'bereits gezahlter Betrag (BT-113) und Summen
objInvoice.Totals.PaidAmount = curSummeBrutto
objInvoice.UpdateVatBreakdown
objInvoice.UpdateTotals

Damit stimmen die Summen der Schlussrechnung: 500.000 € netto, 95.000 € Umsatzsteuer, 357.000 € bereits gezahlt und 238.000 € fällig. Was noch fehlt, sind die Einzelheiten zu den Abschlägen mit ihren Steuerbeträgen – und dafür wählen Sie Weg A oder Weg B.

Weg A: Einzelheiten im Freitext

Beim ersten Weg ergänzen Sie die Schleife so, dass sie zu jedem Abschlag eine Textzeile mit Nummer, Datum, Nettobetrag, Steuerbetrag und Zahlungseingang aufbaut. Nach der Schleife fügen Sie den Text als Freitext (BT-22) in die E-Rechnung ein:

'vor der Schleife: Überschrift des Freitexts
strDetails = "Abgesetzte Abschlagszahlungen (§ 14 Abs. 5 UStG):"

'in der Schleife: eine Zeile je Abschlag
strDetails = strDetails & vbCrLf & _
  "Abschlagsrechnung " & rsAbschlag!RgNr & _
  " vom " & Format(rsAbschlag!RgDatum, "dd.mm.yyyy") & _
  ": netto " & Format(rsAbschlag!Brutto - rsAbschlag!USt, "#,##0.00") & _
  " EUR, USt " & rsAbschlag!UStSatz & " % " & _
  Format(rsAbschlag!USt, "#,##0.00") & " EUR" & _
  ", gezahlt am " & Format(rsAbschlag!Zahlungseingang, "dd.mm.yyyy")

'nach der Schleife: Freitext anfügen
Set objNote = New _
    SmartTools_Invoicing_EN16931_XRechnung_Standard_InvoiceNote
objNote.Content = strDetails
objInvoice.AddNote objNote
Set objNote = Nothing

Für unser Beispiel ergibt sich dieser Freitext:

Abgesetzte Abschlagszahlungen (§ 14 Abs. 5 UStG):
Abschlagsrechnung AR-2026-031 vom 17.04.2026: netto 100.000,00 EUR,
  USt 19 % 19.000,00 EUR, gezahlt am 30.04.2026
Abschlagsrechnung AR-2026-058 vom 02.06.2026: netto 200.000,00 EUR,
  USt 19 % 38.000,00 EUR, gezahlt am 17.06.2026

Im tatsächlichen Freitext steht jeder Abschlag in einer einzigen Zeile; hier ist er nur der Lesbarkeit halber umbrochen. Ein festes Format für diesen Text schreibt die Finanzverwaltung nicht vor. Entscheidend ist, dass für jeden Abschlag die Angaben enthalten sind, die das Umsatzsteuerrecht für die Absetzung verlangt. Unser Vorschlag orientiert sich an den Beispielen im Umsatzsteuer-Anwendungserlass (Abschnitt 14.8). Stimmen Sie das Format bei Bedarf mit Ihrem Steuerberater ab.

Weg B: Aufstellung als Anhang

Der zweite Weg kommt der gewohnten Papierrechnung am nächsten: Sie erstellen eine Aufstellung der Abschläge als PDF-Datei und betten sie in die E-Rechnung ein. Diesen Weg empfiehlt auch der Bundesverband Software und Digitalisierung im Bauwesen (BVBS) in seiner Implementierungsempfehlung.

In Access liegt es nahe, die Aufstellung als Bericht anzulegen – mit einer Zeile je Abschlag (Nummer, Datum, Zahlungseingang, netto, Umsatzsteuer, brutto) und einer Summenzeile. Diesen Bericht geben Sie für den aktuellen Auftrag als PDF-Datei aus, genauso wie Sie es von Ihrer Rechnung kennen. Wir nehmen an, der Bericht heißt "rptZahlungsaufstellung" und wird über das Feld "AuftragID" gefiltert:

strPaymentFile = strInvoicePath & "Zahlungsaufstellung.pdf"

DoCmd.OpenReport ReportName:="rptZahlungsaufstellung", _
    View:=acViewPreview, WhereCondition:="[AuftragID]=" & lngAuftragID, _
    WindowMode:=acHidden
DoCmd.OutputTo ObjectType:=acOutputReport, _
    ObjectName:="rptZahlungsaufstellung", _
    OutputFormat:=acFormatPDF, OutputFile:=strPaymentFile
DoCmd.Close acReport, "rptZahlungsaufstellung"

Anschließend betten Sie die PDF-Datei als rechnungsbegründende Unterlage ein. Als Kennung verwenden Sie, wie vom BVBS empfohlen, die Nummer der Schlussrechnung:

Set objSupportingDoc = New _
    SmartTools_Invoicing_EN16931_XRechnung_Standard_AdditionalSupportingInvoiceDocument
With objSupportingDoc
  .Id = strRgNr
  .Description = "Aufstellung der Abschlagszahlungen"
  .TypeCode = DocumentTypeCode_Related_document
  .AttachedDocument.FileName = "Zahlungsaufstellung.pdf"
  .AttachedDocument.MimeCode = MimeCode_pdf
  CallByName .AttachedDocument, "Data", VbLet, _
      GetFileByteArray(strPaymentFile)
End With
objInvoice.AddAdditionalSupportingDocument objSupportingDoc
Set objSupportingDoc = Nothing

Etwas ungewöhnlich ist die letzte Zuweisung im With-Block. Die Bibliothek erwartet den Inhalt der Datei als Byte-Array. Für die Übergabe verwenden wir die eingebaute VBA-Funktion "CallByName": Sie übergeben das Objekt ("AttachedDocument"), den Namen der Eigenschaft ("Data"), die Art des Zugriffs ("VbLet" für das Setzen eines Werts) und den Wert selbst. Den Inhalt der Datei liefert diese kleine Hilfsfunktion:

Function GetFileByteArray(Filename As String) As Byte()
Dim stream As Object
Dim bResult() As Byte

  On Error GoTo GetByteArr_Error
  Set stream = CreateObject("ADODB.Stream")
  With stream
    .Type = 1 'adTypeBinary
    .Open
    .LoadFromFile Filename
    bResult = .Read
    .Close
  End With

GetByteArr_Error:
  Set stream = Nothing
  GetFileByteArray = bResult
End Function

Als Anhang sind in E-Rechnungen nur bestimmte Dateitypen zulässig: PDF, PNG, JPEG, CSV sowie Tabellen im Excel- (XLSX) oder OpenDocument-Format (ODS). Betten Sie mehrere Dateien ein, muss jede einen eigenen Dateinamen haben.

Zum Schluss fügen Sie den Hinweis auf die Anlage hinzu, den die Finanzverwaltung ausdrücklich verlangt:

Set objNote = New _
    SmartTools_Invoicing_EN16931_XRechnung_Standard_InvoiceNote
objNote.Content = "Die Aufstellung der abgesetzten Abschlagszahlungen " & _
    "einschließlich Umsatzsteuer ist als Anlage " & _
    ""Zahlungsaufstellung.pdf" beigefügt."
objInvoice.AddNote objNote
Set objNote = Nothing

WICHTIG Die Aufstellung muss in die E-Rechnung eingebettet sein. Eine PDF-Datei, die Sie lediglich zusätzlich an dieselbe E-Mail anhängen, erfüllt die Voraussetzung nicht.

Also welcher Weg passt?

  • Weg A ist der schlankere: Alle Angaben stehen in der XML-Datei, es entsteht keine zusätzliche Datei, und Sie brauchen keinen weiteren Bericht. Bei vielen Abschlägen wird der Freitext allerdings lang.
  • Weg B ist näher an der gewohnten Papierrechnung. Die Aufstellung lässt sich übersichtlich gestalten und entspricht der Empfehlung des BVBS, die im Baugewerbe verbreitet ist.
  • ZUGFeRD "Extended" aus Teil 2 bleibt die einzige vollständig strukturierte Lösung – sofern Ihr Auftraggeber dieses Profil annimmt.

Beachten Sie bei den beiden Übergangslösungen die Frist: Sie gelten bis zum 30. Juni 2030. Wie es danach weitergeht, hat die Finanzverwaltung noch nicht festgelegt – wir halten Sie auf dem Laufenden.

Vertrauen Sie dem Marktführer: SmartTools E-Rechnung für Access

Alle Beispiele in diesem Beitrag beziehen sich auf SmartTools E-Rechnung für Access, das Rundum-Sorglos-Paket für E-Rechnungen in Access-Datenbanken. Mit wenigen Zeilen VBA-Code erstellen Sie Teil-, Abschlags- und Schlussrechnungen als E-Rechnung, lesen eingehende E-Rechnungen ein, zeigen sie an und prüfen sie auf Gültigkeit. Unterstützt werden alle Formate (ZUGFeRD und XRechnung) und alle Profile des E-Rechnungsstandards einschließlich Extended. Sie erwerben eine Dauerlizenz und müssen kein Abo abschließen. Die Erweiterung kann derzeit mit 30% Aktionsrabatt bestellt werden:

Klicken Sie hier, um die News & Downloads zu bewerten