Zum Hauptinhalt springen
csv2zugferd

docs

BT-153 Positionsbezeichnung in ZUGFeRD richtig mappen

BT-153 ist die Positionsbezeichnung (Artikelname) in ZUGFeRD und XRechnung. So mappen Sie sie in csv2zugferd auf lineItems.fields.name – mit CSV-Beispiel und typischen Fehlern.

BT-153 ist die Positionsbezeichnung – der lesbare Name eines Rechnungspostens. In csv2zugferd mappen Sie ihn auf lineItems.fields.name. Er ist nicht identisch mit der internen Artikelnummer.

Was ist BT-153?
#

BT-153 (Item name) ist die menschenlesbare Bezeichnung der Rechnungsposition, etwa „Demo Software 9 Light Einzelplatz-Lizenz". Es beschreibt, was abgerechnet wird, in einer für den Empfänger verständlichen Form – im Unterschied zu technischen Codes oder Artikelnummern.

Pflicht oder optional?
#

Pflicht. Jede Rechnungsposition (BG-25) muss eine Positionsbezeichnung BT-153 enthalten. Fehlt der Name, ist die Position nicht EN-16931-konform und die Validierung schlägt fehl.

YAML-Key in csv2zugferd
#

lineItems:
  mode: "columns"
  fields:
    name:
      column: "PRODUCT_NAME"
    sellerAssignedId:
      column: "PRODUCT_CODE"

name entspricht BT-153. Daneben hält sellerAssignedId (BT-155) die Verkäufer-Artikelnummer – beide Felder sind getrennt zu mappen.

CSV-Beispiel
#

PRODUCT_NAME_0PRODUCT_CODE_0
Demo Software 9 Light Lizenz00110

PRODUCT_NAME_0 ist der lesbare Positionsname und wird auf BT-153 gemappt. PRODUCT_CODE_0 ist der interne Artikelcode und gehört in sellerAssignedId, nicht in den Namen.

So landet der Wert im ZUGFeRD-XML
#

lineItems.fields.name wird je Position als Artikelname (SpecifiedTradeProductName) geschrieben. Im columns-Modus löst csv2zugferd die Spalte positionsbezogen auf: Position 0 liest PRODUCT_NAME_0, Position 1 PRODUCT_NAME_1 usw. Die Iteration stoppt, sobald die Namensspalte leer ist.

Typischer Fehler
#

  • Produktcode statt Positionsname – eine reine Nummer als name, die der Empfänger nicht lesen kann.
  • Technische Kürzel ohne lesbare Beschreibung, etwa SW9-LIC-L statt eines verständlichen Namens.
  • Leere Namensspalte, obwohl Preis und Menge vorhanden sind – im columns-Modus bricht die Positionserkennung dann an dieser Stelle ab.

Praxishinweis für csv2zugferd
#

Im columns-Modus dient der konfigurierte Spaltenname als Fragment für nummerierte Spalten (PRODUCT_NAME_0, PRODUCT_NAME_1, …). Achten Sie darauf, dass die Namensspalte lückenlos befüllt ist, weil ein leerer Name die Iteration über die Positionen beendet.

Weiterführende Links#

Häufige Fragen

Ist BT-153 ein Pflichtfeld?

Ja. Jede Rechnungsposition braucht nach EN 16931 eine Positionsbezeichnung BT-153. Ohne lesbaren Namen ist die Position nicht konform. In csv2zugferd gehört der Wert in lineItems.fields.name.

Ist die Positionsbezeichnung dasselbe wie die Artikelnummer?

Nein. BT-153 ist der lesbare Name des Postens, etwa ‘Demo Software 9 Light Lizenz’. Die Verkäufer-Artikelnummer ist BT-155 und wird separat in sellerAssignedId gemappt.