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
- 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.
- Abholung konfigurieren — auf der Pipeline-Seite stellen Sie den Eingang auf
FTP/SFTP-Pull um und geben Verzeichnis und Dateimuster an (z.B.
RE_*.xmlfür Rechnungen). Pro Belegtyp empfiehlt sich ein eigenes Verzeichnis oder Dateimuster. Orderport prüft alle 5 Minuten auf neue Dateien. - 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.
- Belegnummer-Pfad (z.B.
- Mapping erstellen — im Feldmapping ordnen Sie Ihre XML-Pfade den
cXML-Zielfeldern zu. Pflichtfelder: Belegnummer (
Invoice.InvoiceIDbzw.Confirmation.ConfirmID), die referenzierte Bestellnummer (Invoice.OrderID/Confirmation.OrderID) und mindestens eine Position. - 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. - 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.