„E-Rechnung bereit für den Handel“: Alle 39 VeR-Pflichtfelder mit dem Aloaha ZUGFeRD SDK

Thema
VB.NET
SDK-Mitglieder
ActualDeliveryDate_102 Add_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount() addApplicableProductCharacteristics() AddBuyerAssignedID() AddBuyerGlobalID() AddBuyerTAX() AddDocumentNote() AddPaymentMeans() AddProduct_Comfort() AddReceivableSpecifiedTradeAccountingAccount()
Business Terms
BT-29 Kennung des Verkäufers BT-46 Kennung des Käufers BT-13 Bestellreferenz BT-16 Lieferavisreferenz BT-71 Kennung des Lieferorts BT-157 Kennung eines Artikels nach registriertem Schema BT-155 Artikelkennung des Verkäufers BT-156 Artikelkennung des Käufers
Codebeispiele
VB.NET
Veröffentlicht

Kurz: Der Verband elektronische Rechnung (VeR) hat für die Initiative „E-Rechnung bereit für den Handel“ 39 Felder der EN 16931 festgelegt, die Handelsunternehmen in jeder E-Rechnung erwarten – darunter GLN von Verkäufer, Käufer und Lieferort, Bestell- und Lieferscheinnummer, GTIN sowie Artikelnummern von Verkäufer und Käufer. Das Aloaha ZUGFeRD SDK schreibt alle 39 Felder, sowohl in der XRechnung als auch in ZUGFeRD / Factur-X EN 16931. Die Tabelle zeigt für jedes Feld die passende SDK-Methode.

Was ist das VeR-Siegel?

Von den 39 Feldern sind 11 ohnehin gesetzliche bzw. bedingte Pflichtangaben einer E-Rechnung (z. B. Leistungsdatum, Bankverbindung, Steuerbefreiungsgrund). 28 Felder gehen darüber hinaus und sind für automatisierte Handelsprozesse wichtig: eindeutige Identifikatoren für Geschäftspartner und Lieferorte, Bestell- und Lieferscheininformationen und Artikelkennungen. Der VeR vergibt dafür an E-Rechnungs-Lösungen das Qualitätssiegel „E-Rechnung bereit für den Handel“ – nach Antrag und einem Prüf- und Testverfahren, nur für Funktionen, die produktiv verfügbar sind. Quelle: Pflichtfelder-Empfehlung des VeR (PDF).

Alle 39 Felder und die SDK-Methoden

FeldBezeichnung (VeR-Liste)SDKHinweis
BT-29Kennung / Globaler Identifier des VerkäufersSellerID / AddSellerGlobalIDz. B. GLN mit Schema 0088
BT-33Sonstige rechtliche Informationen des VerkäufersSellerDescriptionSitz, Registergericht, HRB
BT-41Ansprechpartner VerkäuferWriteSellerContactPersonName oder Abteilung, nicht beides
BT-42Telefonnummer des AnsprechpartnersWriteSellerContactPerson
BT-43E-Mail-Adresse des AnsprechpartnersWriteSellerContactPerson
BT-46Kennung / Globaler Identifier des KäufersWriteBuyer (Kundennummer) / AddBuyerGlobalIDID oder GLN, nicht beides
BT-48USt-IdNr. des KäufersAddBuyerTAXSchema VA
BT-13BestellnummerAddBuyerAssignedID
BT-70Firmenname des Waren- bzw. LeistungsempfängersWriteShipToTradeParty
BT-71Identifier / Globaler Identifier des LieferortsWriteShipToTradePartyLocationID oder GLN, nicht beides
BT-75Straße und Hausnummer – Adresszeile 1WriteShipToTradeParty
BT-76Adresszeile 2WriteShipToTradeParty
BT-77Stadt des LeistungsempfängersWriteShipToTradeParty
BT-78PLZ des LeistungsempfängersWriteShipToTradeParty
BT-80Land des LeistungsempfängersWriteShipToTradeParty
BT-19Buchungsreferenz des KäufersAddReceivableSpecifiedTradeAccountingAccount
BT-22Freitext zur RechnungAddDocumentNote
BT-21Code zum FreitextAddDocumentNotez. B. AAI, REG
BT-16LieferscheinnummerSetDespatchAdviceReferencedDocumentnicht AddDeliveryNote (EXTENDED)
BT-72Liefer-/LeistungsdatumActualDeliveryDate_102
BT-73Beginn der RechnungsperiodeWriteBillingPeriod
BT-74Ende der RechnungsperiodeWriteBillingPeriod
BT-99Zuschlag auf DokumentebeneAddTradeAllowanceChargeChargeIndicator = True
BT-104Text zum ZuschlagAddTradeAllowanceChargeParameter Reason
BT-105Code zum ZuschlagAddTradeAllowanceChargeParameter ReasonCode (UNTDID 7161)
BT-97RabattgrundAddTradeAllowanceChargeChargeIndicator = False, Reason
BT-98Konditionsart (Code)AddTradeAllowanceChargeReasonCode (UNTDID 5189)
BT-84IBANAddPaymentMeans
BT-85Name des KontoinhabersAddPaymentMeans
BT-86BICAddPaymentMeans
BT-120Umsatzsteuer-Befreiungsgrund (Text)AddTradeTaxauf Kopfebene, nicht in der Position
BT-121Umsatzsteuer-Befreiungsgrund (Code)AddTradeTaxVATEX-Code
BT-127Freitext zur RechnungspositionAddProduct_Comfort (Note) / Add_Trade_ItemTradeNote
BT-133Buchungsreferenz des Käufers zur PositionAdd_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount
BT-157Artikelkennung nach Schema (GTIN)AddProduct_Comfort (GlobalID, Schema 0160)
BT-155Artikelnummer des VerkäufersAddProduct_Comfort (SellerAssignedID)
BT-156Artikelnummer des KäufersTrade_ItemTradeBuyerAssignedID
BT-160Name des ArtikelmerkmalsaddApplicableProductCharacteristics
BT-161Wert des ArtikelmerkmalsaddApplicableProductCharacteristics

Geprüft: XRechnung und EN 16931

Wir haben mit dem Beispielcode unten eine Rechnung erzeugt, die alle 39 Felder enthält (Stand 13.10.2026):

  • XRechnung 3.0 (CII): vom KoSIT-Validator mit der XRechnung-Konfiguration 3.0.2 angenommen – ohne Fehler und ohne Warnungen.
  • ZUGFeRD / Factur-X EN 16931: vom Mustang-Validator als gültig bewertet.

Alle 39 Felder sind im XML vorhanden. Wie Sie Ihre eigenen Rechnungen prüfen, steht unter XRechnung vor dem Versand prüfen.

Beispiel: Rechnung mit allen 39 Feldern (VB.NET)

Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
alo.ZUGfeRDStandard = Aloaha_ZUGFeRD.iXML.ZUGFeRDVersion.xInvoice
alo.isKOSIT = True                                    ' XRechnung; ohne diese Zeile: ZUGFeRD/Factur-X EN 16931
alo.BusinessProcessSpecifiedDocumentContextParameter = "urn:fdc:peppol.eu:2017:poacc:billing:01:1.0"
alo.CreateInvoice("VER-2026-001", "", "20261013", "102", , "", "EUR")
alo.AddDocumentNote("Es gelten unsere Allgemeinen Geschäftsbedingungen.", "AAI")           ' BT-22, BT-21

' Verkäufer
alo.WriteSeller("Lieferant Beispiel GmbH", "54321", "Beispielstadt", "Hauptstraße 2", "", "DE", "DE123456789")
alo.SellerID = "LIEF-001"                                                                  ' BT-29
alo.AddSellerGlobalID("4000001000005", "0088")                                             ' BT-29 (GLN)
alo.SellerDescription = "Sitz: Beispielstadt, Amtsgericht Beispielstadt HRB 12345"         ' BT-33
alo.WriteSellerContactPerson("Erika Beispiel", "", "buchhaltung@beispiel.example", "+49 40 654321")   ' BT-41..43
alo.set_URIUniversalCommunication("buchhaltung@beispiel.example", "EM", True)

' Käufer
alo.WriteBuyer("Handel Muster AG", "12345", "Musterstadt", "Musterstraße 1", "", "DE")
alo.AddBuyerGlobalID("4000002000004", "0088")                                              ' BT-46 (GLN)
alo.AddBuyerTAX("DE987654321", "VA")                                                       ' BT-48
alo.BuyerReference = "REF-2026"
alo.set_URIUniversalCommunication("rechnungseingang@muster.example", "EM", False)

' Bestellung, Lieferschein, Buchungsreferenz
alo.AddBuyerAssignedID("PO-4711")                                                          ' BT-13
alo.SetDespatchAdviceReferencedDocument("LS-0815")                                         ' BT-16
alo.AddReceivableSpecifiedTradeAccountingAccount("4400")                                   ' BT-19

' Lieferort (Filiale) mit GLN
alo.WriteShipToTradeParty("Handel Muster AG Filiale 12", "12346", "Musterdorf", "Lagerstraße 3", "Tor 5", "DE", _
                          "", "", "", "", "4000003000003", "0088")                         ' BT-70, BT-71, BT-75..80
alo.ActualDeliveryDate_102 = "20261005"                                                    ' BT-72
alo.WriteBillingPeriod("20261001", "20261005", "102")                                      ' BT-73, BT-74

' Zahlung
alo.AddPaymentMeans("58", "Überweisung", "DE02120300000000202051", "Lieferant Beispiel GmbH", "", "BYLADEM1001")   ' BT-84..86
alo.AddTradePaymentTerms("Zahlbar innerhalb 30 Tagen netto.", "20261112", "102")

' Positionen: Notiz, Artikelnummern, GTIN, Merkmal, Buchungsreferenz
Dim p As Integer = alo.AddProduct_Comfort("1", "Bitte kühl lagern.", "ART-100", "10", "C62", "Artikel Blau", "", "", "EUR", "", "C62", _
                       False, "", "", "", "10.00", "EUR", "1", "C62", "VAT", "S", "19.00", "", "100.00", "EUR", _
                       "4006381333931", "0160")                                             ' BT-127, BT-155, BT-157
alo.Trade_ItemTradeBuyerAssignedID(p) = "KD-ART-555"                                        ' BT-156
alo.Add_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount(p, "KST-12") ' BT-133
alo.addApplicableProductCharacteristics(p, "Farbe", "Blau")                                 ' BT-160, BT-161
alo.AddProduct_Comfort("2", "", "ART-200", "1", "C62", "Beratung (steuerfrei)", "", "", "EUR", "", "C62", _
                       False, "", "", "", "50.00", "EUR", "1", "C62", "VAT", "E", "0.00", "", "50.00", "EUR", "", "")

' Zuschlag und Rabatt auf Dokumentebene
alo.AddTradeAllowanceCharge(True, "", "EUR", "10.00", "EUR", "VAT", "S", "19.00", "Frachtkosten", "", "FC")   ' BT-99, BT-104, BT-105
alo.AddTradeAllowanceCharge(False, "", "EUR", "5.00", "EUR", "VAT", "S", "19.00", "Rabatt", "", "95")         ' BT-97, BT-98

' Steuern (Befreiungsgrund auf Kopfebene) und Summen
alo.AddTradeTax("19.95", "EUR", "105.00", "EUR", "VAT", "S", "19.00")
alo.AddTradeTax("0.00", "EUR", "50.00", "EUR", "VAT", "E", "0.00", "Steuerbefreit nach Art. 132 MwStSystRL", _
                "", "", "", "VATEX-EU-132")                                                 ' BT-120, BT-121
alo.WriteTotals("150.00", "174.95", "174.95", "155.00", "19.95", "5.00", "0.00", "0.00", "10.00")

alo.SaveXML("C:\Rechnungen\xrechnung.xml")
If alo.Last_Error <> "" Then Console.WriteLine(alo.Last_Error)

Alle Namen, Nummern, GLN, GTIN und Bankdaten sind Muster-Werte.

Drei Stolpersteine

  • Lieferscheinnummer (BT-16): Dafür ist SetDespatchAdviceReferencedDocument zuständig. AddDeliveryNote schreibt dagegen den Lieferschein-Bezug des Profils EXTENDED und stellt die ganze Rechnung auf Factur-X EXTENDED um – eine XRechnung ist sie dann nicht mehr.
  • Steuerbefreiungsgrund (BT-120/121): gehört auf Kopfebene in AddTradeTax. Ein Befreiungsgrund in der Position (Parameter TaxExemptionReason von AddProduct_Comfort) gibt es nur in EXTENDED und stellt ebenfalls um.
  • Kennung oder GLN: Bei Käufer (BT-46) und Lieferort (BT-71) entweder die eigene Kennung oder die GLN angeben, nicht beides – sonst warnt der Validator (CII-SR-450, CII-SR-449). Beim Verkäufer (BT-29) sind mehrere Kennungen erlaubt.

Neuere Versionen des SDK melden eine solche Umstellung von XRechnung auf EXTENDED in LastWarning. Prüfen Sie diese Eigenschaft nach dem Speichern.

Häufige Fragen

Welche Felder verlangt das VeR-Siegel „E-Rechnung bereit für den Handel“?

39 Felder der EN 16931: Kennungen und GLN von Verkäufer, Käufer und Lieferort, Ansprechpartner mit Telefon und E-Mail, USt-IdNr. des Käufers, Bestell- und Lieferscheinnummer, Lieferanschrift, Buchungsreferenzen, Rechnungs- und Positionstexte, Leistungsdatum und -zeitraum, Zu- und Abschläge mit Grund, Bankverbindung, Steuerbefreiungsgrund sowie GTIN, Artikelnummern von Verkäufer und Käufer und Artikelmerkmale.

Kann eine XRechnung alle 39 VeR-Felder enthalten?

Ja. Alle 39 Felder gehören zur EN 16931 und sind in der XRechnung erlaubt. Eine mit dem Aloaha ZUGFeRD SDK erzeugte XRechnung mit allen Feldern wurde vom KoSIT-Validator ohne Fehler und Warnungen angenommen.

Wie schreibe ich GLN und GTIN mit dem Aloaha ZUGFeRD SDK?

Die GLN von Verkäufer, Käufer und Lieferort mit AddSellerGlobalID, AddBuyerGlobalID und WriteShipToTradeParty jeweils mit dem Schema 0088; die GTIN eines Artikels über die Parameter GlobalID und GlobalIDScheme (0160) von AddProduct_Comfort.

Welche Methode schreibt die Lieferscheinnummer (BT-16)?

SetDespatchAdviceReferencedDocument. AddDeliveryNote ist der Lieferschein-Bezug des Profils EXTENDED und macht aus einer XRechnung eine Factur-X-EXTENDED-Rechnung.

Business Terms in diesem Artikel: BT-29 BT-46 BT-13 BT-16 BT-71 BT-157 BT-155 BT-156 BT-33 BT-41 BT-48 BT-70 BT-19 BT-22 BT-72 BT-73 BT-99 BT-84 BT-120 BT-127 BT-133 BT-160