Die Datev XML Schnittstelle Action erzeugt ein DATEV-konformes ZIP-Paket (LedgerImport-Format v6.0) bestehend aus einer document.xml, einer Rechnungsdaten-XML sowie dem Original-Belegdokument und legt dieses als neues Objekt in docuvita ab. Von dort kann es heruntergeladen und in DATEV Unternehmen Online importiert werden.
Unterstützte Buchführungskreise:
| Wert | Beschreibung |
|---|---|
Success |
Das DATEV-ZIP wurde erfolgreich erzeugt und in docuvita abgelegt. |
Failure |
Ein technischer Fehler ist aufgetreten (z.B. beim Schreiben oder Upload). Details stehen im docuvita-Serverlog. |
EXPORT_FAILED_REJECTED |
Die Plausibilitätsprüfung hat die Buchungsdaten vor der Erzeugung abgelehnt (DATEV-Regelverstoß). Es wird kein ZIP erzeugt. Der vollständige Ablehnungstext wird zusätzlich in die Workflowvariable REJECT_REASON geschrieben. |
Hinweis zu
EXPORT_FAILED_REJECTED: Bei einer Ablehnung legt die Action den Klartext-Grund in der WorkflowvariableREJECT_REASON(TypS) ab. Der Text ist mehrzeilig (eine Zeile je Verstoß) und kann dem Anwender direkt angezeigt werden, z.B. in einer Benutzeraktion oder Benachrichtigung. Damit die Transition greift, muss im Workflow-Designer ein ÜbergangEXPORT_FAILED_REJECTEDdefiniert sein.
| Feldname | Typ | Pflicht | Beschreibung |
|---|---|---|---|
ObjectTypeName |
Text | Ja | Interner Name des Ziel-Objekttyps in docuvita, unter dem das DATEV-ZIP abgelegt wird. |
ParentId |
Text | Nein | Numerische ID des übergeordneten docuvita-Objekts (0 = Root). |
Type |
Auswahl | Ja | DATEV-Buchführungskreis. Bestimmt den XML-Elementnamen und den Dokumententyp. |
OrderType |
Text | Ja | Frei wählbare Belegart-Bezeichnung (DATEV Key3), z.B. Eingangsrechnungen. Max. 120 Zeichen. |
OrderNumber |
Text | Nein | Rechnungsnummer (DATEV invoiceId). Erlaubte Zeichen: a–z A–Z 0–9 $ % & * + - /. Max. 36 Zeichen. |
OrderDate |
Text | Nein | Belegdatum. Akzeptiert alle .NET-parsbaren Formate, z.B. 20.04.2026 oder 2026-04-20. |
Gültige Werte für Type:
| Wert | Bedeutung | DATEV Dokumententyp |
|---|---|---|
accountsPayableLedger |
Kreditorenbuchhaltung (Eingangsrechnungen) | 1 |
accountsReceivableLedger |
Debitorenbuchhaltung (Ausgangsrechnungen) | 2 |
cashLedger |
Kassenbuch | 1 |
| Feldname | Typ | Pflicht | Beschreibung |
|---|---|---|---|
Amount |
Text | Nein | Brutto-Rechnungsbetrag. Akzeptiert deutsche (9,99) und englische (9.99) Schreibweise. Wertebereich: -9999999999.99 bis 9999999999.99, nicht 0.00. Genau 2 Nachkommastellen. |
CurrencyCode |
Text | Nein | Währungscode nach ISO 4217, genau 3 Großbuchstaben. Beispiele: EUR, USD, CHF. Nur von DATEV unterstützte Codes sind gültig. |
ExchangeRate |
Text | Nein | Wechselkurs zur Basiswährung. Eingabe als 1, 1.5 oder 1,5 möglich – wird automatisch auf 6 Nachkommastellen formatiert. Wertebereich: 0.000001–9999.999999. Bei EUR-Rechnungen: 1. |
SupplierNumber |
Text | Nein | DATEV-Personenkontonummer wie im DATEV-Mandanten angelegt. Rein numerisch, 5–9 Stellen, Wertebereich 10000–999999999. Beispiel: 70001. |
CostCenter |
Text | Nein | Kostenstelle (DATEV costCategoryId). Alphanumerisch, max. 36 Zeichen, kein führendes oder nachfolgendes Leerzeichen. Beispiel: K100. |
CostObjective |
Text | Nein | Kostenträger / 2. Kostenstelle (DATEV costCategoryId2). Alphanumerisch, max. 36 Zeichen. Beispiel: P001. |
Information |
Text | Nein | Freitextinformation zur Buchung (DATEV information). Beliebige Zeichen, max. 120 Zeichen. |
AccountNo |
Text | Nein | Sachkonto / Gegenkonto (DATEV accountNo). Numerische DATEV-Kontonummer, 4–9 Stellen. Beispiel: 4400. |
BuCode |
Text | Nein | Buchungsschlüssel / Steuerschlüssel (DATEV buCode). Numerisch, max. 4 Stellen. Beispiel: 9 (19% Vorsteuer). |
Tax |
Text | Nein | Steuersatz in % (DATEV tax), nicht der Steuerbetrag. Beispiel: 19 oder 19,00 für 19 %. Akzeptiert deutsche und englische Schreibweise, wird auf 2 Nachkommastellen formatiert. Wertebereich: > 0 bis 99,99. |
BookingText |
Text | Nein | Buchungstext (DATEV bookingText). Beliebige Zeichen, max. 30 Zeichen. Im Kassenbuch (cashLedger) ist dieses Feld erforderlich. |
PartyId |
Text | Nein | Kundennummer des Geschäftspartners (DATEV partyId). Max. 15 Zeichen. |
PaidAt |
Text | Nein | Zahldatum (DATEV paidAt). Beleg erhält Stempel „bezahlt". Akzeptiert alle .NET-parsbaren Formate, z.B. 20.04.2026 oder 2026-04-20. |
DueDate |
Text | Nein | Fälligkeitsdatum ohne Skonto (DATEV dueDate). Akzeptiert alle .NET-parsbaren Formate, z.B. 20.04.2026 oder 2026-04-20. |
AccountName |
Text | Nein | Bezeichnung des Sachkontos (DATEV accountName). Max. 40 Zeichen. |
CostAmount |
Text | Nein | KOST-Menge für die Kostenrechnung (DATEV costAmount). Wird auf 4 Nachkommastellen formatiert (z.B. 5 → 5.0000). |
TypeOfReceivable |
Text | Nein | Forderungsart (DATEV typeOfReceivable), OPOS-Informationen kommunal. Max. 10 Zeichen. |
InternalInvoiceId |
Text | Nein | Interne Rechnungsnummer (DATEV internalInvoiceId). Max. 12 Zeichen. |
PaymentConditionsId |
Text | Nein | Zahlungsbedingungsnummer (DATEV paymentConditionsId). Numerisch, 9–999. Schließt die Angabe von Skonto-/Fälligkeitsfeldern aus. |
PaymentOrder |
Text | Nein | Lastschrift/Überweisung erstellen (DATEV paymentOrder). true oder false. |
DeliveryDate |
Text | Nein | Leistungsdatum (DATEV deliveryDate). Setzt automatisch consolidatedDeliveryDate. Akzeptiert alle .NET-parsbaren Formate. |
OrderId |
Text | Nein | Auftragsnummer / Transaktions-ID, z.B. von PayPal (DATEV orderId). Max. 30 Zeichen. Setzt automatisch consolidatedOrderId. |
Hinweis zu
SupplierNumber: Der Wert muss die rein numerische DATEV-Kontonummer sein, wie sie im DATEV-Mandanten unter Stammdaten hinterlegt ist. Buchstaben-Präfixe (z.B.Lfür Lieferant) sind nicht zulässig und führen zur Ablehnung durch das DATEV-Prüftool.
Hinweis zu
Tax: Das Feld enthält den Steuersatz in Prozent (z.B.19), nicht den Steuerbetrag in Euro. Dies entspricht dem DATEV-Elementtax.
Skonto-Angaben sind nur in Verbindung mit einem Personenkonto (SupplierNumber) zulässig. Die Felder einer Skonto-Stufe müssen immer gemeinsam angegeben werden (Betrag, Prozentsatz und Fälligkeitsdatum). Skonto 2 ist nur zusammen mit Skonto 1 erlaubt. Bei gesetzter PaymentConditionsId dürfen keine Skonto-Felder angegeben werden.
| Feldname | Typ | Pflicht | Beschreibung |
|---|---|---|---|
DiscountAmount |
Text | Nein | Skontobetrag 1 (DATEV discountAmount). Akzeptiert deutsche (9,99) und englische (9.99) Schreibweise, 2 Nachkommastellen. Muss kleiner als Amount sein. |
DiscountPercentage |
Text | Nein | Skontoprozentsatz 1 in % (DATEV discountPercentage). Wertebereich: > 0 bis 99,99. Muss größer als DiscountPercentage2 sein. |
DiscountPaymentDate |
Text | Nein | Fälligkeitsdatum mit Skonto 1 (DATEV discountPaymentDate). Liegt nach dem Belegdatum und vor DiscountPaymentDate2/DueDate. |
DiscountAmount2 |
Text | Nein | Skontobetrag 2 (DATEV discountAmount2). 2 Nachkommastellen. Muss kleiner als DiscountAmount sein; Summe beider Skontobeträge kleiner als Amount. |
DiscountPercentage2 |
Text | Nein | Skontoprozentsatz 2 in % (DATEV discountPercentage2). Wertebereich: > 0 bis 99,99. |
DiscountPaymentDate2 |
Text | Nein | Fälligkeitsdatum mit Skonto 2 (DATEV discountPaymentDate2). Liegt nach DiscountPaymentDate und vor DueDate. |
Felder für das One-Stop-Shop-Verfahren (OSS) und die Umsatzsteuer-Identifikation.
| Feldname | Typ | Pflicht | Beschreibung |
|---|---|---|---|
OwnVatId |
Text | Nein | Eigene Umsatzsteuer-ID (DATEV ownVatId), insb. für OSS-Verfahren. Max. 15 Zeichen. |
VatId |
Text | Nein | Umsatzsteuer-ID des Geschäftspartners (DATEV vatId), insb. für OSS-Verfahren. Max. 15 Zeichen. |
ShipFromCountry |
Text | Nein | Abgangsland, 2-stelliges Nationalitätskennzeichen nach ISO 3166 (DATEV shipFromCountry). |
ShipToCountry |
Text | Nein | Bestimmungsland, 2-stelliges Nationalitätskennzeichen nach ISO 3166 (DATEV shipToCountry). |
| Feldname | Typ | Pflicht | Beschreibung |
|---|---|---|---|
BankCode |
Text | Nein | Bankleitzahl (BLZ), numerisch, max. 10 Stellen. Beispiel: 70090100. |
BankAccount |
Text | Nein | Kontonummer des Geschäftspartners (ohne IBAN), max. 30 Zeichen. Beispiel: 56789805. |
BankCountry |
Text | Nein | Länderkürzel der Bank nach ISO 3166-1 alpha-2, genau 2 Großbuchstaben. Beispiele: DE, AT, CH. |
Iban |
Text | Nein | IBAN nach ISO 13616, max. 34 Zeichen. Format: 2 Großbuchstaben + 2 Prüfziffern + bis zu 30 alphanumerische Stellen. Beispiel: DE56810930440056789805. |
SwiftCode |
Text | Nein | BIC/SWIFT-Code, max. 11 Zeichen. Format: 4 Bankcode + 2 Ländercode + 2 Ortscode + optional 3 Filialcode. Beispiel: GENODEF1OBG. |
| Feldname | Typ | Pflicht | Beschreibung |
|---|---|---|---|
SupplierName |
Text | Nein | Name des Lieferanten. Wird bei accountsPayableLedger als supplierName übergeben. Max. 50 Zeichen. |
SupplierCity |
Text | Nein | Stadt des Lieferanten, max. 30 Zeichen. Beispiel: München. |
CustomerName |
Text | Nein | Name des Kunden. Wird bei accountsReceivableLedger als customerName übergeben. Max. 50 Zeichen. |
CustomerCity |
Text | Nein | Stadt des Kunden, max. 30 Zeichen. Beispiel: Berlin. |
Das Repository definiert die Ordnerstruktur in DATEV Unternehmen Online. Die Ebenen bauen hierarchisch aufeinander auf: Ebene 2 erfordert Ebene 1, Ebene 3 erfordert Ebene 1 und 2. Werden alle Felder weggelassen, legt DATEV den Beleg ohne Ordnerstruktur ab.
| Feldname | Typ | Pflicht | Beschreibung |
|---|---|---|---|
RepositoryLevel1 |
Text | Nein | Oberste Ordnerebene, z.B. Name des exportierenden Systems: Officium. Max. 120 Zeichen. Erforderlich wenn Level2 oder Level3 gesetzt. |
RepositoryLevel2 |
Text | Nein | Zweite Ordnerebene, typisch das Buchungsjahr: 2026. Max. 120 Zeichen. Erfordert Level1. |
RepositoryLevel3 |
Text | Nein | Dritte Ordnerebene, typisch der Buchungsmonat: 4. Max. 120 Zeichen. Erfordert Level1 und Level2. |
Vor der XML-Erzeugung prüft die Action die konfigurierten Werte gegen die DATEV-XSD-Regeln (ledger_import/ledger_types v060) sowie gegen feldübergreifende Geschäftsregeln. Schlägt mindestens eine Prüfung fehl, wird kein ZIP erzeugt; die Action verzweigt nach EXPORT_FAILED_REJECTED und legt alle gefundenen Verstöße als Klartext in der Workflowvariable REJECT_REASON ab.
Pflichtfelder (DATEV minOccurs = 1):
Amount, OrderDate und CurrencyCode sind immer erforderlich.OrderNumber ist erforderlich, außer bei cashLedger.BookingText ist bei cashLedger erforderlich.Wertebereiche / Formate:
Amount: gültige Zahl, ungleich 0,00.Tax, DiscountPercentage, DiscountPercentage2: > 0 und ≤ 99,99.ExchangeRate: zwischen 0.000001 und 9999.999999.SupplierNumber: numerisch, 10000–999999999.AccountNo: numerisch, 1–999999999.PaymentConditionsId: numerisch, 9–999.PaymentOrder: true oder false.cashLedger: nur Währung EUR zulässig.Skonto-Regeln:
DiscountAmount nur in Verbindung mit einem Personenkonto (SupplierNumber).DiscountAmount < Amount; DiscountAmount2 < DiscountAmount; Summe beider < Amount.DiscountPercentage > DiscountPercentage2.Zahlungsbedingung:
PaymentConditionsId dürfen keine Skonto- oder Fälligkeitsfelder (DueDate) angegeben werden.PaymentOrder=true ist mit PaymentConditionsId=9 (Mahn-/Zahlsperre) nicht zulässig.Datums-Reihenfolge:
DiscountPaymentDate < DiscountPaymentDate2 < DueDate.EXPORT_FAILED_REJECTED ab und schreibt den Grund nach REJECT_REASON.document.xml und Rechnungsdaten_*.xml gemäß DATEV-Schema v6.0 erzeugt.RE_<OrderNumber>_<OrderDate>.zip).ObjectTypeName und ParentId in docuvita angelegt.Alle Textfelder unterstützen docuvita-Objektvariablen (@@OBJECT.FELDNAME@@) und Workflowvariablen (@@WORKFLOW.VARIABLENNAME@@). Die Substitution erfolgt vor der XML-Generierung.
Beispiel:
Amount = @@OBJECT.BRUTTOBETRAG@@
OrderNumber = @@OBJECT.RECHNUNGSNUMMER@@
OrderDate = @@OBJECT.RECHNUNGSDATUM@@
9,99) werden automatisch in das DATEV-Format (9.99) konvertiert.Tax enthält den Steuersatz in Prozent (z.B. 19), nicht den Steuerbetrag.CurrencyCode der ExchangeRate mit 1 angegeben werden. Die Action formatiert 1 automatisch zu 1.000000.ledger_import_v060.xsd), nicht „Rechnungsinformationen".SupplierNumber erwartet die numerische DATEV-Kontonummer (5–9 Stellen, z.B. 70001). Buchstaben-Präfixe sind ungültig.