- 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
| Feld | Bezeichnung (VeR-Liste) | SDK | Hinweis |
|---|---|---|---|
| BT-29 | Kennung / Globaler Identifier des Verkäufers | SellerID / AddSellerGlobalID | z. B. GLN mit Schema 0088 |
| BT-33 | Sonstige rechtliche Informationen des Verkäufers | SellerDescription | Sitz, Registergericht, HRB |
| BT-41 | Ansprechpartner Verkäufer | WriteSellerContactPerson | Name oder Abteilung, nicht beides |
| BT-42 | Telefonnummer des Ansprechpartners | WriteSellerContactPerson | |
| BT-43 | E-Mail-Adresse des Ansprechpartners | WriteSellerContactPerson | |
| BT-46 | Kennung / Globaler Identifier des Käufers | WriteBuyer (Kundennummer) / AddBuyerGlobalID | ID oder GLN, nicht beides |
| BT-48 | USt-IdNr. des Käufers | AddBuyerTAX | Schema VA |
| BT-13 | Bestellnummer | AddBuyerAssignedID | |
| BT-70 | Firmenname des Waren- bzw. Leistungsempfängers | WriteShipToTradeParty | |
| BT-71 | Identifier / Globaler Identifier des Lieferorts | WriteShipToTradeParty | LocationID oder GLN, nicht beides |
| BT-75 | Straße und Hausnummer – Adresszeile 1 | WriteShipToTradeParty | |
| BT-76 | Adresszeile 2 | WriteShipToTradeParty | |
| BT-77 | Stadt des Leistungsempfängers | WriteShipToTradeParty | |
| BT-78 | PLZ des Leistungsempfängers | WriteShipToTradeParty | |
| BT-80 | Land des Leistungsempfängers | WriteShipToTradeParty | |
| BT-19 | Buchungsreferenz des Käufers | AddReceivableSpecifiedTradeAccountingAccount | |
| BT-22 | Freitext zur Rechnung | AddDocumentNote | |
| BT-21 | Code zum Freitext | AddDocumentNote | z. B. AAI, REG |
| BT-16 | Lieferscheinnummer | SetDespatchAdviceReferencedDocument | nicht AddDeliveryNote (EXTENDED) |
| BT-72 | Liefer-/Leistungsdatum | ActualDeliveryDate_102 | |
| BT-73 | Beginn der Rechnungsperiode | WriteBillingPeriod | |
| BT-74 | Ende der Rechnungsperiode | WriteBillingPeriod | |
| BT-99 | Zuschlag auf Dokumentebene | AddTradeAllowanceCharge | ChargeIndicator = True |
| BT-104 | Text zum Zuschlag | AddTradeAllowanceCharge | Parameter Reason |
| BT-105 | Code zum Zuschlag | AddTradeAllowanceCharge | Parameter ReasonCode (UNTDID 7161) |
| BT-97 | Rabattgrund | AddTradeAllowanceCharge | ChargeIndicator = False, Reason |
| BT-98 | Konditionsart (Code) | AddTradeAllowanceCharge | ReasonCode (UNTDID 5189) |
| BT-84 | IBAN | AddPaymentMeans | |
| BT-85 | Name des Kontoinhabers | AddPaymentMeans | |
| BT-86 | BIC | AddPaymentMeans | |
| BT-120 | Umsatzsteuer-Befreiungsgrund (Text) | AddTradeTax | auf Kopfebene, nicht in der Position |
| BT-121 | Umsatzsteuer-Befreiungsgrund (Code) | AddTradeTax | VATEX-Code |
| BT-127 | Freitext zur Rechnungsposition | AddProduct_Comfort (Note) / Add_Trade_ItemTradeNote | |
| BT-133 | Buchungsreferenz des Käufers zur Position | Add_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount | |
| BT-157 | Artikelkennung nach Schema (GTIN) | AddProduct_Comfort (GlobalID, Schema 0160) | |
| BT-155 | Artikelnummer des Verkäufers | AddProduct_Comfort (SellerAssignedID) | |
| BT-156 | Artikelnummer des Käufers | Trade_ItemTradeBuyerAssignedID | |
| BT-160 | Name des Artikelmerkmals | addApplicableProductCharacteristics | |
| BT-161 | Wert des Artikelmerkmals | addApplicableProductCharacteristics |
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
SetDespatchAdviceReferencedDocumentzuständig.AddDeliveryNoteschreibt 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 (ParameterTaxExemptionReasonvon 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