# Digitale Formate (XML, XRechnung, ZUGFeRD)

Dieses Kapitel behandelt die Verarbeitung von digitalen Formaten, die nicht mit visuellen Repräsentation eines Dokumentes (also Bilder, Scans, PDFs) zusammenhängen.  
  
Das sind Formate wie XRechnung, ZUGFeRD usw. die üblicherweise als XML- oder JSON-Dateien verschickt werden.

# Einführung Digitale Formate: XML, XRechnung und ZUGFeRD in der Software Squeeze

Willkommen zur Dokumentation von Squeeze, insbesondere des Moduls **Elektronische-Daten**, einer leistungsstarken Komponente zur Verarbeitung digitaler Formate.   
In dieser Dokumentation erfahren Sie alles Wichtige zur Nutzung und Verwaltung dieses Moduls, der Schwerpunkt liegt hierbei auf der Verarbeitung von gängigen, digitalen, Formate wie ZUGFeRD und XRechnung. Obwohl die Unterstützung für benutzerdefinierte XML-Formate (Customized XMLs) noch nicht verfügbar ist, wird diese Funktionalität in zukünftigen Updates bereitgestellt.

#### Digitale Formate im Überblick

In der heutigen digitalen Geschäftswelt sind effiziente und standardisierte Datenformate unerlässlich. Die folgenden Formate spielen dabei eine besonders wichtige Rolle:

**XML (Extensible Markup Language)** XML ist ein vielseitiges und weit verbreitetes Datenformat, das speziell für die strukturierte Datenspeicherung und -übertragung entwickelt wurde. Es ermöglicht die Definition eigener Tags und Strukturen, was es zu einem flexiblen Werkzeug für unterschiedlichste Anwendungen macht. Der Einsatz von XML sorgt für eine effiziente und transparente Datenkommunikation.

**XRechnung** XRechnung ist ein speziell für elektronische Rechnungen entwickeltes Format, das in vielen europäischen Ländern, einschließlich Deutschland, gesetzlich vorgeschrieben ist. Es basiert auf XML und erfüllt die Anforderungen der Europäischen Norm EN 16931. Durch die Standardisierung von Rechnungsdaten ermöglicht XRechnung eine einfache und effiziente Verarbeitung und Archivierung elektronischer Rechnungen.

**ZUGFeRD (Zentraler User Guide des Forums elektronische Rechnung Deutschland)** ZUGFeRD ist ein hybrides Rechnungsformat, das sowohl ein menschenlesbares PDF-Dokument, als auch maschinenlesbare XML-Daten kombiniert. Dieses Format vereinfacht die Rechnungsverarbeitung, indem es die Vorteile beider Formate nutzt. Es ist besonders nützlich für Unternehmen, die mit unterschiedlichen Geschäftspartnern zusammenarbeiten und verschiedene Anforderungen an Rechnungsformate erfüllen müssen.

#### Squeeze: Ihre Lösung für die Verarbeitung digitaler Formate

Squeeze ist darauf ausgelegt, die Verarbeitung von ZUGFeRD- und XRechnung-Formaten nahtlos zu integrieren. Mit Squeeze können Unternehmen ihre Rechnungsprozesse effizient automatisieren und sicherstellen, dass sie den aktuellen gesetzlichen Anforderungen entsprechen. Die Unterstützung für benutzerdefinierte XML-Formate ist in der Entwicklung und wird in einer zukünftigen Version von Squeeze verfügbar sein, **[hier](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/en-16931-e-rechnungsformate-in-squeeze "EN-16931 E-Rechnungsformate in Squeeze")** finden Sie die aktuell unterstützten Formate.

**Hauptfunktionen von Squeeze:**

- **[Verarbeitung von ZUGFeRD-Rechnungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd "XRechnung und ZUGFeRD"):** Squeeze kann ZUGFeRD-Rechnungen problemlos einlesen und die enthaltenen Daten sowohl aus dem PDF- als auch aus dem XML-Teil extrahieren.
- **[Unterstützung für XRechnung](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd "XRechnung und ZUGFeRD"):** Squeeze ermöglicht die einfache Handhabung von XRechnungen, was die Konformität mit europäischen Vorschriften sicherstellt.
- **[Prüfbericht der Koordinierungsstelle für IT-Standards(KoSIT)](https://docs.squeeze.one/link/500#bkmrk-pdf-pr%C3%BCfbericht-kosi "XRechnung und ZUGFeRD"):** Squeeze generiert auf Kundenwunsch Konformitätsnachweise für XML-Daten gemäß den KoSIT-Standards.
- [**Umschlüsselung von technischen Codes in Werte**](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/umschlusselung-von-codes-eines-elektronischen-beleges "Umschlüsselung von Codes eines elektronischen Beleges"):  
    Mit Squeeze können Codes die in elektronischen Belegen genutzt werden in hausinterne Werte umgeschlüsselt werden.

#### Weiterführende Informationen

In den folgenden Kapiteln dieser Dokumentation finden Sie detaillierte Anleitungen zur Funktionsweise, Konfiguration und Verwaltung des Moduls **Digitale Formate**.

Wir empfehlen, diese Dokumentation gründlich zu lesen und bei Bedarf als Referenz zu verwenden, um das volle Potenzial von Squeeze auszuschöpfen.

# XML-Pipeline

In der **XML-Pipeline** von Squeeze werden XML-Dokumente durch speziell angepasste Verarbeitungsstufen geführt, um den unterschiedlichen Anforderungen der Datenextraktion und Dokumentenkategorisierung gerecht zu werden.

<div data-scroll-anchor="true" data-testid="conversation-turn-25" id="bkmrk-schritt-aktuelle-pip"><div data-message-author-role="assistant" data-message-id="660ef679-fe5f-48c6-9f40-af55e9367dc1"><table style="height: 470px; width: 759px;" width="205"><thead><tr style="height: 29px;"><th style="width: 207px; height: 29px;">Schritt</th><th style="width: 552px; height: 29px;">Aktuelle Pipeline</th></tr></thead><tbody><tr style="height: 29px;"><td style="width: 207px; height: 29px;">**Einganskanäle**

</td><td style="width: 552px; height: 29px;">\- Alle Eingangskanäle prüfen die Dokumente auf ihre Validität in Bezug auf die EN16931-Spezifikationen.

</td></tr><tr style="height: 96px;"><td style="width: 207px; height: 93px;">**Initialisierungs-Schritt**

</td><td style="width: 552px; height: 93px;">\- Hochgeladene XML-Dateien werden in ein internes Standard-XML-Format (`intermediate.xml`) überführt. Eine PDF wird aus der `intermediate.xml` erzeugt.

\- Je nach Kundenwunsch wird in diesem Schritt ein [KoSIT-Prüfbericht](https://docs.squeeze.one/link/500#bkmrk-pdf-pr%C3%BCfbericht-kosi "Einführung Digitale Formate: XML, XRechnung und ZUGFeRD in der Software Squeeze") erstellt.

</td></tr><tr style="height: 63px;"><td style="width: 207px; height: 63px;">**Barcode- Extraktions-Schritt**

</td><td style="width: 552px; height: 63px;">\- Viewer-Bilder auf Basis der PDF werden erstellt, gilt auch für ZUGFeRD und XRechnung

</td></tr><tr style="height: 63px;"><td style="width: 207px; height: 63px;">**OCR-Schritt**

</td><td style="width: 552px; height: 63px;">\- PDF-Dateien mit eingebetteten XML werden normal verarbeitet, um ein OCR-Ergebnis zu erstellen.

\- Dieser Schritt wird für reine XML-Dateien übersprungen.

</td></tr><tr style="height: 80px;"><td style="width: 207px; height: 80px;">**Klassifizierungs-Schritt**

</td><td style="width: 552px; height: 80px;">\- Die Klassifizierung von XML-Dokumenten ist derzeit nicht möglich. Eine Fehler wird erzeugt, sobald das Dokument keine Dokumentenklasse nachweist

</td></tr><tr style="height: 113px;"><td style="width: 207px; height: 113px;">**Extraktions-Schritt**

</td><td style="width: 552px; height: 113px;">\- Übliche Extraktionsmechanismen werden ausgeführt oder übersprungen durch die Stapelklasseneigenschaft: `SkipXmlExtraction`.

\- `intermediate.xml` wird genutzt, um Kreditor und Mandant der XML zu ermitteln. Die eigentliche XML-Extraktion basiert auf der `intermediate.xml`.

</td></tr></tbody></table>

</div></div>### Extraktion von XMLs

In der **XML-Pipeline** von Squeeze erfolgt die XML-Extraktion als letzter Schritt vor der Autovalidierung/Validierung und hat dabei eine besondere Rolle: Sie überschreibt extrahierte Feldwerte aus den KI-Extraktionen und den Lokatoren-Ergebnissen. Die Extraktion von XML-Daten basiert auf dem Mapping, welches im Administrationsbereich angepasst werden kann. Alternativen werden gemäß der Definition im Mapping verarbeitet.

### Rendering von XMLs

Das **XML-Rendering** in Squeeze bezieht sich auf den Prozess der Erstellung von PDF-Dokumenten aus XML-Dateien. Dieser Prozess unterscheidet sich je nach Art des XML-Dokuments und umfasst spezifische Anforderungen für standardisierte und benutzerdefinierte XML-Formate.

#### Rendering von Spezifischen XML-Dokumenten

Für standardisierte XML-Formate wie XRechnung und ZUGFeRD, die der Norm EN16931 entsprechen, erfolgt das Rendering nach den folgenden Schritten:

1. **Erstellung des Zwischenformats**: Im InitStep wird aus der XML-Datei ein Zwischenformat erstellt, das als Basis für das PDF-Rendering dient. Dieses Zwischenformat wird aus der `intermediate.xml` generiert, die die für die PDF-Erstellung benötigten Daten enthält.
2. **PDF-Erzeugung**: Basierend auf dem Zwischenformat wird ein PDF-Dokument erstellt, das die strukturierten Daten aus der XML übersichtlich darstellt. Dies ermöglicht die Generierung von PDFs, die den Anforderungen der jeweiligen Spezifikation entsprechen und für den Austausch und die Archivierung verwendet werden können.


#### Ausblick

In einer zukünftigen Version von Squeeze ist geplant, auch für XML-Dokumente, die nicht den EN16931-Spezifikationen entsprechen, eine vollständige Verarbeitung zu ermöglichen. Diese Weiterentwicklung wird es erlauben, alle Arten von XML-Dokumenten einheitlich und umfassend zu behandeln, wodurch die Integration und Handhabung von benutzerdefinierten XML-Formaten weiter verbessert wird.

# XRechnung und ZUGFeRD

<p class="callout info">XRechnung und ZUGFeRD sind digitale Rechnungsformate, welche in der Praxis als XML-Dateien oder PDFs mit eingebetteten XML-Daten verschickt werden.</p>

<p class="callout info">Seit März 2026 bilden in Deutschland bei hybriden E-Rechnungen die im strukturierten Teil (XML) vorliegenden Rechnungsdaten den führenden Teil.  
Aufgrunddessen werden ZUGFeRD Belege seit Version 2.30 automatisch im strikten Modus verarbeitet (siehe [Strict Mode](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften#bkmrk-zugferdstrictmode))</p>

#### Validierung von digitalen Rechnungen

Nicht alle digitalen Rechnungen, die Sie erhalten erfüllen die öffentlichen Standards. In der Praxis kann es daher passieren, dass Lieferanten digitale Rechnungen senden, die nicht durch Squeeze verarbeitet werden, weil die Dateien nicht valide sind.

<p class="callout info">Eine digitale Rechnung ist valide, wenn sie diese zwei Kriterien erfüllt:  
  
- Die Datei (i. d. R. XML) ist korrekt formatiert. Sie enthält also gültiges XML  
- Die fachlichen Kriterien an eine EN-16931 + Extension XML sind erfüllt. Beispiel: Die Rechnung enthält eine gültige Kombination aus Netto-, Steuer- und Brutto-Beträgen.</p>

In der Validierung (UI) weist ein Icon darauf hin, dass ein Dokument als XRechnung verarbeitet wurde.

[![Bildschirmfoto 2023-08-25 um 08.24.52.png](https://docs.squeeze.one/uploads/images/gallery/2023-08/scaled-1680-/bildschirmfoto-2023-08-25-um-08-24-52.png)](https://docs.squeeze.one/uploads/images/gallery/2023-08/bildschirmfoto-2023-08-25-um-08-24-52.png)

##### Validatoren

Hier ein Liste von Validatoren, mit denen Sie prüfen können, ob eine digitale Rechnung valide ist:

- [https://erechnungsvalidator.service-bw.de/](https://erechnungsvalidator.service-bw.de/)
- [https://validator.invoice-portal.de/](https://validator.invoice-portal.de/)
- [https://ecosio.com/en/peppol-and-xml-document-validator/](https://ecosio.com/en/peppol-and-xml-document-validator/)
- [https://peppol.munich-enterprise.com/xrechnung/](https://peppol.munich-enterprise.com/xrechnung/)
- [https://www.zugferd-community.net/de/dashboard/validation](https://www.zugferd-community.net/de/dashboard/validation) (Speziell auch alle ZugFERD Varianten)

#### Extraktion

<table id="bkmrk-schritt-bisherige-pi" style="width: 435px;"><thead><tr><th style="width: 147px;">Schritt

</th><th style="width: 288px;">[Aktuelle Pipeline](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xml-pipeline "XML-Pipeline")

</th></tr></thead><tbody><tr><td style="width: 147px;">**Extraktion**

</td><td style="width: 288px;">- Übliche Extraktionsmechanismen werden ausgeführt oder übersprungen durch die Stapelklasseneigenschaft: `SkipXmlExtraction`.
- `intermediate.xml` wird genutzt, um Kreditor und Mandant der XML zu ermitteln.
- Die eigentliche XML-Extraktion basiert auf der `intermediate.xml`.

</td></tr></tbody></table>

#### Konfiguration von XML-Auswertungen

Ab der Version 2.13 und nach Freischaltung durch Dexpro oder einen der Partner, können Sie in die Extraktion von XML-Werten bei EN16931 konformen XML-Dokumenten eingreifen.

- [Konfiguration von XML-Auswertungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-xml-auswertung "Konfiguration XML-Auswertung")

Siehe auch [XRechnung und ZUGFeRD Auswertungstabellen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd-auswertungstabellen "XRechnung und ZUGFeRD Auswertungstabellen")

#### PDF-Rendering

Das PDF-Rendering für XRechnung und ZUGFeRD hat sich ebenfalls geändert:

- **EN-16931 konforme XML-Dokumente**: Für standardisierte XML-Dokumente wie XRechnung und ZUGFeRD wird eine PDF aus dem Zwischenformat erstellt, das im InitStep generiert wurde. Dieses Zwischenformat basiert auf der `intermediate.xml` und wird genutzt, um alle relevanten Daten in einer übersichtlichen PDF-Darstellung zu präsentieren.

In der zukünftigen Version von Squeeze wird die vollständige Unterstützung für die PDF-Erzeugung von nicht EN16931-konformen XML-Dokumenten implementiert. Dies wird die Flexibilität und Integration für benutzerdefinierte XML-Formate weiter verbessern.

#### XML-Prüfbericht KoSIT

Ab Version 2.15 von Squeeze bietet unsere Squeeze-Lösungen die Möglichkeit, automatisch Prüfberichte für verarbeitete ZUGFeRD und XRechnung-Daten zu erstellen. Diese Berichte entsprechen den KoSIT-Standards und gewährleisten die Datenqualität. Während bei XRechnungen eine strikte Fehlerprüfung erfolgt, um die Datenintegrität zu schützen, bietet das System für ZUGFeRD-Belege eine größere Flexibilität. Dies ermöglicht eine individuelle Anpassung der Verarbeitungsprozesse an die spezifischen Anforderungen der Kunden.  
  
Die [**Aktivierung der Funktionalität**](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xml-prufbericht-kosit "XML-Prüfbericht KoSIT") erfolgt durch unsere Partner oder unserer Berater. Den KoSIT Prüfbericht, können Sie sich in der Validierung des Dokumentes anzeigen lassen oder direkt über das Kontext-Menü in der Validierung herunterladen.

[![image-1732540543961.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732540543961.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732540543961.png)  
<sub>Validierungsoberfläche</sub>

#### Umschlüsselung von Codes in Werte

Ab der Version 2.16 ist es möglich, Codes die in elektronischen Belegen genutzt werden in eigene Werte umzuschlüsseln. Solche Codes werden z.B. verwendet um Mengeneinheiten festzulegen, Steuerfälle zu definieren oder auch um den Vorgang festzulegen.

Hier die Anleitung, wie die **[Umschlüsselung der Codes aus elektronischen Belegen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/umschlusselung-von-codes-eines-elektronischen-beleges "Umschlüsselung von Codes eines elektronischen Beleges")** konfiguriert werden kann.

#### ZUGFeRD Strict Mode

Seit Version 2.30 (April 2026)  
  
Laut gesetzlicher Verarbeitungsvorschrift bilden nunmehr die im strukturierten Teil (XML) vorliegenden Rechnungsdaten den führenden Teil. Weitere Informationen im [FAQ des Bundesfinanzministerium.](https://www.bundesfinanzministerium.de/Content/DE/FAQ/e-rechnung.html)

Der strikte Modus hat folgende Auswirkungen auf die Verarbeitung von ZUGFeRD Vorgängen in SQUEEZE:

##### E-Mail Anhang Filterung

Anlagenfilter werden zugunsten der XML Verarbeitung übersteuert.  
Bestehende Filter, welche PDFs bevorzugen, werden demnach beim E-Mail Import übersteuert, sodass das XML bevorzugt verarbeitet wird.  
Dieses Verhalten wird geloggt, um eine nachvollziehbare Verarbeitung zu gewährleisten.  
Zusätzlich gibt es eine [Systemprüfung](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/system-information-und-prufungen), mit der eine eventuelle Fehlkonfiguration überprüft werden kann.

##### Automatische Validierungsreport Generierung

In dem strikten Modus wird die Generierung eines Validerungsreports der XML forciert (ausgenommen Windows Systeme).  
Wenn die Generierung des Reports nicht gewünscht ist, muss der gesamte Strict Mode deaktiviert werden.

##### Original PDF als Anhang - Generierung Visualisierung

Die originale PDF Datei wird bei der Verarbeitung in den Anhang verschoben.

Zur Visualisierung wird wie bei xRechnungen eine Visualisierung der XML Rechnungsdaten als PDF erzeugt, dessen Basis die verarbeitete XML ist.  
Damit soll sichergestellt werden, dass ausschließlich die XML Daten angezeigt werden.  
Dadurch treten keine fehlerhafte Diskrepanzen zwischen XML und PDF desselben Vorgangs auf.

##### Überspringen der XML Extraktion (SkipXmlExtraction)

Diese Eigenschaft wird durch den Strict Mode übersteuert (und auch geloggt).  
Die XML Verarbeitung wird forciert, auch wenn die Eigenschaft SkipXmlExtraction aktiviert ist.

##### Generische XMLs

Der ZUGFeRD strict mode findet **KEINE** Anwendung bei generischen XML Typen.

Bei **generischen** XML Vorgängen (nicht ZUGFeRD oder xRechnung) greifen die Auswirkungen des Strict Mode **nicht**, selbst wenn dieser für die Stapelklasse aktiviert wurde.

# XML-Testdialog

<p class="callout warning">Diese Funktion ist bisher nicht zur Verwendung freigegeben.</p>

#### Test-Funktionalität zur Vorabvalidierung von XML-Inhalten

Der folgende Testdialog ermöglicht Ihnen zu prüfen, ob SQUEEZE eine XRechnung verarbeiten kann oder nicht.

Um diese Funktionalität zu verwenden müssen Sie die Administrations-Oberfläche von Squeeze öffnen.

[![image-1674484546554.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674484546554.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674484546554.png)

Nachfolgend gelangen Sie in die Upload-Oberfläche der Funktionalität. Sie können nun über den Upload Button Ihre Belege in PDF oder XML Format hochladen und testen lassen.

[![image-1674484760513.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674484760513.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674484760513.png)

Die Anwendung gibt Ihnen nun Rückmeldung über ein Dialog ob die Verarbeitung gewährleistet werden kann oder nicht z.B. :

[![image-1674484918806.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674484918806.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674484918806.png)

Hier wiederum eine XML-Datei, die gültig ist.

[![image-1674485033335.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674485033335.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674485033335.png)

# XML-Mapping

Das Mapping von XML-Daten in Squeeze ist ein zentraler Bestandteil der Verarbeitung von Dokumenten. Es ermöglicht die Zuordnung und Extraktion von Daten aus XML-Dokumenten, sei es aus standardisierten Formaten wie XRechnung und ZUGFeRD oder benutzerdefinierten XMLs. Diese Dokumentation erläutert die Struktur und Bedeutung der Mapping-Schema-Elemente und deren Einfluss auf die Verarbeitung. Mit folgenden API-Endpunkten, lassen sie die Mapping in Squeeze administrieren:

#### API-Endpunkte

- **GET** `/xml/xpath/documentclasses/{documentClassId}/mappings`: Abrufen aller XPath-Dokumenten-Mappings für eine bestimmte Dokumentenklasse.
- **POST**` /xml/xpath/documentclasses/{documentClassId}/mappings`: Erstellen eines neuen XPath-Dokumenten-Mappings für eine bestimmte Dokumentenklasse.
- **PUT** `/xml/xpath/documentclasses/{documentClassId}/mappings/{mappingId}`: Aktualisieren eines bestehenden XPath-Dokumenten-Mappings.
- **DELETE** `/xml/xpath/mappings/{mappingId}`: Löschen eines XPath-Dokumenten-Mappings.

#### Mapping-Schema

```JSON
{
    "id": 0,
    "name": "string",
    "systemMapping": true,
    "documentClassId": 0,
    "classificationFields": [
      {
        "id": 0,
        "mappingId": 0,
        "xpath": "string",
        "expectedValue": "string"
      }
    ],
    "namespaces": [
      {
        "id": 0,
        "prefix": "string",
        "uri": "string"
      }
    ],
    "fields": [
      {
        "id": 0,
        "fieldId": 0,
        "xpath": "string",
        "alternative": false
      }
    ],
    "tables": [
      {
        "id": 0,
        "mappingId": 0,
        "tableId": 0,
        "tableRootXPath": "string",
        "columns": [
          {
            "id": 0,
            "fieldId": 0,
            "xpath": "string",
            "alternative": false
          }
        ]
      }
    ]
  }
```

Das Mapping-Schema definiert die Struktur, die zur Verarbeitung und Klassifizierung von XML-Daten verwendet wird. Hier sind die wichtigsten Elemente und deren Einfluss:

#### 1. Namespace-Deklarationen

**Namespaces** sind eine essentielle Komponente in XML-Dokumenten, um Namenskonflikte zu vermeiden und die Struktur der Daten zu definieren. Die Namespace-Deklarationen im Mapping-Schema haben folgende Eigenschaften:

- **ID**: Eindeutige Identifikation des Namespace.
- **Prefix**: Der Präfix, der in den XML-Daten verwendet wird, um den Namespace zu referenzieren.
- **URI**: Die URI, die den Namespace eindeutig definiert.

**Einfluss**: Namespace-Deklarationen sorgen dafür, dass XML-Daten korrekt interpretiert und gemappt werden können. Squeeze verwendet die im Mapping gespeicherten Namespaces, um das entsprechende Mapping zu einer XML zu identifizieren. Ohne korrekte Namespace-Deklarationen könnten Daten falsch zugeordnet oder nicht erkannt werden.

#### 2. Klassifizierungsfelder

**ClassificationFields** sind Felder, die zur Identifizierung und Klassifizierung von Dokumenten verwendet werden. Diese Felder sind entscheidend, um die Dokumentenklasse korrekt zuzuordnen und das passende Mapping zu identifizieren.

- **ID**: Eindeutige Identifikation des Klassifizierungsfeldes.
- **MappingID**: Referenz zur Mapping-Konfiguration.
- **XPath**: Der XPath-Ausdruck, der den Ort des Feldes im XML-Dokument angibt.
- **ExpectedValue**: Der erwartete Wert, der zur Klassifizierung verwendet wird.

**Einfluss**: Klassifizierungsfelder bestimmen nicht nur die Dokumentenklasse, sondern dienen auch als direkte Referenz von XML-Struktur und Daten zu einem Mapping. Squeeze wertet diese Informationen aus, um das passende Mapping zu identifizieren. Diese Felder ermöglichen es, spezifische Mappings präzise den entsprechenden XML-Daten zuzuordnen und somit eine korrekte Verarbeitung sicherzustellen.

#### 3. Felder

**Fields** repräsentieren die spezifischen Datenpunkte innerhalb der XML-Daten, die extrahiert werden sollen.

- **ID**: Eindeutige Identifikation des Feldes.
- **FieldID**: Identifikation des Feldes im System.
- **XPath**: Der XPath-Ausdruck, der den Ort des Feldes im XML-Dokument angibt.
- **Alternative**: Ein Flag, das angibt, ob das Feld als Alternative betrachtet wird.

**Einfluss**: Die Definition der Felder bestimmt, welche Daten aus den XML-Dokumenten extrahiert werden. Felder, die als Alternative gekennzeichnet sind, werden nur verwendet, wenn der Hauptwert nicht gefunden wird.

#### 4. Tabellen

**Tables** sind Gruppen von Feldern, die in Tabellenform organisiert sind. Dies ermöglicht eine strukturierte Extraktion von tabellarischen Daten aus XML-Dokumenten.

- **ID**: Eindeutige Identifikation der Tabelle.
- **MappingID**: Referenz zur Mapping-Konfiguration.
- **TableID**: Identifikation der Tabelle im System.
- **TableRootXPath**: Der XPath-Ausdruck, der die Wurzel der Tabelle im XML-Dokument angibt.

<p class="callout warning">Vermeiden Sie die Angabe von Indizes im `tableRootXPath`, es sei denn, Sie möchten explizit nur einen bestimmten Knoten abbilden.Beispiel:  
Verwenden Sie: `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem`   
anstelle von `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[1]`.</p>

- **Columns**: Die Spalten innerhalb der Tabelle, die Datenpunkte definieren.

**Einfluss**: Die Tabellenstruktur ermöglicht eine effiziente Extraktion von Daten, die in tabellarischer Form vorliegen. Dies ist besonders wichtig für die Verarbeitung von Rechnungsdaten, die häufig in Tabellen organisiert sind.

#### System-Mapping vs. Benutzerdefinierte Mappings

- **System-Mapping**: Für die Formate XRechnung und ZUGFeRD wird ein statisches System-Mapping verwendet. Dieses Mapping ist fest definiert und kann nicht bearbeitet oder gelöscht werden. Es stellt sicher, dass die Dokumentenverarbeitung konsistent und standardisiert erfolgt.
- **Benutzerdefinierte Mappings**: Alle anderen Mappings sind benutzerdefiniert und können über die UI angelegt und angepasst werden. Benutzerdefinierte Mappings erlauben die Integration und Anpassung an spezifische XML-Datenstrukturen, die nicht den Standardformaten entsprechen.


### Zusammenfassung

Das Mapping von XML-Daten in Squeeze spielt eine entscheidende Rolle bei der Datenextraktion und Dokumentenklassifizierung. Namespace-Deklarationen und Klassifizierungsfelder sind zentrale Elemente, die sicherstellen, dass XML-Daten korrekt interpretiert und verarbeitet werden. Während System-Mappings für Standardformate wie XRechnung und ZUGFeRD fest definiert sind, bieten benutzerdefinierte Mappings die Flexibilität, individuelle XML-Datenstrukturen zu integrieren und zu verarbeiten.

<p class="callout info">Während die API volle Flexibilität beim Mapping bietet, wird unser kommender UI-Mapper den Prozess durch eine intuitive visuelle Oberfläche deutlich vereinfachen und beschleunigen.</p>

# Benutzerdefinierte XML-Verarbeitung

Während Squeeze bereits integrierte Mappings für Standardformate wie XRechnung und ZUGFeRD bietet, ermöglicht die API die Erstellung benutzerdefinierter Mappings für beliebige XML-Strukturen. Dies ist besonders nützlich, wenn Sie Dokumente verarbeiten müssen, die nicht den gängigen Standards entsprechen.

#### Prozess zur Erstellung eines Mappings für benutzerdefinierte XML-Strukturen

<div id="bkmrk-dokumentenklasse-ide"><div>1. **Dokumentenklasse identifizieren oder erstellen:**
    
    
    - Jede XML-Struktur, die Sie verarbeiten möchten, benötigt eine zugehörige Dokumentenklasse.
    - Überprüfen Sie, ob bereits eine passende Dokumentenklasse existiert. Falls nicht, erstellen Sie eine neue.
2. **Mapping-Schema definieren:**
    
    
    - Analysieren Sie die Struktur Ihres XML-Dokuments.
    - Definieren Sie die Namespaces, Klassifizierungsfelder, Felder und Tabellen gemäß dem Mapping-Schema (siehe vorheriger Abschnitt).
    - Achten Sie darauf, dass die XPath-Ausdrücke korrekt sind und auf die relevanten Datenpunkte in Ihrem XML verweisen.
    
    **Besonderheit bei Tabellen (tableRootXPath):**
    
    
    - Vermeiden Sie die Angabe von Indizes im `tableRootXPath`, es sei denn, Sie möchten explizit nur einen bestimmten Knoten abbilden.
    - Beispiel: Verwenden Sie `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem` anstelle von `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[1]`.
3. **Mapping über die API erstellen:**
    
    
    - Verwenden Sie den API-Endpunkt `POST {squeeze.base.url}/xml/xpath/documentclasses/{documentClassId}/mappings`.
    - Ersetzen Sie `{squeeze.base.url}` durch die Basis-URL Ihrer Squeeze-Instanz und `{documentClassId}` durch die ID der entsprechenden Dokumentenklasse.
    - Übergeben Sie das Mapping-Schema im Body der Anfrage als JSON-Objekt.

</div></div>#### Beispielanfrage (POST)

<div id="bkmrk-http-post-%7Bsqueeze.b"><div><div><div><span class="ng-tns-c3626539649-703">HTTP</span></div>```
<span class="ng-tns-c3626539649-703"><code class="language-JSON">POST {squeeze.base.url}/xml/xpath/documentclasses/123/mappings<br></br>Content-Type: application/json<br></br>{<br></br>   "name":"Mein benutzerdefiniertes Mapping",<br></br>   "systemMapping":false,<br></br>   "documentClassId":123,<br></br>   "classificationFields":[<br></br>      "..."<br></br>   ],<br></br>   "namespaces":[<br></br>      "..."<br></br>   ],<br></br>   "fields":[<br></br>      "..."<br></br>   ],<br></br>   "tables":[<br></br>      "..."<br></br>   ]<br></br>}</code></span>
```

</div></div></div><p class="callout info">Details zur Struktur der Request-Payload finden Sie in der Swagger-UI der Squeeze API unter: `https://{squeeze.base.url}/api/v2/dist`</p>

####  

#### Verwaltung von Mappings über die API

Zusätzlich zur Erstellung können Sie Mappings auch über die folgenden Endpunkte verwalten:

<div id="bkmrk-get-%7Bsqueeze.base.ur"><div>- **GET** `{squeeze.base.url}/xml/xpath/documentclasses/{documentClassId}/mappings`: Abrufen aller Mappings für eine bestimmte Dokumentenklasse.
- **PUT** `{squeeze.base.url}/xml/xpath/documentclasses/{documentClassId}/mappings/{mappingId}`: Aktualisieren eines bestehenden Mappings.
- **DELETE** `{squeeze.base.url}/xml/xpath/mappings/{mappingId}`: Löschen eines Mappings.

</div></div>#### Umwandlung von XML in JSON

Squeeze bietet einen API-Endpunkt, um XML-Dokumente in eine strukturierte JSON-Darstellung zu konvertieren. Dies kann hilfreich sein, um die Struktur des Dokuments besser zu verstehen und die XPath-Ausdrücke für Ihr Mapping zu erstellen.

<div id="bkmrk-post-%7Bsqueeze.base.u"><div>- **POST** `{squeeze.base.url}/xml/xpath`: Wandelt ein XML-Dokument in JSON um. Übergeben Sie das XML-Dokument im Body der Anfrage.

</div></div>#### Beispielantwort (JSON)

<div id="bkmrk-%7B%22rsm%3Acrossindustryi"><div><div><div><div>```json
<span class="hljs-attr">{<br></br>"rsm:CrossIndustryInvoice"</span>: {
    <span class="hljs-attr">"value"</span>: "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended 1715515 SAMMELRECHNUNG 380 20240708 1...",
    <span class="hljs-attr">"xpath"</span>: "/rsm:CrossIndustryInvoice[1]",
    <span class="hljs-attr">"attributes"</span>: [],
    <span class="hljs-attr">"rsm:ExchangedDocumentContext"</span>: {
      <span class="hljs-attr">"value"</span>: "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended",
      <span class="hljs-attr">"xpath"</span>: "/rsm:CrossIndustryInvoice[1]/rsm:ExchangedDocumentContext[1]",
      <span class="hljs-attr">"attributes"</span>: [],
      <span class="hljs-attr">"ram:GuidelineSpecifiedDocumentContextParameter"</span>: {
        <span class="hljs-attr">"value"</span>: "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended",
        <span class="hljs-attr">"xpath"</span>: "/rsm:CrossIndustryInvoice[1]/rsm:ExchangedDocumentContext[1]/ram:GuidelineSpecifiedDocumentContextParameter[1]",
        <span class="hljs-attr">"attributes"</span>: [],
        <span class="hljs-attr">"ram:ID"</span>: {
          <span class="hljs-attr">"value"</span>: "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended",
          <span class="hljs-attr">"xpath"</span>: "/rsm:CrossIndustryInvoice[1]/rsm:ExchangedDocumentContext[1]/ram:GuidelineSpecifiedDocumentContextParameter[1]/ram:ID[1]",
          <span class="hljs-attr">"attributes"</span>: []
        }
      }
    },...<br></br>}
``````

```

</div></div></div></div></div>#### Wichtige Hinweise

<p class="callout info">**XPath-Kenntnisse:** Um effektive Mappings zu erstellen, benötigen Sie ein gutes Verständnis von XPath-Ausdrücken.</p>

<p class="callout info">**Testen:** Testen Sie Ihre Mappings gründlich mit verschiedenen XML-Dokumenten, um sicherzustellen, dass die Daten korrekt extrahiert werden.</p>

<p class="callout info">**Dokumentation:** Die API-Dokumentation von Squeeze bietet weitere Details zu den Endpunkten und Parametern.</p>

#### Ausblick

Sobald die Benutzeroberfläche für die Mapping-Erstellung verfügbar ist, wird diese Dokumentation entsprechend aktualisiert. Die API-Endpunkte bleiben jedoch weiterhin eine leistungsstarke Option für die Automatisierung und Integration von Mapping-Prozessen.

#### Siehe auch

- [XML-Mapping](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xml-mapping "XML-Mapping")

# Identifizierung von XML-Dokumenten in Squeeze

<p class="callout info">Verfügbarkeit ab Version 2.12.0</p>

Squeeze bietet eine intelligente Methode zur Identifizierung von XML-Dokumenten, um sicherzustellen, dass das richtige Mapping für die weitere Verarbeitung verwendet wird. Dieser Prozess stützt sich auf die Analyse von Namespaces und Klassifizierungsfeldern innerhalb des XML-Dokuments.

#### API-Endpunkt zur Identifizierung

Der Endpunkt `/xml/xpath/mappings/identify` dient zur Identifizierung des passenden Mappings für ein gegebenes XML-Dokument.

<div id="bkmrk-post-%2Fxml%2Fxpath%2Fmapp"><div>- **POST** `/xml/xpath/mappings/identify`: Identifiziert das passende Mapping für ein XML-Dokument basierend auf Namespaces und Klassifizierungsfeldern. Akzeptiert XML-Dateien oder PDFs mit eingebettetem XML.

</div></div>#### Anfrage (POST)

Der Endpunkt erwartet eine `multipart/form-data` Anfrage mit folgendem Parameter:

<div id="bkmrk-document-%28string%28bin"><div>- `document` (string(binary)): Datei, die das XML enthält. Kann eine PDF-Datei mit eingebettetem XML oder eine reine XML-Datei sein.

</div></div>#### Antwort (200 OK)

Bei erfolgreicher Identifizierung gibt der Endpunkt eine JSON-Antwort im folgenden Format zurück:

```JSON
{
  "matchedNamespaces": 0, // Anzahl der übereinstimmenden Namespaces
  "matchedClassifications": 0, // Anzahl der übereinstimmenden Klassifizierungen
  "namespaceScore": 0, // Score für die Übereinstimmung der Namespaces
  "classificationScore": 0, // Score für die Übereinstimmung der Klassifizierungsfelder
  "identificationScore": 0, // Gesamtscore der Identifizierung
  "mapping": { // Das identifizierte Mapping-Schema
    "id": 0,
    "name": "string",
    "systemMapping": true,
    "documentClassId": 0,
    "classificationFields": [
      {
        "id": 0,
        "mappingId": 0,
        "xpath": "string",
        "expectedValue": "string"
      }
    ],
    "namespaces": [
      {
        "id": 0,
        "prefix": "string",
        "uri": "string"
      }
    ],
    "fields": [
      {
        "id": 0,
        "fieldId": 0,
        "xpath": "string",
        "alternative": false
      }
    ],
    "tables": [
      {
        "id": 0,
        "mappingId": 0,
        "tableId": 0,
        "tableRootXPath": "string",
        "columns": [
          {
            "id": 0,
            "fieldId": 0,
            "xpath": "string",
            "alternative": false
          }
        ]
      }
    ]
  }
}
```

<div id="bkmrk-"><div><div><div><div>````</div></div></div></div></div>#### Fehlerantworten

<div id="bkmrk-400-bad-request%3A-ung"><div>- **400 Bad Request:** Ungültige Eingabe (z. B. keine Datei hochgeladen oder ungültiges Dateiformat).
- **404 Not Found:** Kein passendes Mapping gefunden.

</div></div>#### Funktionsweise der Identifizierung

<div id="bkmrk-namespace-abgleich%3A-"><div>1. **Namespace-Abgleich:** Squeeze analysiert die Namespaces im XML-Dokument und vergleicht sie mit den Namespaces in den verfügbaren Mappings.
2. **Klassifizierungsfeld-Abgleich:** Squeeze prüft die Werte der Klassifizierungsfelder im XML-Dokument und vergleicht sie mit den erwarteten Werten in den Mappings.
3. **Scoring:** Basierend auf den Übereinstimmungen in Namespaces und Klassifizierungsfeldern berechnet Squeeze einen Score, der angibt, wie sicher das Mapping identifiziert wurde.
4. **Auswahl des Mappings:** Das Mapping mit dem höchsten Score wird ausgewählt und für die weitere Verarbeitung verwendet.

</div></div>#### Ausblick: Konfigurierbare Gewichtung (Zukünftige Version)

In zukünftigen Versionen von Squeeze ist geplant, die Gewichtung von Namespaces und Klassifizierungsfeldern bei der Identifizierung konfigurierbar zu machen. Dies ermöglicht eine noch präzisere Anpassung an spezifische Anforderungen.

#### Wichtige Hinweise

<div id="bkmrk-eindeutige-identifiz"><div>- **Eindeutige Identifizierung:** Stellen Sie sicher, dass Ihre XML-Dokumente eindeutige Namespaces und Klassifizierungsfelder enthalten, um eine korrekte Identifizierung zu gewährleisten.
- **Optimierung:** Wenn die automatische Identifizierung nicht funktioniert, können Sie die Mappings anpassen oder neue Mappings erstellen, um die Genauigkeit zu verbessern.

</div></div>Durch die Nutzung dieses Endpunkts können Sie sicherstellen, dass Ihre XML-Dokumente korrekt klassifiziert und mit dem passenden Mapping verarbeitet werden, selbst wenn sie nicht den Standardformaten entsprechen.

# Auswertungstabellen XRechnung und ZUGFeRD

Standardmäßig werden bereits viele Felder automatisch erkannt und extrahiert. Eine Übersicht der standardmäßig unterstützten Felder finden Sie in den folgenden Tabellen:

**Kopfdaten:**

<div id="bkmrk-dokumentenklassen-fe"><div><table data-sourcepos="41:1-69:72" style="border-style: solid; height: 833px; width: 886px;"><tbody><tr data-sourcepos="41:1-41:17" style="height: 29px;"><th align="left" data-sourcepos="41:1-41:9" style="height: 16px; width: 155px;">**Dokumentenklassen-Feld**</th><th align="left" data-sourcepos="41:11-41:15" style="height: 16px; width: 731px;">**Xpath**</th></tr><tr data-sourcepos="43:1-43:63" style="height: 29px;"><td align="left" data-sourcepos="43:1-43:5" style="height: 29px; width: 155px;">VatId</td><td align="left" data-sourcepos="43:7-43:61" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:SELLER[1]/xr:Seller_VAT_identifier[1]`</td></tr><tr data-sourcepos="44:1-44:55" style="height: 46px;"><td align="left" data-sourcepos="44:1-44:17" style="height: 46px; width: 155px;">DocumentReference</td><td align="left" data-sourcepos="44:19-44:53" style="height: 46px; width: 731px;">`/xr:invoice[1]/xr:Invoice_number[1]`</td></tr><tr data-sourcepos="45:1-45:54" style="height: 29px;"><td align="left" data-sourcepos="45:1-45:12" style="height: 29px; width: 155px;">DocumentDate</td><td align="left" data-sourcepos="45:14-45:52" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:Invoice_issue_date[1]`</td></tr><tr data-sourcepos="46:1-46:103" style="height: 46px;"><td align="left" data-sourcepos="46:1-46:4" style="height: 46px; width: 155px;">IBAN</td><td align="left" data-sourcepos="46:6-46:101" style="height: 46px; width: 731px;">`/xr:invoice[1]/xr:PAYMENT_INSTRUCTIONS[1]/xr:CREDIT_TRANSFER[1]/xr:Payment_account_identifier[1]`</td></tr><tr data-sourcepos="47:1-47:60" style="height: 29px;"><td align="left" data-sourcepos="47:1-47:12" style="height: 29px; width: 155px;">CreditorName</td><td align="left" data-sourcepos="47:14-47:58" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:SELLER[1]/xr:Seller_name[1]`</td></tr><tr data-sourcepos="48:1-48:99" style="height: 29px;"><td align="left" data-sourcepos="48:1-48:15" style="height: 29px; width: 155px;">CreditorCountry</td><td align="left" data-sourcepos="48:17-48:97" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:SELLER[1]/xr:SELLER_POSTAL_ADDRESS[1]/xr:Seller_country_code[1]`</td></tr><tr data-sourcepos="49:1-49:82" style="height: 29px;"><td align="left" data-sourcepos="49:1-49:11" style="height: 29px; width: 155px;">ServiceDate</td><td align="left" data-sourcepos="49:13-49:80" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:DELIVERY_INFORMATION[1]/xr:Actual_delivery_date[1]`</td></tr><tr data-sourcepos="50:1-50:86" style="height: 29px;"><td align="left" data-sourcepos="50:1-50:11" style="height: 29px; width: 155px;">TotalAmount</td><td align="left" data-sourcepos="50:13-50:84" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:DOCUMENT_TOTALS[1]/xr:Invoice_total_amount_with_VAT[1]`</td></tr><tr data-sourcepos="51:1-51:53" style="height: 29px;"><td align="left" data-sourcepos="51:1-51:8" style="height: 29px; width: 155px;">Currency</td><td align="left" data-sourcepos="51:10-51:51" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:Invoice_currency_code[1]`</td></tr><tr data-sourcepos="52:1-52:59" style="height: 29px;"><td align="left" data-sourcepos="52:1-52:11" style="height: 29px; width: 155px;">OrderNumber</td><td align="left" data-sourcepos="52:13-52:57" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:Purchase_order_reference[1]`</td></tr><tr data-sourcepos="53:1-53:80" style="height: 29px;"><td align="left" data-sourcepos="53:1-53:9" style="height: 29px; width: 155px;">NetAmount</td><td align="left" data-sourcepos="53:11-53:78" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_taxable_amount[1]`</td></tr><tr data-sourcepos="54:1-54:76" style="height: 29px;"><td align="left" data-sourcepos="54:1-54:9" style="height: 29px; width: 155px;">TaxAmount</td><td align="left" data-sourcepos="54:11-54:74" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_tax_amount[1]`</td></tr><tr data-sourcepos="55:1-55:68" style="height: 29px;"><td align="left" data-sourcepos="55:1-55:7" style="height: 29px; width: 155px;">TaxRate</td><td align="left" data-sourcepos="55:9-55:66" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_rate[1]`</td></tr><tr data-sourcepos="56:1-56:81" style="height: 29px;"><td align="left" data-sourcepos="56:1-56:10" style="height: 29px; width: 155px;">NetAmount2</td><td align="left" data-sourcepos="56:12-56:79" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_taxable_amount[1]`</td></tr><tr data-sourcepos="57:1-57:77" style="height: 29px;"><td align="left" data-sourcepos="57:1-57:10" style="height: 29px; width: 155px;">TaxAmount2</td><td align="left" data-sourcepos="57:12-57:75" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_tax_amount[1]`</td></tr><tr data-sourcepos="58:1-58:69" style="height: 29px;"><td align="left" data-sourcepos="58:1-58:8" style="height: 29px; width: 155px;">TaxRate2</td><td align="left" data-sourcepos="58:10-58:67" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_rate[1]`</td></tr><tr data-sourcepos="59:1-59:81" style="height: 29px;"><td align="left" data-sourcepos="59:1-59:10" style="height: 29px; width: 155px;">NetAmount3</td><td align="left" data-sourcepos="59:12-59:79" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_taxable_amount[1]`</td></tr><tr data-sourcepos="60:1-60:77" style="height: 29px;"><td align="left" data-sourcepos="60:1-60:10" style="height: 29px; width: 155px;">TaxAmount3</td><td align="left" data-sourcepos="60:12-60:75" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_tax_amount[1]`</td></tr><tr data-sourcepos="61:1-61:69" style="height: 29px;"><td align="left" data-sourcepos="61:1-61:8" style="height: 29px; width: 155px;">TaxRate3</td><td align="left" data-sourcepos="61:10-61:67" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_rate[1]`</td></tr><tr data-sourcepos="62:1-62:47" style="height: 29px;"><td align="left" data-sourcepos="62:1-62:7" style="height: 29px; width: 155px;">DueDate</td><td align="left" data-sourcepos="62:9-62:45" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:Payment_due_date[1]`</td></tr><tr data-sourcepos="63:1-63:68" style="height: 29px;"><td align="left" data-sourcepos="63:1-63:12" style="height: 29px; width: 155px;">CreditorName</td><td align="left" data-sourcepos="63:14-63:66" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:SELLER[1]/xr:Seller_trading_name[1]`</td></tr><tr data-sourcepos="64:1-64:90" style="height: 29px;"><td align="left" data-sourcepos="64:1-64:12" style="height: 29px; width: 155px;">CreditorName</td><td align="left" data-sourcepos="64:14-64:88" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:SELLER[1]/xr:SELLER_CONTACT[1]/xr:Seller_contact_point[1]`</td></tr><tr data-sourcepos="65:1-65:79" style="height: 29px;"><td align="left" data-sourcepos="65:1-65:11" style="height: 29px; width: 155px;">TotalAmount</td><td align="left" data-sourcepos="65:13-65:77" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:DOCUMENT_TOTALS[1]/xr:Amount_due_for_payment[1]`</td></tr><tr data-sourcepos="66:1-66:100" style="height: 29px;"><td align="left" data-sourcepos="66:1-66:4" style="height: 29px; width: 155px;">IBAN</td><td align="left" data-sourcepos="66:6-66:98" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:PAYMENT_INSTRUCTIONS[1]/xr:DIRECT_DEBIT[1]/xr:Debited_account_identifier[1]`</td></tr><tr data-sourcepos="67:1-67:73" style="height: 29px;"><td align="left" data-sourcepos="67:1-67:8" style="height: 29px; width: 155px;">TaxRate3</td><td align="left" data-sourcepos="67:10-67:71" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_tax_rate[1]`</td></tr><tr data-sourcepos="68:1-68:73" style="height: 29px;"><td align="left" data-sourcepos="68:1-68:8" style="height: 29px; width: 155px;">TaxRate2</td><td align="left" data-sourcepos="68:10-68:71" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_tax_rate[1]`</td></tr><tr data-sourcepos="69:1-69:72" style="height: 29px;"><td align="left" data-sourcepos="69:1-69:7" style="height: 29px; width: 155px;">TaxRate</td><td align="left" data-sourcepos="69:9-69:70" style="height: 29px; width: 731px;">`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_tax_rate[1]`

</td></tr></tbody></table>

</div></div>**Positionen:**

<div id="bkmrk-spalte-xpath-posquan"><div><div><table data-sourcepos="41:1-47:75" style="height: 174px; width: 616px;"><tbody><tr data-sourcepos="41:1-41:18" style="height: 29px;"><th align="left" data-sourcepos="41:1-41:10" style="height: 29px; width: 142px;">**Spalte**</th><th align="left" data-sourcepos="41:12-41:16" style="height: 29px; width: 474px;">**Xpath**</th></tr><tr data-sourcepos="43:1-43:44" style="height: 29px;"><td align="left" data-sourcepos="43:1-43:11" style="height: 29px; width: 142px;">PosQuantity</td><td align="left" data-sourcepos="43:13-43:42" style="height: 29px; width: 474px;">`xr:Invoiced_quantity[1]/text()`</td></tr><tr data-sourcepos="44:1-44:62" style="height: 29px;"><td align="left" data-sourcepos="44:1-44:14" style="height: 29px; width: 142px;">PosDescription</td><td align="left" data-sourcepos="44:16-44:60" style="height: 29px; width: 474px;">`xr:ITEM_INFORMATION[1]/xr:Item_name[1]/text()`</td></tr><tr data-sourcepos="45:1-45:64" style="height: 29px;"><td align="left" data-sourcepos="45:1-45:14" style="height: 29px; width: 142px;">PosSinglePrice</td><td align="left" data-sourcepos="45:16-45:62" style="height: 29px; width: 474px;">`xr:PRICE_DETAILS[1]/xr:Item_net_price[1]/text()`</td></tr><tr data-sourcepos="46:1-46:53" style="height: 29px;"><td align="left" data-sourcepos="46:1-46:14" style="height: 29px; width: 142px;">PosTotalAmount</td><td align="left" data-sourcepos="46:16-46:51" style="height: 29px; width: 474px;">`xr:Invoice_line_net_amount[1]/text()`</td></tr><tr data-sourcepos="47:1-47:75" style="height: 29px;"><td align="left" data-sourcepos="47:1-47:10" style="height: 29px; width: 142px;">PosTaxRate</td><td align="left" data-sourcepos="47:12-47:73" style="height: 29px; width: 474px;">`xr:LINE_VAT_INFORMATION[1]/xr:Invoiced_item_VAT_rate[1]/text()`</td></tr></tbody></table>

</div></div></div><p class="callout warning">Um ein erfolgreiches Mapping von Spalten zu gewährleisten muss die Tabelle in der die Spalten angelegt werden den technischen Namen "LineItems" besitzen.</p>

<p class="callout info">Doppelte Felder werden als Alternativen dem Feldwert angehängt</p>

<p class="callout info">Sollte der Standard nicht ausreichen, so lesen sie [**hier**](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-xml-auswertung "Konfiguration XML-Auswertung") wie sie die Auswertung erweitern können</p>

# Konfiguration XML-Auswertung

<p class="callout info">Ab Version 2.13 verfügbar und nach Freischaltung durch Partner oder Dexpro !</p>

Standardmäßig liefert Squeeze eine Vielzahl von vordefinierten Mappings zur Extraktion von Kopfdaten aus Rechnungen. Um die bestmögliche Datenerfassung zu gewährleisten, können Sie diese Mappings individuell anpassen und erweitern. Diese Seite bietet eine Anleitung zur Konfiguration von Kopfdaten/Positionsdaten-Mappings im XML-Format.

In der Administration finden Sie einen neuen Unterpunkt (**ZUGFeRD und XRechnung**):

[![image-1729690323813.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729690323813.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729690323813.png)

---

2\. Sobald Sie den Menüpunkt gewählt haben, kommen Sie in eine tabellarische Übersicht. Auf dieser sollten Sie bereits einige Einträge sehen, die sie nicht bearbeiten können, denn dabei handelt es sich um die Standard-Auswertungen; beschrieben in: [XRechnung und ZUGFeRD Auswertungstabellen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd-auswertungstabellen "XRechnung und ZUGFeRD Auswertungstabellen"):

[![image-1729692901242.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729692901242.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729692901242.png)

---

**Priorisierung der Mappings**

Die Reihenfolge der Mappings spielt eine wichtige Rolle bei der Auswertung der Kopffelder. Squeeze verwendet ein hierarchisches System, um zu bestimmen, welches Mapping für ein bestimmtes Feld verwendet werden soll.

**Hierarchie:**

1. **Spezifische Mappings:** Mappings, die für einen bestimmten Mandanten, Kreditor und eine Dokumentenklasse definiert sind, haben die höchste Priorität.
2. **Mandanten- und Kreditor-spezifische Mappings:** Sind keine spezifischen Mappings vorhanden, werden Mappings verwendet, die für einen Mandanten und Kreditor definiert sind, unabhängig von der Dokumentenklasse.
3. **Allgemeine Mappings:** Danach folgen Mappings, die nur für die Dokumentenklasse definiert sind, unabhängig von Mandant und Kreditor.
4. **Standard Mappings:** Mappings, die für alle Mandanten, Kreditoren und Dokumentenklassen gelten (Auslieferungszustand), haben die niedrigste Priorität.

Siehe:

<table id="bkmrk-prio-mandant-kredito" style="width: 585px; height: 306px;"><tbody><tr style="height: 53px;"><td style="width: 55px; height: 35px;">**Prio**

</td><td style="width: 104px; height: 35px;">**Mandant**

</td><td style="width: 100px; height: 35px;">**Kreditor**

</td><td style="width: 153px; height: 35px;">**Dokumentenklasse**

</td><td style="width: 173px; height: 35px;">**System-Konfiguration**

</td></tr><tr style="height: 34px;"><td style="width: 55px; height: 34px;">1

</td><td style="width: 104px; height: 34px;">definiert

</td><td style="width: 100px; height: 34px;">definiert

</td><td style="width: 153px; height: 34px;">definiert

</td><td style="width: 173px; height: 34px;">false vor true

</td></tr><tr style="height: 34px;"><td style="width: 55px; height: 34px;">2

</td><td style="width: 104px; height: 34px;">definiert

</td><td style="width: 100px; height: 34px;">definiert

</td><td style="width: 153px; height: 34px;">\*

</td><td style="width: 173px; height: 34px;">false vor true

</td></tr><tr style="height: 34px;"><td style="width: 55px; height: 34px;">3

</td><td style="width: 104px; height: 34px;">\*

</td><td style="width: 100px; height: 34px;">definiert

</td><td style="width: 153px; height: 34px;">definiert

</td><td style="width: 173px; height: 34px;">false vor true

</td></tr><tr style="height: 34px;"><td style="width: 55px; height: 34px;">4

</td><td style="width: 104px; height: 34px;">\*

</td><td style="width: 100px; height: 34px;">definiert

</td><td style="width: 153px; height: 34px;">\*

</td><td style="width: 173px; height: 34px;">false vor true

</td></tr><tr style="height: 34px;"><td style="width: 55px; height: 34px;">5

</td><td style="width: 104px; height: 34px;">definiert

</td><td style="width: 100px; height: 34px;">\*

</td><td style="width: 153px; height: 34px;">definiert

</td><td style="width: 173px; height: 34px;">false vor true

</td></tr><tr style="height: 34px;"><td style="width: 55px; height: 34px;">6

</td><td style="width: 104px; height: 34px;">\*

</td><td style="width: 100px; height: 34px;">\*

</td><td style="width: 153px; height: 34px;">definiert

</td><td style="width: 173px; height: 34px;">false vor true

</td></tr><tr style="height: 34px;"><td style="width: 55px; height: 34px;">7

</td><td style="width: 104px; height: 34px;">definiert

</td><td style="width: 100px; height: 34px;">\*

</td><td style="width: 153px; height: 34px;">\*

</td><td style="width: 173px; height: 34px;">false vor true

</td></tr><tr style="height: 33px;"><td style="width: 55px; height: 33px;">8

</td><td style="width: 104px; height: 33px;">\*

</td><td style="width: 100px; height: 33px;">\*

</td><td style="width: 153px; height: 33px;">\*

</td><td style="width: 173px; height: 33px;">false vor true

</td></tr></tbody></table>

---

**Anlage neuer Mappings für Kopffelder**

Im Tab **Kopffelder** können Sie neue Mappings anlegen. Dabei wählen Sie die Filterkriterien wie gewünscht.   
Beachten Sie dabei, solange keine Dokumentenklasse gewählt wurde, werden ihnen unter **Feldname** alle Felder aller verfügbaren Dokumentenklassen aufgelistet.

[![image-1729696517595.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729696517595.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729696517595.png)

---

**Anlage neuer Mappings für Positionsfelder**

Im Tab **Positionen** können Sie neue Mappings anlegen, dabei wählen Sie die Filterkriterien wie gewünscht.   
Beachten Sie dabei, solange keine Dokumentenklasse gewählt wurde werden ihnen unter **Spaltenname** alle Spalten der verfügbaren <span style="text-decoration: underline;">("LineItems-Tabellen")</span> Dokumentenklassen angezeigt.

**Wichtig:** Es werden nur Spalten aus Dokumentenklassen angezeigt, deren technischer Tabellenname "LineItems" ist.

[![image-1729696997227.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729696997227.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729696997227.png)

<p class="callout danger">Bei der der Ermittlung der Spalten werden die konfigurierten Xpath-Ausdrücke mit folgendem Tabellenknotenpunkt ausgewertet: `/xr:invoice/xr:INVOICE_LINE`.  
Das hat zur folge, dass sie nur Kindelemente des Tabellenknotenpunktes `/xr:invoice/xr:INVOICE_LINE` zur Auswertung der Spalten verwenden dürfen.  
  
<span style="text-decoration: underline;">**Beispiel**:</span>   
Tabellenknotenpunkt-Xpath: `/xr:invoice/xr:INVOICE_LINE`  
  
Spalten-Xpath-Ausdruck: `xr:PRICE_DETAILS[1]/xr:Item_net_price[1]/text()`  
  
Daher achten Sie darauf bei den Spalten-Xpath-Audrücken **kein** "`/`" am Anfang zu setzen. </p>

---

**XML-Konformitäts-Prüfung**

Seit Version 2.15 bietet die Konfigurationsoberfläche eine integrierte Funktion zur Überprüfung von ZUGFeRD/XRechnung-Dokumenten. Hiermit kann die Konformität des XML-Dokuments mit den spezifischen Anforderungen der gewählten XRechnung-Version bewertet werden.

[![image-1732541947877.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732541947877.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732541947877.png)

Sobald sie ein Dokument hochgeladen haben, erhalten Sie in einem das Ergebnis der Prüfung.

[![image-1732542259242.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732542259242.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732542259242.png)

<p class="callout info">Sollte das Ergebnis, negativ ausfallen, wird das Dokument dennoch von Squeeze verarbeitet.</p>

<p class="callout info">Eine PDF-Prüfbericht steht Ihnen ab Version 2.15 und nach Freischaltung unserer Berater oder Partner in der Validierung zur Verfügung, siehe [hier](https://docs.squeeze.one/link/500#bkmrk-pdf-pr%C3%BCfbericht-kosi).</p>

---

**Allgemeine Infos**

<p class="callout warning">Kontrollieren Sie ihren eingegeben XPath auf einer geeigneten Seite wie zum Beispiel:  
[http://xpather.com/](http://xpather.com/)</p>

<p class="callout warning">Die Auswertung der Xpaths erfolgt auf dem intermediate.xml . Die XML-Datei kann durch ein Download der Anhänge aus der technischen Warteschlange gewonnen werden.</p>

# XML Formate in Squeeze

Dieser Artikel beschreibt die allgemeine Verarbeitung von E-Rechnungen im XML-Format und welche EN16931-konformen XML-Dokumente Squeeze verarbeiten kann.   
Die folgende Tabelle listet die aktuellsten Versionen der Formate auf, die Squeeze prüft, wenn ein XML-Dokument als eingebettete XML in einem PDF (z. B. ZUGFeRD) oder als einzelnes Dokument (z. B. XRechnung) vorliegt.

<table border="1" id="bkmrk-standard-version-%C2%A0-%C2%A0" style="border-collapse: collapse; width: 100%; height: 116px;"><tbody><tr style="height: 29px;"><td style="width: 50%; height: 29px;">**Standard**</td><td style="width: 50%; height: 29px;">**Version**</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">Factur-X</td><td style="width: 50%; height: 29px;">1.0 bis 1.0.07</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">ZUGFeRD</td><td style="width: 50%; height: 29px;">1.0 bis 2.3</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">XRechnung</td><td style="width: 50%; height: 29px;">1.0 bis 3.0.2</td></tr></tbody></table>

<p class="callout info">In Zukunft wird Squeeze unabhängig von Formaten, XML-Dokumente verarbeiten können </p>

# XML-Prüfbericht KoSIT

Diese Seite bietet eine umfassende Anleitung zur Konfiguration und Durchführung von KoSIT-Prüfberichten für XML-Daten.

<p class="callout info">Die Erstellung des XML-Prüfberichtes erfordert Internetzugriff und ist in abgekapselten Intranet-Strukturen vorerst nicht einsetzbar. </p>

#### Konfiguration des externen Dienstes

##### Vor SQUEEZE 2.21

Damit die Erzeugung des Prüfberichtes erfolgen kann muss ein neuer Dienst in der Server-/ Mandanten-Konfiguration konfiguriert werden. Der Dienst ist aktuellen Zeitpunkt(23.11.24) noch auf keinen festen Host bestimmt, daher erfragen Sie den aktuellen Host bei unseren Beratern

```JSON
{
  ...,
  "digivoice": {
        "baseUrl": "https://{digivoice.example.host}/apis/digivoice/v1"
  },
  ...,
}
```

Nachdem der Dienst in einer der Konfigurationsdateien konfiguriert ist, können Sie in Squeeze die [Stapelklasseneigenschaft XmlValidationReport](https://docs.squeeze.one/link/414#bkmrk-xmlvalidatioinreport) (ab Squeeze v2.15.0) aktivieren.

##### Ab SQUEEZE 2.21

Ab Squeeze 2.21 wird ein anderes, dediziertes Backend für die KoSIT Prüfung genutzt. Mit Diesem werden zwei Optionen angeboten: **Lokal** und **Remote**.

Bei der **lokalen** Prüfung wird ein lokales Java-Tool genutzt, um den Prüfbericht zu erzeugen. Da dieses Tool für jeden Aufruf gestartet werden muss, ist diese Variante langsam und benötigt pro Ausführung ca. 2 GB RAM auf dem Server.

Die **remote** Prüfung nutzt die von uns betriebene Online-Variante des Tools und ermöglicht eine wesentlich schnellere Prüfung ohne zusätzliche Ressourcen-Belastung des Squeeze-Servers.

Welche Variante genutzt wird, kann in der Mandantenkonfiguration hinterlegt werden:

```JSON
{
  ...,
  "kosit": {
  	"validationType": "remote", // Oder "local" für die lokale Prüfung
  	"remoteServiceUrl": "https://kosit-validator.squeeze.one"
  },
  ...,
}
```

Es müssen ebenfalls Projekt-Zugangsdaten (OAuth Client Credentials) für das DEXPRO Portal hinterlegt und aktiviert sein (diese erfragen Sie ggf. bei ihrem zuständigen Berater), damit SQUEEZE sich bei dem Online-Service authentifizieren kann:

```JSON
{
  ...,
  "portal": {
  	"enabled": "True",
  	"host": "https://portal.dexpro.de"
  	"auth": {
  	  "clientId": "<Ihre Tenant-ID>",
  	  "secret": "<Ihr Client Secret>"
	}
  },
  ...,
}
```

Nachdem der Dienst in einer der Konfigurationsdateien konfiguriert ist, können Sie in Squeeze die [Stapelklasseneigenschaft XmlValidationReport](https://docs.squeeze.one/link/414#bkmrk-xmlvalidatioinreport) aktivieren.

---

##### KoSIT-Prüfbericht

Wird die Stapelklasseneigenschaft genutzt, so erstellt Squeeze den KoSIT-Prüfbericht zu Beginn des Verarbeitungsprozesses. Sollte es während der Belegerstellung zu Fehlern kommen, beeinflusst dies die restliche Verarbeitung des Beleges in der Regel nicht. Dadurch wird sichergestellt, dass auch bei Problemen eine umfassende Verarbeitung des Dokumentes zur Verfügung steht.

Den KoSIT Prüfbericht, können Sie sich in der Validierung des Dokumentes anzeigen lassen.

[![image-1732540543961.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732540543961.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732540543961.png)  
<sub>Validierungsoberfläche</sub>

# Mandanten- und Lieferanten- Erkennung

##### **Einleitung**

Sowohl bei elektronischen Rechnungen im [XRechnung- oder ZUGFeRD-Format](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/chapter/digitale-formate-xml-xrechnung-zugferd "Digitale Formate (XML, XRechnung, ZUGFeRD)") als auch bei der Verarbeitung beliebiger XML-Dokumente (generische XML-Verarbeitung) wird die Extraktion von Lieferanten- (Kreditoren) und Mandanten-Schlüsseln nach demselben grundlegenden Prinzip durchgeführt. Ziel ist es, die in den elektronischen Rechnungen enthaltenen Informationen zu Geschäftspartnern effizient und zuverlässig in unser internes System zu überführen, um eine weitere Verarbeitung zu ermöglichen.

**Prozessbeschreibung**

<div id="bkmrk-identifikation-relev"><div>1. **Identifikation relevanter Daten:** In den eingehenden XML-Dokumenten werden die für Geschäftspartner relevanten Daten (z.B. Name, Adresse, Steuernummer) identifiziert.
2. **Zuordnung zu einem Feldkatalog:** Die identifizierten Daten werden anhand eines [vordefinierten Feldkatalogs](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/auswertungstabellen-xrechnung-und-zugferd "Auswertungstabellen XRechnung und ZUGFeRD") den entsprechenden Feldern in unserem internen System zugeordnet.
3. **Mapping auf interne Schlüssel:** Die zugeordneten Daten werden anschließend unseren internen Schlüsseln für Geschäftspartner zugewiesen.

</div></div>##### **Detaillierte Betrachtung der Zuordnung für Mandanten und Kreditoren**

**Mandanten**

<div id="bkmrk-suche-in-der-company"><div>- **Suche in der companysearch:** Zunächst wird der in der XML angegebene Mandantenname in unserer internen Firmensuche (companysearch) abgeglichen. Falls ein Treffer gefunden wird, wird der zugehörige interne Schlüssel verwendet.
- **Suche nach der VAT-ID:** Wenn keine Übereinstimmung in der Firmensuche gefunden wird, wird die in der XML angegebene Umsatzsteuer-Identifikationsnummer (VAT-ID) in unserer Tabelle "Companies" gesucht. Falls hier ein Eintrag existiert, wird der entsprechende interne Schlüssel verwendet.
- **Kein Treffer:** Wenn keine der beiden Bedingungen erfüllt ist, bleibt der Eintrag für den Mandanten leer.

</div></div>**Kreditoren**

<div id="bkmrk-suche-in-der-credito"><div>- **Suche in der creditorsearch:** Analog zur Mandantenidentifikation wird zunächst der in der XML angegebene Kreditorenname in unserer internen Kreditoren-Suche (creditorsearch) abgeglichen. Falls ein Treffer gefunden wird, wird der zugehörige interne Schlüssel verwendet.
- **Suche nach der VAT-ID des Kreditors:** Wenn keine Übereinstimmung in der Kreditoren-Suche gefunden wird, wird die in der XML angegebene Umsatzsteuer-Identifikationsnummer (VAT-ID) des Kreditors in unserer Tabelle "Creditors" gesucht. Falls hier ein Eintrag existiert, wird der entsprechende interne Schlüssel verwendet.
- **Kein Treffer:** Wenn keine der beiden Bedingungen erfüllt ist, bleibt der Eintrag für den Kreditoren leer.

</div></div>##### **Zusammenfassung der Mechanismen**

<div id="bkmrk-gesch%C3%A4ftspartner-bed"><div><div><div><div><div><table data-sourcepos="40:1-44:66"><tbody><tr data-sourcepos="40:1-40:41"><th data-sourcepos="40:1-40:18" style="width: 146px;">**Geschäftspartner**</th><th data-sourcepos="40:20-40:30" style="width: 258px;">**Bedingung**</th><th data-sourcepos="40:32-40:39" style="width: 403px;">**Aktion**</th></tr><tr data-sourcepos="42:1-42:105"><td data-sourcepos="42:1-42:18" style="width: 146px;">Mandant/Kreditor</td><td data-sourcepos="42:20-42:58" style="width: 258px;">Name gefunden in entsprechender Suche</td><td data-sourcepos="42:60-42:103" style="width: 403px;">Interner Schlüssel aus der Suche verwenden</td></tr><tr data-sourcepos="43:1-43:121"><td data-sourcepos="43:1-43:18" style="width: 146px;">Mandant/Kreditor</td><td data-sourcepos="43:20-43:57" style="width: 258px;">Name nicht gefunden, VAT-ID gefunden</td><td data-sourcepos="43:59-43:119" style="width: 403px;">Interner Schlüssel aus der entsprechenden Tabelle verwenden</td></tr><tr data-sourcepos="44:1-44:66"><td data-sourcepos="44:1-44:18" style="width: 146px;">Mandant/Kreditor</td><td data-sourcepos="44:20-44:42" style="width: 258px;">Keine Übereinstimmung</td><td data-sourcepos="44:44-44:64" style="width: 403px;">Eintrag bleibt leer</td></tr></tbody></table>

</div></div></div></div></div></div>````

# Umschlüsselung von Codes eines elektronischen Beleges

Diese Seite erklärt das Verfahren, wie Codes eine elektronischen Beleges in andere Werte umgeschlüsselt werden können.  
Das Beispiel orientiert sich auf den Vorgang des Beleges z. B. Rechnung oder Gutschrift. Es kann aber auf jeden anderen Wert angewendet werden.

#### Voraussetzung

Diese Umschlüsselung bezieht sich auf die elektronischen Formate ZUGFeRD und XRechung.  
Damit ein Code aus der XML-Datei in einen neuen Wert umgeschlüsselt werden kann, muss zunächst sichergestellt werden, dass der Code aus der XML-Datei stammt. In diesem Beispiel wohlen wir die Standard Vorgänge

- Code 380 = Rechung
- Code 381 = Gutschrift

um weitere Vorgangsarten ergänzen.

Im Standard wird die Zuordnung der Codes 380 und 381 bereits durch die Invoice-Solution von Squeeze durchgeführt.  
Um dieses Verhalten anzupassen muss zunächst eine neues Feld-Mapping hinzugefügt werden:

[![image-1739887349989.png](https://docs.squeeze.one/uploads/images/gallery/2025-02/scaled-1680-/image-1739887349989.png)](https://docs.squeeze.one/uploads/images/gallery/2025-02/image-1739887349989.png)

Dieses Mapping ermöglicht, dass beim Auslesen des Codes der XML Datei, eine Umschlüsselung durchgeführt werden kann, da sonst der Standard der Invoice Solution genutzt wird.

<p class="callout warning">Bitte Groß-/ Kleinschreibung beachten:  
Der XPath ist case-sensitiv. Das bedeutet das der XPath so geschrieben sein muss, wie er in der XML-Datei angegeben ist.  
  
/xr:invoice/xr:Invoice\_type\_code</p>

#### Umschlüsselung anderer Codes

Ab der Version 2.16 wurde eine neue Tabelle (einvoice\_value\_mapping) eingeführt, die genutzt werden kann, um individuell andere Werte statt der Codes zu nutzen und selbst festlegen zu können. Die Tabelle befindet sich unter dem Menüpunkt Stammdaten:

[![image-1739888029319.png](https://docs.squeeze.one/uploads/images/gallery/2025-02/scaled-1680-/image-1739888029319.png)](https://docs.squeeze.one/uploads/images/gallery/2025-02/image-1739888029319.png)

In dieser Tabelle lassen sich die Umschlüsselungen sehr genau konfigurieren. Ähnlich wie bei den Mappings lassen sie die Umschlüsselungen je Unternehmen, Lieferant, Dokumentenklasse und Feld konfigurieren. Hier ein Beispiel, wie die Standard-Codes 380 (Rechnung) und 381 (Gutschrift) um einen weiteren Eintrag 384 (Rechnungskorrektur) erweitern lassen:

[![image-1739888420199.png](https://docs.squeeze.one/uploads/images/gallery/2025-02/scaled-1680-/image-1739888420199.png)](https://docs.squeeze.one/uploads/images/gallery/2025-02/image-1739888420199.png)

Dieses Vorgehen lässt sich nicht nur auf Kopffelder anwenden, sondern auch auf Positionsangaben. So lässt sich mit dieser Möglichkeit auch gut die Umschlüsselung von Mengeneinheiten realisieren.

Hier ein weiteres Beispiel für Mengeneinheiten:

[![image-1739889067021.png](https://docs.squeeze.one/uploads/images/gallery/2025-02/scaled-1680-/image-1739889067021.png)](https://docs.squeeze.one/uploads/images/gallery/2025-02/image-1739889067021.png)

Die Listen lassen sich exportieren und auch wieder importieren, was die Übertragung von Test in Produktivsysteme oder andersherum sehr vereinfacht.