Belegausgang (cXML)

Mit dem Add-on Belegausgang (cXML) kehrt Orderport die gewohnte Richtung um: Statt Bestellungen zu empfangen, holt Orderport Folgebelege — Bestellbestätigungen, Rechnungen und Gutschriften — aus Ihrem System ab, wandelt sie in cXML und stellt sie an Beschaffungsnetzwerke wie SAP Ariba oder Coupa zu.

Belegtyp Erzeugtes cXML-Dokument
Bestellbestätigung ConfirmationRequest
Rechnung InvoiceDetailRequest (purpose standard)
Teilrechnung InvoiceDetailRequest — normale Rechnung mit Teilmengen gegen dieselbe Bestellung
Gutschrift InvoiceDetailRequest (purpose creditMemo)

So funktioniert es

  1. Pipeline pro Belegtyp anlegen — im Experten-Wizard wählen Sie in Schritt 1 den Dokumenttyp (z.B. „Rechnung"). Als Eingangsformat steht Generisches XML zur Verfügung, als Ausgangsformat cXML.
  2. Abholung konfigurieren — auf der Pipeline-Seite stellen Sie den Eingang auf FTP/SFTP-Pull um und geben Verzeichnis und Dateimuster an (z.B. RE_*.xml für Rechnungen). Pro Belegtyp empfiehlt sich ein eigenes Verzeichnis oder Dateimuster. Orderport prüft alle 5 Minuten auf neue Dateien.
  3. XML-Eingang beschreiben — hinterlegen Sie ein Beispieldokument Ihres XML-Formats; daraus ermittelt Orderport die Quellfelder für das Mapping und die KI-Vorschläge. Zusätzlich konfigurieren Sie:
    • Belegnummer-Pfad (z.B. Rechnung.Kopf.Nummer) — für die Duplikat-Erkennung.
    • Positions-Pfad (z.B. Rechnung.Positionen.Position) — damit auch Belege mit nur einer Position korrekt gemappt werden.
  4. Mapping erstellen — im Feldmapping ordnen Sie Ihre XML-Pfade den cXML-Zielfeldern zu. Pflichtfelder: Belegnummer (Invoice.InvoiceID bzw. Confirmation.ConfirmID), die referenzierte Bestellnummer (Invoice.OrderID / Confirmation.OrderID) und mindestens eine Position.
  5. cXML-Zustellung konfigurieren — From-/To-Identity (z.B. Ihre Supplier-ANID und die Buyer-ANID), SharedSecret und den Deployment-Modus (test / production). Das SharedSecret wird verschlüsselt gespeichert.
  6. Transport anlegen — HTTP POST an die Empfangs-URL des Netzwerks. Orderport prüft die cXML-Antwort des Empfängers: Ein innerer Status ≥ 300 gilt als fehlgeschlagene Zustellung und löst die normale Retry-Kette aus (1 min / 5 min / 30 min / 2 h / 24 h).

Duplikat-Erkennung

Die Belegnummer aus dem konfigurierten Pfad dient als eindeutiger Schlüssel pro Pipeline: Eine erneut abgelegte Datei mit derselben Rechnungsnummer wird nicht noch einmal zugestellt. Teilrechnungen erhalten eigene Rechnungsnummern und sind dadurch automatisch keine Duplikate.

Die Belegarten im Detail

Jede Belegart läuft über eine eigene Pipeline mit eigenem Mapping. Die Zielfelder unterscheiden sich je Belegart; fehlende Pflichtfelder führen zu einer klaren Fehlermeldung (Status „fehlgeschlagen"), bevor irgendetwas versendet wird.

Auftragsbestätigung (ConfirmationRequest)

Bestätigt die Bestellung des Einkäufers — komplett, mit Abweichungen oder als Ablehnung.

Zielfeld Bedeutung Pflicht
Confirmation.OrderID Bestellnummer des Einkäufers (Bezug) ja
Confirmation.ConfirmID Ihre Bestätigungsnummer nein
Confirmation.NoticeDate Bestätigungsdatum (Default: Verarbeitungszeit) nein
Confirmation.Type accept, detail oder reject (Default detail) nein
Confirmation.OrderDate / Confirmation.Comment Bestelldatum / Kommentar nein
Total.Amount / Total.Currency Gesamtbetrag nein
Items.LineNumber, Items.Quantity, Items.UnitOfMeasure, Items.DeliveryDate bestätigte Positionen mit Menge und Liefertermin nein

Tipp: Mit Confirmation.Type = detail und abweichenden Positionsmengen bzw. Items.DeliveryDate bestätigen Sie Teillieferungen und geänderte Termine.

Rechnung (InvoiceDetailRequest)

Die elektronische Rechnung gegen die Bestellung, mit Positionsdaten, Summen und Umsatzsteuer.

Zielfeld Bedeutung Pflicht
Invoice.InvoiceID Ihre Rechnungsnummer (Dedup-Schlüssel) ja
Invoice.OrderID Bestellnummer des Einkäufers (Bezug) ja
Items.* mindestens eine Position (LineNumber, Quantity, UnitOfMeasure, SupplierPartID, Description, UnitPrice, SubtotalAmount) ja (≥ 1)
Invoice.InvoiceDate Rechnungsdatum (Default: Verarbeitungszeit) nein
Summary.Currency Währung (Default EUR) nein
Summary.SubtotalAmount Nettosumme (Default: Summe der Positionen) nein
Summary.TaxRate, Summary.TaxAmount, Summary.TaxDescription Umsatzsteuer — mit TaxRate entsteht ein vollständiges TaxDetail (category, percentageRate, TaxableAmount) empfohlen
Summary.GrossAmount, Summary.NetAmount, Summary.DueAmount Brutto-/Zahl-/Fälligkeitsbetrag (DueAmount fällt auf GrossAmount zurück) empfohlen

V1 deckt den einfachen Umsatzsteuer-Fall ab (ein Steuersatz, Steuer in der Summary). Länderspezifische Sonderfälle wie Reverse Charge sind bewusst ausgeklammert — sprechen Sie uns an.

Teilrechnung

Teilrechnungen sind normale Rechnungen mit eigener Rechnungsnummer und Teilmengen gegen dieselbe Bestellung — genau so sehen es cXML und die Netzwerke vor, ein Sonderformat existiert nicht. Sie laufen über dieselbe Rechnungs-Pipeline; dank eigener Belegnummer greift die Duplikat-Erkennung korrekt. Beachten Sie, dass manche Einkäufer kumulierte Mengen gegen die Bestellung prüfen.

Gutschrift (InvoiceDetailRequest, purpose="creditMemo")

Gutschriften nutzen dieselben Zielfelder wie Rechnungen, plus:

Zielfeld Bedeutung Pflicht
Invoice.OriginalInvoiceID Nummer der Originalrechnung → wird als InvoiceIDInfo referenziert empfohlen

Standardmäßig erzeugt Orderport purpose="creditMemo" (Beleg-Ebene). Für positionsbezogene Gutschriften stellen Sie in der cXML-Zustellungs-Konfiguration der Pipeline auf lineLevelCreditMemo um. Ob Beträge positiv oder negativ erwartet werden, ist Konvention des Empfängers — vorab klären.

Hinweise

  • Laden Sie Dateien auf dem SFTP-Server atomar hoch (temporärer Name, dann umbenennen), damit keine halb geschriebenen Dateien abgeholt werden.
  • Nutzen Sie pro Belegart ein eigenes Dateimuster (z. B. AB_*.xml, RE_*.xml, GS_*.xml) oder eigene Verzeichnisse, damit jede Datei in der richtigen Pipeline landet.