> ## Documentation Index
> Fetch the complete documentation index at: https://docs.business-os.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Buchungsvorschlag

> Write: Erstelle einen Buchungsvorschlag über DATEV Unternehmen Online nach DATEV Rechnungswesen.

## Definition

Über dieses Modul kannst Du neben der Belegdatei auch strukturierte Daten an DATEV übergeben. Die übergebenen Daten werden direkt in DATEV Rechnungswesen als Buchungsvorschlag angezeigt, so dass sie mit einem Klick direkt verbucht werden können. So bereitest Du die Buchhaltung ideal vor und der Steuerberater hat im Idealfall weniger Zeitaufwand beim Verbuchen der einzelnen Belege. Zugrunde liegt der DATEV Rechnungsdatenservice.

## Attribute

<Tabs>
  <Tab title="Pflichtfelder">
    <ParamField path="belegdatum" type="string" required>
      Belegdatum (z. B. Rechnungsdatum). ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-01T00:00:00Z`.
    </ParamField>

    <ParamField path="waehrung" type="string" required>
      Währungscode nach ISO 4217, z. B. `EUR`.
    </ParamField>

    <ParamField path="rechnungsordner" type="string" required>
      Name des Rechnungsordners. Muss zum Buchungstyp passen: bei `EINGANGSRECHNUNG` ein Kreditorenordner, bei `AUSGANGSRECHNUNG` ein Debitorenordner. Den korrekten Namen erhältst Du über `GET /v2/datev-duo/rechnungsordner` (Feld `bezeichnung`).
    </ParamField>

    <ParamField path="belegnummer" type="string" required>
      Belegnummer / Rechnungsnummer. Erlaubte Zeichen: `a-zA-Z0-9$%&*+-/`, max. 36 Zeichen.
    </ParamField>

    <ParamField path="betrag" type="number" required>
      Gesamtbetrag brutto (einheitlich zu anderen DUO-Belegen). Darf nicht 0 sein und muss der Summe der Positionsbeträge entsprechen. Max. 10 Vorkomma- und 2 Nachkommastellen.
    </ParamField>

    <ParamField path="positionen" type="array" required>
      Belegpositionen — mindestens eine Position erforderlich. Pro Position ist `betrag` Pflicht.

      <Expandable title="Positions-Eigenschaften">
        <ParamField path="positionen[].betrag" type="number" required>
          Bruttobetrag dieser Position. Darf nicht 0 sein. Max. 10 Vorkomma- und 2 Nachkommastellen.
        </ParamField>

        <ParamField path="positionen[].belegtext" type="string">
          Positionstext, max. 60 Zeichen.
        </ParamField>

        <ParamField path="positionen[].steuersatzProzent" type="number">
          Steuersatz in Prozent (z. B. 19 für 19 %).
        </ParamField>

        <ParamField path="positionen[].skontoBetrag" type="number">
          Fester Skontobetrag (Skonto 1). Positiv, max. 8 Vorkomma- und 2 Nachkommastellen. Darf den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].skontoProzent" type="number">
          Skontosatz in Prozent (Skonto 1). Max. 2 Vorkomma- und 2 Nachkommastellen, max. 100 %. Erfordert `skontoZahlungsdatum` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].skontoBetrag2" type="number">
          Fester Skontobetrag (Skonto 2). Darf `skontoBetrag` und den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum2` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].skontoProzent2" type="number">
          Skontosatz in Prozent (Skonto 2). Muss kleiner als `skontoProzent` sein. Erfordert `skontoZahlungsdatum2` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].kontoname" type="string">
          Name des Sachkontos, max. 40 Zeichen.
        </ParamField>

        <ParamField path="positionen[].kontonummer" type="number">
          Sachkontonummer. Die Länge muss der konfigurierten Kontenlänge entsprechen.
        </ParamField>

        <ParamField path="positionen[].buSchluessel" type="string">
          DATEV-Buchungsschlüssel (BU-Code). Max. 4 Zeichen, nur Ziffern.
        </ParamField>

        <ParamField path="positionen[].kostenstelle1" type="string">
          Kostenstelle 1 (KOST1), max. 36 Zeichen.
        </ParamField>

        <ParamField path="positionen[].kostenstelle2" type="string">
          Kostenstelle 2 (KOST2), max. 36 Zeichen.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="belegtyp" type="string" required>
      `EINGANGSRECHNUNG` (Kreditor) oder `AUSGANGSRECHNUNG` (Debitor).
    </ParamField>
  </Tab>

  <Tab title="Alle Felder">
    ### Pflichtfelder

    <ParamField path="belegdatum" type="string" required>
      Belegdatum (z. B. Rechnungsdatum). ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-01T00:00:00Z`.
    </ParamField>

    <ParamField path="waehrung" type="string" required>
      Währungscode nach ISO 4217, z. B. `EUR`.
    </ParamField>

    <ParamField path="rechnungsordner" type="string" required>
      Name des Rechnungsordners. Muss zum Buchungstyp passen: bei `EINGANGSRECHNUNG` ein Kreditorenordner, bei `AUSGANGSRECHNUNG` ein Debitorenordner. Den korrekten Namen erhältst Du über `GET /v2/datev-duo/rechnungsordner` (Feld `bezeichnung`).
    </ParamField>

    <ParamField path="belegnummer" type="string" required>
      Belegnummer / Rechnungsnummer. Erlaubte Zeichen: `a-zA-Z0-9$%&*+-/`, max. 36 Zeichen.
    </ParamField>

    <ParamField path="betrag" type="number" required>
      Gesamtbetrag brutto (einheitlich zu anderen DUO-Belegen). Darf nicht 0 sein und muss der Summe der Positionsbeträge entsprechen. Max. 10 Vorkomma- und 2 Nachkommastellen.
    </ParamField>

    <ParamField path="positionen" type="array" required>
      Belegpositionen — mindestens eine Position erforderlich. Pro Position ist `betrag` Pflicht.

      <Expandable title="Positions-Eigenschaften">
        <ParamField path="positionen[].betrag" type="number" required>
          Bruttobetrag dieser Position. Darf nicht 0 sein. Max. 10 Vorkomma- und 2 Nachkommastellen.
        </ParamField>

        <ParamField path="positionen[].belegtext" type="string">
          Positionstext, max. 60 Zeichen.
        </ParamField>

        <ParamField path="positionen[].steuersatzProzent" type="number">
          Steuersatz in Prozent (z. B. 19 für 19 %).
        </ParamField>

        <ParamField path="positionen[].skontoBetrag" type="number">
          Fester Skontobetrag (Skonto 1). Positiv, max. 8 Vorkomma- und 2 Nachkommastellen. Darf den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].skontoProzent" type="number">
          Skontosatz in Prozent (Skonto 1). Max. 2 Vorkomma- und 2 Nachkommastellen, max. 100 %. Erfordert `skontoZahlungsdatum` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].skontoBetrag2" type="number">
          Fester Skontobetrag (Skonto 2). Darf `skontoBetrag` und den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum2` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].skontoProzent2" type="number">
          Skontosatz in Prozent (Skonto 2). Muss kleiner als `skontoProzent` sein. Erfordert `skontoZahlungsdatum2` auf Belegebene.
        </ParamField>

        <ParamField path="positionen[].kontoname" type="string">
          Name des Sachkontos, max. 40 Zeichen.
        </ParamField>

        <ParamField path="positionen[].kontonummer" type="number">
          Sachkontonummer. Die Länge muss der konfigurierten Kontenlänge entsprechen.
        </ParamField>

        <ParamField path="positionen[].buSchluessel" type="string">
          DATEV-Buchungsschlüssel (BU-Code). Max. 4 Zeichen, nur Ziffern.
        </ParamField>

        <ParamField path="positionen[].kostenstelle1" type="string">
          Kostenstelle 1 (KOST1), max. 36 Zeichen.
        </ParamField>

        <ParamField path="positionen[].kostenstelle2" type="string">
          Kostenstelle 2 (KOST2), max. 36 Zeichen.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="belegtyp" type="string" required>
      `EINGANGSRECHNUNG` (Kreditor) oder `AUSGANGSRECHNUNG` (Debitor).
    </ParamField>

    ***

    ### Optionale Felder

    <ParamField path="id" type="string">
      UUID zur Zuordnung von hochgeladenen Dateien zum Buchungsvorschlag. Muss eine gültige UUID sein, wird andernfalls ignoriert.
    </ParamField>

    <ParamField path="kontaktName" type="string">
      Name des Geschäftspartners, max. 50 Zeichen.
    </ParamField>

    <ParamField path="kontaktKontonummer" type="number">
      Kreditoren- oder Debitorennummer des Geschäftspartners. Kontenlänge = konfigurierte Länge + 1.
    </ParamField>

    <ParamField path="adressen" type="array">
      Optionale Adressen — nur Ort; Bankverbindung am Beleg-Root (`bankkontonummer`, `bankleitzahl`, `bic`).

      <Expandable title="Adress-Eigenschaften">
        <ParamField path="adressen[].stadt" type="string">
          Ort, max. 30 Zeichen.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="bankkontonummer" type="number">
      Bankkontonummer (1–10 Ziffern). Wenn angegeben, ist `bankleitzahl` erforderlich.
    </ParamField>

    <ParamField path="bankleitzahl" type="string">
      Bankleitzahl. Wenn angegeben, ist `bankkontonummer` erforderlich.
    </ParamField>

    <ParamField path="bic" type="string">
      BIC-Code.
    </ParamField>

    <ParamField path="iban" type="string">
      IBAN.
    </ParamField>

    <ParamField path="lieferdatum" type="string">
      Liefer- bzw. Leistungsdatum. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-15T00:00:00Z`.
    </ParamField>

    <ParamField path="faelligkeitsdatum" type="string">
      Fälligkeitsdatum. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339). Muss nach `belegdatum` liegen. Pflicht, wenn Skonto-Felder verwendet werden.
    </ParamField>

    <ParamField path="skontoZahlungsdatum" type="string">
      Zahlungsziel für Skonto 1. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339). Muss vor `faelligkeitsdatum` und nach `belegdatum` liegen. Erfordert `skontoBetrag` und `skontoProzent` in jeder Position.
    </ParamField>

    <ParamField path="skontoZahlungsdatum2" type="string">
      Zahlungsziel für Skonto 2. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339). Muss vor `faelligkeitsdatum` und nach `skontoZahlungsdatum` liegen. Erfordert zusätzlich `skontoBetrag2` und `skontoProzent2` in jeder Position.
    </ParamField>

    <ParamField path="zahlungsdatum" type="string">
      Zahlungsdatum — markiert den Beleg als bezahlt. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339).
    </ParamField>

    <ParamField path="istZahlungsauftrag" type="boolean">
      Ob automatisch eine Zahlungsanweisung erstellt werden soll (Überweisung bei `EINGANGSRECHNUNG`, Lastschrift bei `AUSGANGSRECHNUNG`). Muss `false` sein, wenn `zahlungsbedingungenId` = 9.
    </ParamField>

    <ParamField path="notizen" type="string">
      Zusätzliche Notizen, max. 120 Zeichen.
    </ParamField>

    <ParamField path="bestellId" type="string">
      Bestell- bzw. Auftrags-ID, max. 30 Zeichen.
    </ParamField>

    <ParamField path="zahlungsbedingungenId" type="string">
      Kennung der Zahlungsbedingungen (max. 3 Ziffern). Wenn gesetzt, dürfen keine Skonto-Felder verwendet werden.
    </ParamField>

    <ParamField path="ustId" type="string">
      USt-IdNr. des Geschäftspartners, max. 15 Zeichen.
    </ParamField>

    <ParamField path="ordnerVerwaltung" type="object">
      Dreistufige Ordnerstruktur für die Belegablage. Ohne Angabe wird die Standardstruktur verwendet.

      <Expandable title="Ordner-Eigenschaften">
        <ParamField path="ordnerVerwaltung.kategorie" type="string" required>
          Oberste Ebene der Ordnerstruktur.
        </ParamField>

        <ParamField path="ordnerVerwaltung.ordner" type="string" required>
          Zweite Ebene der Ordnerstruktur.
        </ParamField>

        <ParamField path="ordnerVerwaltung.register" type="string" required>
          Dritte Ebene der Ordnerstruktur.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="belegbilder" type="array">
      Belegdateien (z. B. PDF-Rechnungen).

      <Expandable title="Datei-Eigenschaften">
        <ParamField path="belegbilder[].content" type="string" required>
          Base64-kodierter Dateiinhalt.
        </ParamField>

        <ParamField path="belegbilder[].dateiname" type="string">
          Dateiname inkl. Endung (nur Basisname, max. 255 Zeichen).
        </ParamField>
      </Expandable>
    </ParamField>
  </Tab>
</Tabs>

## Verbrauch

<Check>
  Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen.
</Check>
