F: Warum erstellt das SDK meine XRechnung oder EN-16931-Rechnung als Factur-X EXTENDED?

Thema
VB.NET
SDK-Mitglieder
IsKosit SaveXML() ZUGfeRDStandard
Business Terms
BT-24 Spezifikationskennung BT-120 Umsatzsteuerbefreiungsgrund BT-132 Referenz zur Bestellposition BT-121 Code für den Umsatzsteuerbefreiungsgrund BT-16 Lieferavisreferenz BT-20 Zahlungsbedingungen BT-72 Tatsächliches Lieferdatum BG-10 Zahlungsempfänger
Codebeispiele
VB.NET
Veröffentlicht

Kurz: Das Aloaha ZUGFeRD SDK stellt eine Rechnung automatisch auf das Profil Factur-X/ZUGFeRD EXTENDED um, sobald Sie ein Feld setzen, das es nur in EXTENDED gibt – damit keine Angabe verloren geht. Eine solche Rechnung ist dann keine XRechnung mehr (im XML steht als Spezifikationskennung BT-24 urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended), und Empfänger, die EN 16931 oder XRechnung verlangen, lehnen sie oft ab. Die häufigsten Auslöser sind ein Befreiungsgrund in der Position, eine Bestellnummer je Position und Skonto-Angaben. Ab Version 11 meldet LastWarning, welcher Aufruf umgestellt hat. Eine „XRechnung im Profil EXTENDED“ gibt es nicht.

So erkennen Sie die Umstellung

  • Im XML: Die Spezifikationskennung (BT-24, GuidelineSpecifiedDocumentContextParameter/ID) endet auf :extended statt z. B. auf urn:xeinkauf.de:kosit:xrechnung_3.0.
  • Im Programm: alo.ZUGFeRD_Profile liefert nach dem Aufruf extended; alo.isKOSIT ist wieder False.
  • Ab Version 11: alo.LastWarning enthält dann einen Hinweis wie „isKOSIT (XRechnung) was switched off by Add_ReferencedDocument“ – mit dem Namen des Aufrufs. Prüfen Sie LastWarning am besten vor SaveXML.

Die häufigsten Auslöser – und was Sie stattdessen tun

AuslöserWarum EXTENDEDLösung für EN 16931 / XRechnung
Befreiungsgrund in der Position: AddProduct_Comfort mit TaxExemptionReason oder WriteItemTradeTax mit Grund, Code oder SteuerbetragIn EN 16931 gibt es den Befreiungsgrund (BT-120/BT-121) nur in der Umsatzsteueraufschlüsselung, nicht je PositionIn der Position leer lassen ("") und den Grund einmal mit AddTradeTax angeben, z. B. mit VATEX-EU-AE bei § 13b
Bestellnummer je Position: Add_ReferencedDocument (auch Angebot, Vertrag)Eine eigene Bestellnummer je Position gibt es nur in EXTENDEDNur die Bestellpositionsnummer (BT-132) setzen, die Bestellnummer einmal im Kopf (BT-13) – siehe Bestellpositionsnummer je Rechnungsposition
Skonto: AddTradePaymentTerms mit Skontobetrag, -prozent, -frist oder BasisbetragStrukturierte Skonto-Felder gibt es nur in EXTENDEDSkonto als Text in den Zahlungsbedingungen (BT-20); bei XRechnung im vorgegebenen Format, z. B. #SKONTO#TAGE=14#PROZENT=2.00#
Rabatt auf den Bruttopreis mit Begründung oder Prozentsatz: AddProduct_Comfort mit AllowanceReason, AddItemAllowancePercentBeim Bruttopreis (BT-148) erlaubt EN 16931 nur den Rabattbetrag (BT-147)Begründung leer lassen, oder den Rabatt als Positionsrabatt (BG-27) mit addItemSpecifiedTradeAllowanceCharge bzw. auf Rechnungsebene (BG-20) mit AddTradeAllowanceCharge angeben
Lieferschein: AddDeliveryNote, AddDeliveryNoteItemLieferscheinbezug mit Datum bzw. je Position nur in EXTENDEDLieferavis/Lieferschein-Nummer im Kopf (BT-16) mit SetDespatchAdviceReferencedDocument
Hinweis mit Inhaltscode: AddDocumentNote mit ContentCode, Add_Trade_ItemTradeNote mit CodesDer Inhaltscode eines Hinweises existiert nur in EXTENDEDNur Text und Betreffcode (BT-21/BT-22) übergeben

Weitere Aufrufe, die EXTENDED setzen

Diese Angaben gibt es ebenfalls nur im Profil EXTENDED. Verwenden Sie sie nur, wenn Ihr Empfänger EXTENDED akzeptiert:

XRechnung richtig einstellen

alo = New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
alo.ZUGfeRDStandard = Aloaha_ZUGFeRD.iXML.ZUGFeRDVersion.xInvoice
alo.isKOSIT = True                     ' XRechnung (CII)

' ... Rechnung aufbauen, ohne EXTENDED-Felder ...

If alo.LastWarning <> "" Then          ' ab Version 11
    ' z. B. protokollieren: welcher Aufruf hat auf EXTENDED umgestellt?
End If
alo.SaveXML("C:\Rechnungen\RE-2027-0001.xml")

Der zweite Parameter des Konstruktors ist der Testindikator, nicht die XRechnung: Mit True wird die Rechnung als Testrechnung gekennzeichnet. Für echte Rechnungen übergeben Sie False. Prüfen Sie die erste Rechnung mit dem KoSIT-Validator – siehe Wie prüfe ich meine XRechnung vor dem Versand? Welche Profile es gibt und was sie enthalten, zeigt ZUGFeRD-Profile im Vergleich.

Häufige Fragen

Warum stellt das SDK das Profil überhaupt automatisch um?

Damit keine Angabe verloren geht. Ein Feld, das es nur in EXTENDED gibt, würde in einer EN-16931- oder XRechnung-Datei sonst stillschweigend fehlen. Ab Version 11 meldet LastWarning die Umstellung, damit Sie sie bemerken.

Gibt es eine XRechnung im Profil EXTENDED?

Nein. Sobald ein EXTENDED-Feld verwendet wird, entsteht eine Factur-X/ZUGFeRD-EXTENDED-Rechnung. Eine XRechnung basiert immer auf EN 16931 ohne EXTENDED-Felder.

Braucht die Bestellpositionsnummer BT-132 das Profil EXTENDED?

Nein. BT-132 ist Teil von EN 16931 und XRechnung, er fehlt nur in BASIC und MINIMUM. Nur eine eigene Bestellnummer je Position (Add_ReferencedDocument) ist EXTENDED.

Wohin gehört der Befreiungsgrund bei § 13b oder steuerfreien Positionen?

In die Umsatzsteueraufschlüsselung auf Rechnungsebene (AddTradeTax), zusammen mit dem Code, z. B. VATEX-EU-AE. In der Position lassen Sie ihn leer, sonst stellt das SDK auf EXTENDED um.

Wie finde ich heraus, welcher Aufruf umgestellt hat?

Ab Version 11 steht der Name des Aufrufs in alo.LastWarning. In älteren Versionen prüfen Sie alo.ZUGFeRD_Profile nach den einzelnen Aufrufen.

Mein Kunde akzeptiert EXTENDED – ist das ein Problem?

Nein. Factur-X/ZUGFeRD EXTENDED ist ein gültiges Profil. Es kommt nur darauf an, was Ihr Rechnungsempfänger verlangt; öffentliche Auftraggeber in Deutschland verlangen in der Regel eine XRechnung.

Business Terms in diesem Artikel: BT-24 BT-120 BT-132 BT-121 BT-16 BT-20 BT-72 BG-10 BG-13 BG-26 BG-25