Schnellstart: ZUGFeRD-Rechnung mit VB.NET erstellen und in PDF/A-3 einbetten

Thema
VB.NET
SDK-Mitglieder
AddPaymentMeans() AddProduct_Comfort() AddTradePaymentTerms() AddTradeTax() BuyerAddressLine1 BuyerCity BuyerCountry BuyerName BuyerPostCode CreateInvoice()
Business Terms
BT-1 Rechnungsnummer BT-2 Rechnungsdatum BT-5 Code für die Rechnungswährung BT-31 Umsatzsteuer-Identifikationsnummer des Verkäufers BT-81 Code für die Zahlungsart BT-20 Zahlungsbedingungen BG-25 Rechnungsposition BG-23 Umsatzsteueraufschlüsselung
Codebeispiele
VB.NET
Veröffentlicht

Dieser Schnellstart zeigt den kompletten Weg zu einer E-Rechnung nach EN 16931 mit der Aloaha ZUGFeRD SDK: Objekt anlegen, Rechnungskopf, Verkäufer und Käufer, Zahlung, eine Position, Umsatzsteuer, Summen – dann das XML speichern und in ein PDF/A-3 einbetten. Das Beispiel ist eine Rechnung über 10 × 5,00 € netto zu 19 % Umsatzsteuer.

1. Objekt anlegen und Profil wählen

Dim LicenseKey As String = "IHR-LIZENZSCHLUESSEL"   ' Testlizenz: info@aloaha.com
' Dezimalpunkt sicherstellen
Dim culturebackup = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("de-DE")

Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, LicenseKey)   ' Profil EN 16931 (COMFORT)

Für eine XRechnung an Behörden setzen Sie zusätzlich alo.isKOSIT = True und alo.LeitwegID. Welches Profil passt, erklärt der Profilvergleich.

2. Rechnungskopf

alo.CreateInvoice("RE-2026-0001", "Rechnung gemäß Bestellung", alo.TodayDate.Document_Date, alo.TodayDate.Document_DateFormat, , "", "EUR")
alo.InvoiceCurrencyCode = "EUR"                          ' BT-5
alo.Document_Type = Aloaha_ZUGFeRD.iXML.DocumentType.Invoice

3. Verkäufer und Käufer

' Verkäufer mit Umsatzsteuer-ID (BT-31)
alo.WriteSeller("Muster GmbH", "20095", "Hamburg", "Hauptstr. 1", "", "DE", "DE123456789")
alo.WriteSellerContactPerson("Erika Muster", "Vertrieb", "vertrieb@muster.de", "+49 40 123456")
alo.set_URIUniversalCommunication("rechnung@muster.de", "EM", True)    ' BT-34

' Käufer
alo.BuyerName = "Kunde AG"
alo.BuyerAddressLine1 = "Marktplatz 5"
alo.BuyerPostCode = "80331"
alo.BuyerCity = "München"
alo.BuyerCountry = "DE"
alo.set_URIUniversalCommunication("einkauf@kunde.de", "EM", False)     ' BT-49

4. Zahlung

alo.AddPaymentMeans(alo.PaymentMeansCode(Aloaha_ZUGFeRD.iXML.Payment_Means.SEPA_credit_transfer), "SEPA-Überweisung", "DE02120300000000202051", "Muster GmbH", "", "BYLADEM1001", "", "", False)
alo.AddTradePaymentTerms("Zahlbar innerhalb 30 Tagen netto")       ' BT-20
alo.PaymentReference = "RE-2026-0001"

5. Rechnungsposition

Dim MwStKat As String = alo.VatCategoryCode(Aloaha_ZUGFeRD.iXML.VAT_Category.StandardRate)
alo.AddProduct_Comfort("1", "", "ART-100", "10.00", "C62", "Papier A4", "500 Blatt",
                       "", "EUR", "", "C62", False, "", "", "", "5.00", "EUR", "1.00",
                       "C62", "VAT", MwStKat, "19.00", "", "50.00", "EUR", "", "")

Mengeneinheiten sind fest definiert (UN/ECE Recommendation 20, z. B. C62 = Stück). Alle Parameter von AddProduct_Comfort erklärt der Artikel Der Rechnung Posten mit AddProduct_Comfort hinzufügen.

6. Umsatzsteuer und Summen

' Umsatzsteueraufschlüsselung (BG-23): 19 % auf 50,00 €
alo.AddTradeTax("9.50", "EUR", "50.00", "EUR", "VAT", MwStKat, "19.00")

' Summen (BG-22): Netto, Brutto, Zahlbetrag, Steuerbasis, Steuer
alo.WriteTotals("50.00", "59.50", "59.50", "50.00", "9.50")

7. XML speichern und in PDF/A-3 einbetten

alo.SaveXML("C:\Rechnungen\RE-2026-0001.xml")
If alo.Last_Error <> "" Then Console.WriteLine(alo.Last_Error)

' Hybride ZUGFeRD-Rechnung: XML in Ihre bestehende PDF-Rechnung einbetten
alo.MergeXMLIntoPDF("C:\Rechnungen\RE-2026-0001.xml", "C:\Rechnungen\RE-2026-0001.pdf",
                    "C:\Rechnungen\RE-2026-0001_zugferd.pdf", True, "", LicenseKey)

System.Threading.Thread.CurrentThread.CurrentCulture = culturebackup

Haben Sie noch kein PDF, erzeugen Sie es mit CreateDocFromXML direkt aus dem XML und einer DOCX-Vorlage – siehe ZUGFeRD-XML mit DOCX-Template zusammenführen. Ein umfangreiches Beispiel mit Rabatten und zwei Steuersätzen zeigt der Beispielcode für XRechnung.

Häufige Fragen

Funktioniert das auch mit C# oder VB6?

Ja. Die Aloaha ZUGFeRD SDK ist eine .NET-Bibliothek mit COM-Schnittstelle; dieselben Methoden stehen in C#, VB.NET, VB6/VBA und anderen COM-fähigen Sprachen zur Verfügung.

Welches Profil sollte ich verwenden?

Für die meisten B2B-Rechnungen das Profil EN 16931 (COMFORT), für Behörden die XRechnung (isKOSIT = True plus Leitweg-ID).

Wie finde ich Fehler in der erzeugten Rechnung?

Nach SaveXML enthält Last_Error eine Fehlermeldung, falls die Datei nicht erzeugt werden konnte. Zur fachlichen Prüfung validieren Sie das XML gegen die EN-16931- bzw. XRechnung-Regeln.

Business Terms in diesem Artikel: BT-1 BT-2 BT-5 BT-31 BT-81 BT-20 BG-25 BG-23 BG-22 BT-34 BT-49 BT-10