# Get Account Source: https://docs.business-os.de/api-reference/endpoint/banking-account-get GET /v2/banking/accounts/{id} Ruft die Details eines bestimmten Bankkontos ab. **Cost:** 0 Credits # List Accounts Source: https://docs.business-os.de/api-reference/endpoint/banking-accounts GET /v2/banking/accounts Listet Bankkonten auf. Ohne `connection_id` werden alle Konten der Organisation zurückgegeben. **Cost:** 0 Credits # List Daily Balances Source: https://docs.business-os.de/api-reference/endpoint/banking-balances GET /v2/banking/balances Gibt tägliche SOD/EOD-Salden für ein Bankkonto zurück, inkl. Cash-In, Cash-Out und Delta. Transaktionen pro Tag werden nur zurückgegeben, wenn `include_transactions=true` gesetzt ist (ohne Flag bleibt das Feld `transactions[]` weg — schnelle Abfrage rein aus dem Cache, ohne Banking-Call). Die Salden werden aus einem Cache gelesen und automatisch bei jedem Refresh aktualisiert. **Cost:** 0 Credits # Create Connection Source: https://docs.business-os.de/api-reference/endpoint/banking-connect POST /v2/banking/connect Erstellt eine Bank-Connect-Session und gibt die Widget-URL zurück. Der User wird zum Widget weitergeleitet, wählt seine Bank und autorisiert den Zugriff via OAuth. **Cost:** 0 Credits # Delete Connection Source: https://docs.business-os.de/api-reference/endpoint/banking-connection-delete DELETE /v2/banking/connections/{id} Löscht eine Bank-Verbindung und alle zugehörigen Konten und Transaktionen unwiderruflich. **Cost:** 0 Credits # Set Display Name Source: https://docs.business-os.de/api-reference/endpoint/banking-connection-display-name PUT /v2/banking/connections/{id}/display-name Setzt einen benutzerdefinierten Anzeigenamen für eine Bank-Verbindung. **Cost:** 0 Credits # Get Connection Source: https://docs.business-os.de/api-reference/endpoint/banking-connection-get GET /v2/banking/connections/{id} Ruft die Details einer bestimmten Bank-Verbindung ab. **Cost:** 0 Credits # Reconnect Connection Source: https://docs.business-os.de/api-reference/endpoint/banking-connection-reconnect POST /v2/banking/connections/{id}/reconnect Erstellt eine Reconnect-Session für eine inaktive oder fehlgeschlagene Verbindung. Gibt eine Connect Widget URL zurück. **Cost:** 0 Credits # Refresh Connection Source: https://docs.business-os.de/api-reference/endpoint/banking-connection-refresh POST /v2/banking/connections/{id}/refresh Aktualisiert die Kontodaten einer Verbindung. Kann eine erneute Autorisierung über das Connect Widget erfordern (z.B. bei abgelaufenem Consent). **Cost:** 0 Credits # List Connections Source: https://docs.business-os.de/api-reference/endpoint/banking-connections GET /v2/banking/connections Listet alle Bank-Verbindungen der Organisation auf. Ohne `api`-Parameter werden alle Verbindungen (Partner + Open Banking) zurückgegeben. **Cost:** 0 Credits # Create Payment Source: https://docs.business-os.de/api-reference/endpoint/banking-payments-create POST /v2/banking/payments Initiiert eine SEPA oder SEPA Instant Zahlung. Gibt eine Payment-URL zurück, über die der User die Zahlung per TAN bestätigt. Nur `account_id` und `amount` sind pflichtig — alle anderen Werte (Provider, Debitor-IBAN, Banking-API) werden automatisch aus der Account-ID aufgelöst. Der `end_to_end_id` wird vom Server generiert (`BOS-{ts}-{hex}`) und in der Response zurückgegeben, damit später die zugehörige Transaction matchbar ist. **Cost:** 3 Credits (only charged when payment settles successfully) # List Payments Source: https://docs.business-os.de/api-reference/endpoint/banking-payments-list GET /v2/banking/payments Listet Zahlungen der Organisation aus den Business-OS-Datensätzen (`banking_payments`) — filterbar nach Verbindung, Konto und Datum. Status wird per Webhook aktuell gehalten; den garantiert live-aktuellen Status liefert `GET /v2/banking/payments/{id}`. **Cost:** 0 Credits # Get Payment Source: https://docs.business-os.de/api-reference/endpoint/banking-payments-status GET /v2/banking/payments/{id} Ruft den aktuellen Status und die Details einer initiierten Zahlung ab. **Cost:** 1 Credit # Get Transaction Source: https://docs.business-os.de/api-reference/endpoint/banking-transaction-get GET /v2/banking/transactions/{id} Ruft eine einzelne Transaktion per ID ab — inklusive `description_parsed` (geparste SEPA-Felder aus dem Verwendungszweck) und `payment_id`. Nur `account_id` ist erforderlich; `organization_id`, Connection und `api` werden automatisch aus der (eindeutigen) Account-ID aufgelöst — das gilt auch für Agency-Keys (Scope wird geprüft). Die Transaktion wird über das Konto ermittelt. **Cost:** 1 Credit per call # List Transactions Source: https://docs.business-os.de/api-reference/endpoint/banking-transactions GET /v2/banking/transactions Listet Transaktionen auf. **Mindestens einer von `connection_id` oder `account_id` ist erforderlich** — ohne Filter wird 400 zurückgegeben. - Nur `connection_id`: alle Konten dieser Connection - Nur `account_id`: Connection wird automatisch aufgelöst - Beide: spezifisches Konto Der `api`-Parameter wird automatisch aus der `connection_id` abgeleitet und muss nicht angegeben werden. Sortierung: `made_on` aufsteigend. **Cost:** 1 Credit per call # Get Webhook URL Source: https://docs.business-os.de/api-reference/endpoint/banking-webhook-get GET /v2/banking/webhook-url Gibt die aktuell konfigurierte Webhook-URL der Organisation zurück. **Cost:** 0 Credits # Set Webhook URL Source: https://docs.business-os.de/api-reference/endpoint/banking-webhook-set PUT /v2/banking/webhook-url Konfiguriert eine Webhook-URL für automatische Benachrichtigungen bei neuen Transaktionen oder Zahlungsstatus-Änderungen. **Cost:** 0 Credits # Mandanten und aktive Services Source: https://docs.business-os.de/api-reference/endpoint/datev-companies GET /v2/datev/companies Listet alle Mandanten (Companies), die unter der angegebenen DATEV-Verbindung verfügbar sind, samt der je Mandant aktiven Service-Subscriptions (z. B. *Belegbilderservice*, *Rechnungsdatenservice 1.0*, *DATEV Rechnungswesen-Exportservice*). **Kosten:** 1 Credit pro Aufruf # Beleg bereitstellen Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-beleg-bereitstellen POST /v2/datev-duo/beleg-bereitstellen Stellt eine Belegdatei für DATEV Unternehmen Online bereit (Posteingang). **Kosten:** 1 Credit # Belegtypen Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-belegtypen GET /v2/datev-duo/belegtypen Listet alle verfügbaren Belegtypen in DATEV Unternehmen Online. **Kosten:** 1 Credit pro Aufruf (entfällt bei Nutzung als Make-Dropdown/RPC) # Buchungsvorschlag Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-buchungsvorschlag POST /v2/datev-duo/buchungsvorschlag Erstellt einen Buchungsvorschlag über DATEV Unternehmen Online. Die strukturierten Daten werden direkt als Buchungsvorschlag angezeigt und können mit einem Klick verbucht werden. **Kosten:** 1 Credit # Verbindungen Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-connections GET /v2/datev-duo/connections Gibt alle Verbindungen der Organisation für **DATEV Unternehmen Online** zurück. **Kosten:** 0 Credits # Kassenbucheintrag (advanced) Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-kassenbuch-advanced POST /v2/datev-duo/kassenbuch-advanced Erstellt einen erweiterten Kassenbucheintrag mit strukturierten buchhalterischen Daten in DATEV Unternehmen Online. **Kosten:** 1 Credit # Kassenbucheintrag (einfach) Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-kassenbuch-einfach POST /v2/datev-duo/kassenbuch-einfach Erstellt einen einfachen Kassenbucheintrag in DATEV Unternehmen Online. **Kosten:** 1 Credit # Kassenbücher Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-kassenbuecher GET /v2/datev-duo/kassenbuecher Listet alle Kassenbücher des Accounts in DATEV Unternehmen Online. **Kosten:** 1 Credit pro Aufruf (entfällt bei Nutzung als Make-Dropdown/RPC) # Rechnungsordner Source: https://docs.business-os.de/api-reference/endpoint/datev-duo-rechnungsordner GET /v2/datev-duo/rechnungsordner Listet alle Rechnungsordner des Accounts in DATEV Unternehmen Online. **Kosten:** 1 Credit pro Aufruf (entfällt bei Nutzung als Make-Dropdown/RPC) # Beleg bereitstellen Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-beleg-bereitstellen POST /v2/datev-rewe/beleg-bereitstellen Stellt eine Belegdatei (z. B. PDF-Rechnung) in DATEV Rechnungswesen bereit. **Kosten:** 1 Credit pro Aufruf # Belegtypen Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-belegtypen GET /v2/datev-rewe/belegtypen Listet alle verfügbaren Belegtypen für Datei-Uploads in DATEV Rechnungswesen. **Kosten:** 1 Credit pro Aufruf (entfällt bei Nutzung als Make-Dropdown/RPC) # Buchung erstellen Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-buchung POST /v2/datev-rewe/buchung Erstellt einen einzelnen Buchungssatz direkt in DATEV Rechnungswesen. **Kosten:** 1 Credit # Verbindungen Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-connections GET /v2/datev-rewe/connections Gibt alle Verbindungen der Organisation für **DATEV Rechnungswesen - Write** zurück. **Kosten:** 0 Credits # Personenkonto anlegen / aktualisieren Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-personenkonto POST /v2/datev-rewe/personenkonto Erstellt oder aktualisiert einen Geschäftspartner in DATEV Rechnungswesen. **Kosten:** 1 Credit # Buchungsdaten Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-buchungsdaten GET /v2/datev-rewe-read/buchungsdaten Liest Journalbuchungen für das angegebene Geschäftsjahr. **Kosten:** 1 Credit # BWA (Betriebswirtschaftliche Auswertung) Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-bwa GET /v2/datev-rewe-read/bwa Aggregiert die Summen- und Saldenliste (aktuelles Geschäftsjahr + Vorjahr) zur **DATEV-Standard-BWA Form 01 ("Kurzfristige Erfolgsrechnung")** mit standardisierter SKR03/SKR04-Zuordnung. Perioden-orientierte Ausgabe je nach `einheit` (Monat/Quartal/Jahr) mit Veränderung zur Vorperiode (PoP) und zum Vorjahr (YoY) je Position. **Wichtig:** Dies ist **nicht** die kanzleiindividuelle DATEV-BWA des Steuerberaters, sondern eine standardisierte Auswertung auf Basis der Summen- und Saldenliste — sie kann von der offiziellen BWA abweichen. Keine steuerliche Beratung. Nur für Mandanten mit Kontenrahmen **SKR03 oder SKR04** (sonst `verfuegbar: false`). Der Kontenrahmen wird automatisch aus dem Kontenplan erkannt. **Kosten:** 1 Credit # Verbindungen Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-connections GET /v2/datev-rewe-read/connections Gibt alle Verbindungen der Organisation für **DATEV Rechnungswesen - Read** zurück. **Kosten:** 0 Credits # Geschäftsjahr (Detail) Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-geschaeftsjahr-detail GET /v2/datev-rewe-read/geschaeftsjahre/{geschaeftsjahrId} Ruft detaillierte Informationen eines einzelnen Geschäftsjahrs anhand der ID ab. **Kosten:** 1 Credit (entfällt bei Nutzung als Make-Dropdown/RPC) # Geschäftsjahre Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-geschaeftsjahre GET /v2/datev-rewe-read/geschaeftsjahre Listet alle Geschäftsjahre in dem ausgewählten DATEV Rechnungswesen Account. **Kosten:** 1 Credit (entfällt bei Nutzung als Make-Dropdown/RPC) # Kontenplan Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-kontenplan GET /v2/datev-rewe-read/kontenplan Listet Sach- und Personenkonten für das angegebene Geschäftsjahr. **Kosten:** 1 Credit (entfällt bei Nutzung als Make-Dropdown/RPC) # OPOS — Offene Posten Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-opos GET /v2/datev-rewe-read/opos Aggregiert alle Buchungen aller Geschäftsjahre der Connection und gibt den **Stand der offenen Posten** pro Personenkonto zurück — gruppiert nach `(Personenkonto, Belegnummer)`, sortiert nach |Saldo| absteigend. Intern werden Geschäftsjahre + Kontenplan + alle GJ-Buchungen parallel von DATEV gefetched (typisch 15-30s für mittelgroße Mandanten). EBs werden nach DATEV-Konvention (saldo-neutrales SOLL/HABEN-Paar pro Personenkonto) korrekt behandelt; bei Konten mit Vor-Sync-Aktivität erscheint ein `EB-RESIDUAL`-Posten. **Bekannte Limitation:** der Endpoint erfasst nur **klassische 9-stellige Personenkonten**. Mandanten mit eigenen 8-stelligen Forderungs-/Verbindlichkeits-Sachkonten (z.B. `15970000 Forderungen gg. XYZ`) sehen darüber nicht alle ihre OPs — solche Konten sind über die SuSa direkt abrufbar. **Kosten:** 5 Credits # RVO-Rechte-Probe Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-permissions GET /v2/datev-rewe-read/permissions Diagnostiziert die 4 DATEV-RVO-Lese-Rechte einer Read-Verbindung (Stammdaten, Auswertungen, Kontobuchungen, OPOS) durch jeweils einen leichten Read-Call gegen die zugehörigen DATEV-Endpoints. Klassifiziert die Antwort als `ok` / `permission` / `expired` / `error` — damit Make-Apps, CLI, MCP und AI-Agents vor dem eigentlichen Datenabruf deterministisch wissen, welche RVO-Teilrechte fehlen. Nicht-destruktiv (nur GETs gegen DATEV). **Kosten:** 0 Credits. # Summen und Salden Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-summen-salden GET /v2/datev-rewe-read/susa Summen- und Saldenliste für das angegebene Geschäftsjahr. **Kosten:** 1 Credit # Zahlungsbedingungen Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-read-zahlungsbedingungen GET /v2/datev-rewe-read/zahlungsbedingungen Listet Zahlungsbedingungen für das angegebene Geschäftsjahr. **Kosten:** 1 Credit (entfällt bei Nutzung als Make-Dropdown/RPC) # Steuersätze Source: https://docs.business-os.de/api-reference/endpoint/datev-rewe-steuersaetze GET /v2/datev-rewe/steuersaetze Gibt alle verfügbaren Steuersätze für den verbundenen Mandanten zurück. Erfordert die **Write**-Verbindung zu DATEV Rechnungswesen. **Kosten:** 1 Credit (entfällt bei Nutzung als Make-Dropdown/RPC) # API Reference Source: https://docs.business-os.de/api-reference/introduction Technische Referenz aller Business OS API Endpoints ## Übersicht Die Business OS API bietet Zugang zu DATEV- und Banking-Schnittstellen über eine einheitliche REST API. Alle Endpoints sind unter `https://api.business-os.de` erreichbar. ## Authentifizierung Alle API Endpoints erfordern einen API Key im `x-api-key` Header: ```bash theme={null} curl -H "x-api-key: dein-api-key" https://api.business-os.de/v2/datev-duo/belegtypen?connectionId=... ``` Erstelle deinen API Key im [Dashboard](https://app.business-os.de) unter API Keys. Mehr dazu im [Authentication Guide](/guides/authentication). ## Credits Viele — aber nicht alle — API-Aufrufe verbrauchen Credits; die genauen Kosten sind bei jedem Endpoint angegeben (inklusive der kostenlosen Cache-Reads). V2-Endpoints handeln die Credit-Reservierung und -Bestätigung automatisch. Das Credit-System nutzt ein 2-Phase-Commit Pattern: 1. **Reserve** — Credits werden vor dem API-Aufruf reserviert 2. **Confirm** — Nach erfolgreichem Aufruf werden die Credits abgebucht 3. **Expire** — Bei Fehlern verfällt die Reservierung automatisch ## Rate Limits Die API begrenzt die Anzahl der Anfragen pro Zeitfenster, um Missbrauch zu verhindern und eine stabile Performance zu gewährleisten. | Endpoint-Gruppe | Limit | Zeitfenster | Identifikation | | :-------------------------------------------- | :----------- | :---------- | :-------------- | | Alle `/v2/` Endpoints | 200 Requests | 15 Minuten | API Key oder IP | | Webhooks (`/v2/banking/webhooks/`) | 60 Requests | 1 Minute | IP | | Auth-Endpoints (Invitations, User-Verwaltung) | 30 Requests | 15 Minuten | IP | Bei Überschreitung erhältst du einen `429 Too Many Requests` Response. Die Standard-Headers `RateLimit-Limit`, `RateLimit-Remaining` und `RateLimit-Reset` werden in jeder Response mitgeliefert. Plane deine Integrationen so, dass sie die Rate Limits nicht überschreiten. Für Make.com oder n8n Szenarien mit vielen Organisationen empfehlen wir, Requests zeitlich zu verteilen. ## API-Version Diese Dokumentation beschreibt die **V2-REST-API** unter dem Pfad-Präfix `/v2/`. Requests laufen serverseitig über unser Backend zu den jeweiligen Schnittstellenpartnern; Credits werden wie oben beschrieben automatisch reserviert und bestätigt. # Authentication Source: https://docs.business-os.de/guides/authentication Beschreibung des allgemeinen Authentifizierungsprozesses zur Nutzung unserer Apps. ## 1. API Key erstellen Erstelle im Dashboard einen API Key. Es bietet sich an, für jede Plattform oder jede Anwendung, die du verwendest, einen eigenen API Key zu erstellen. Auf diese Weise kannst du Die API ist auf **200 Requests pro 15 Minuten** pro API Key begrenzt. Weitere Details findest du in der [API Reference](/api-reference/introduction#rate-limits). # Einführung Source: https://docs.business-os.de/guides/introduction Business OS verbindet Enterprise-Systeme wie DATEV und Bankkonten mit deinen Automatisierungen. Business OS ist eine API-Plattform, die komplexe Enterprise-Schnittstellen — insbesondere DATEV und Open Banking — als einfache, einheitliche API bereitstellt. So kannst du über Automatisierungsplattformen wie [Make.com](https://make.com) oder direkte API-Aufrufe auf Buchhaltungs- und Bankdaten zugreifen. ## Was Business OS kann Belege hochladen, Buchungsvorschläge erstellen und Kassenbucheinträge anlegen — direkt aus deinen Workflows. Sachkonten, Buchungen, offene Posten und Zahlungsbedingungen auslesen sowie Geschäftspartner und Belege anlegen. Bankkonten verbinden und Kontodaten, Salden sowie Transaktionen abrufen — über 5.000 Banken in Europa. SEPA- und SEPA-Instant-Zahlungen direkt aus deinen Automatisierungen initiieren. ## Wie es funktioniert Registriere dich auf [app.business-os.de](https://app.business-os.de) und wähle einen passenden Plan. Verbinde dein DATEV-System über OAuth und/oder deine Bankkonten über das Dashboard. Erstelle im Dashboard einen API Key für deine Automatisierungsplattform. Mehr dazu unter [Authentication](/guides/authentication). Nutze unsere Make.com-Module oder rufe die API direkt auf. Die meisten Aufrufe kosten 1 Credit; manche sind kostenlos (Cache-Reads) oder kosten mehr (z. B. eine Zahlung auslösen). Die genauen Kosten stehen bei jedem Endpoint. ## Credit-System Alle API-Aufrufe werden über ein Credit-System abgerechnet. Credits sind in deinem Abo-Plan enthalten und können bei Bedarf nachgebucht werden. Den aktuellen Verbrauch siehst du jederzeit in deinem [Dashboard](https://app.business-os.de). # Paginierung Source: https://docs.business-os.de/guides/pagination So funktioniert die Paginierung bei Banking- und DATEV-Endpunkten. Unsere API verwendet je nach Modul unterschiedliche Paginierungsstrategien. ## Banking-Module (Cursor-basiert) Die Banking-Endpunkte nutzen Cursor-basierte Paginierung über das `next_id`-Feld. Jede Antwort enthält ein `meta`-Objekt: ```json theme={null} { "data": [...], "meta": { "next_id": "3333333333333333333", "next_page": "/api/v6/connections?customer_id=...&from_id=3333333333333333333" } } ``` Um die nächste Seite abzurufen, übergib den `next_id`-Wert als `from_id` Query-Parameter: ``` GET /v2/banking/connections?from_id=3333333333333333333 ``` Wenn `meta.next_id` nicht vorhanden oder `null` ist, gibt es keine weiteren Ergebnisse. Jeder paginierte Aufruf verbraucht 1 Credit. Plane deine Abfragen entsprechend. ## DATEV-Module (Seiten-basiert) Die DATEV-Endpunkte verwenden klassische seitenbasierte Paginierung: ```json theme={null} { "meta": { "pagination": { "total": 125, "perPage": 50, "currentPage": 1, "totalPages": 3 } }, "data": [...] } ``` Verwende den `page` Query-Parameter, um durch die Ergebnisse zu navigieren. # Intro Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/DATEV-REWE-Intro Einführung in DATEV Rechnungswesen DATEV Rechnungswesen ist eine Buchhaltungssoftware, die vorwiegend von kleinen und mittelständischen Unternehmen genutzt wird. Da sie nicht zur reinen Online-Produktpalette der DATEV gehört, handelt es sich im Kern um eine On-Premises-Anwendung (lokal installierte Software), die entweder auf einem eigenen Server (meistens beim Steuerberater) oder bei einem Hosting-Dienstleister (des Steuerberaters) betrieben wird. ## Übersicht Module Über unsere Module kannst du ganz einfach Daten nach DATEV Rechnungswesen senden oder abrufen. Schaue dir dazu die Kapitel zu den jeweiligen Modulen an. | Resource | Read | Create | Update | | :----------------------- | :-------------------: | :-------------------: | :-------------------: | | **Kreditoren/Debitoren** | | | | | **Zahlungsbedingungen** | | | | | **Belegdateien** | | | | | **Buchungen** | | | | | **Kontenplan** | | | | | **Sachkonto-Salden** | | | | | **Offene Posten (OPOS)** | | | | ## Vorbereitung der READ Module Über unsere DATEV App kannst Du gewisse Daten aus DATEV Rechnungswesen auslesen. Dazu gehört z.B. die Kreditoren/Debitoren, Liste der offenen Posten, Buchungen. Genaueres dazu findest du in den Erklärungen zu den Modulen. Um diese READ Endpunkte nutzen zu können, muss der Inhaber deines DATEV Systems (meistens der Steuerberater, sehr große Unternehmen besitzen die DATEV Instanz möglicherweise selbst) für die entsprechende Beta anmelden. Das geht so: Pilotvertrag unterschreiben, um an Beta teilzunehmen. Damit stimmt der Inhaber deines DATEV Systems zu, dass Daten aus DATEV Rechnungswesen über die Cloud ausgelesen werden dürfen. Dies ist mit keinen weiteren Kosten durch DATEV verbunden.\ [https://pilot.datev.de/link/PilotphaseDetailView\_Deeplink?Phase=58171jmYv](https://pilot.datev.de/link/PilotphaseDetailView_Deeplink?Phase=58171jmYv) Auf der Seite siehst du unter anderem den folgenden Text. Bildschirmfoto2025 11 20um10 50 38 Pn Laufzeit der Pilotphase: Das Enddatum der Pilotphase steht aktuell auf 31.12.2025, da der Ursprüngliche Go-Live dieser Funktion für 01.26 geplant war. Wir gehen aktuell davon aus, dass der Pilot auch noch 2026 weiterlaufen wird. Nach dem Go-Live ist die Funktion direkt abrufbar, ohne sich dafür für den Piloten registrieren zu müssen. Plätze verfügbar: Sobald die verfügbaren Plätze 0 erreichen, werden 5-10 weitere Plätze hinzugefügt. Folglich musst du dich davon nicht verwirren lassen. Freischaltung des DATEV Systems für die Beta durch DATEV. Dies dauert in der Regel 3 Werktage. Sobald der Vertrag unterzeichnet und der Zugang von Datev freigeschaltet wurde, ist es noch notwendig, die Schnittstelle als Endverbraucher zu bestellen, um Daten von dem gegebenen Beraternummer abzurufen. DATEV Mandantenregistrierung: \ [https://apps.datev.de/help-center/documents/1039548](https://apps.datev.de/help-center/documents/1039548) Dies ist bei DATEV mit marginalen Kosten verbunden. Nun kannst du über unsere READ Module auf deine Daten in DATEV Rechnungswesen zugreifen. # Beleg bereitstellen Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/belegdateien Write: Stelle eine Belegdatei in DATEV Rechnungswesen bereit. ## Definition Über dieses Modul kannst du Belegdateien (z.B. Rechnungen, Quittungen) direkt an DATEV Rechnungswesen übermitteln. Die Belege werden dem Steuerberater in der Buchhaltungssoftware zur Verfügung gestellt und können dort direkt verbucht werden. Zugrunde liegt der DATEV Belegbildservice. ## Attribute Die Datei, die an DATEV übermittelt wird. Am einfachsten ist es, wenn du in deinem Szenario ein anderes Modul verwendest, mit dem du die Datei herunterlädst, und die File-Option direkt mappst. Der Belegtyp für DATEV Rechnungswesen. Im Dropdown werden alle verfügbaren Belegtypen dargestellt. Du kannst den Beleg-Typ auch dynamisch als Text einfügen. Informativer Text, der dem Steuerberater hilft, den Beleg richtig zu verbuchen. Zum Beispiel "privat" für Privatausgaben (max. 60 Zeichen). ## Verbrauch Für das ausführen dieses Modul wird **1 Credit** berechnet. Deinen detaillierten Verbrauche kannst Du in deinem Dashboard ansehen. # Geschäftspartner Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/contacts Write: Erstelle und aktualisiere Geschäftspartner (Kontaktpersonen und Unternehmen) in DATEV Rechnungswesen. ## Definition Personenkonten sind individuelle Konten im Nebenbuch, die konkreten Geschäftspartnern zugeordnet sind. Sie dienen dazu, Forderungen und Verbindlichkeiten sowie Zahlungen pro Partner detailliert nachzuvollziehen (Offene-Posten-Buchführung). Über dieses Modul kannst du Geschäftspartner in DATEV Rechnungswesen anlegen und aktualisieren. ## Attribute Personenkonto-Nummer. Ist die Nummer bereits vergeben, wird der bestehende Kontakt aktualisiert. Art des Geschäftspartners: `NATUERLICHE_PERSON` (z. B. Freelancer) oder `UNTERNEHMEN` (juristische Person). Firmenname (für `kontaktTyp: UNTERNEHMEN`). Umsatzsteuer-Identifikationsnummer (USt-IdNr.). E-Mail-Adressen des Geschäftspartners. Jedes Element mit `email` und `typ` (`GESCHAEFTLICH`). **Nur bei `UNTERNEHMEN`** — bei `NATUERLICHE_PERSON` müssen E-Mail-Adressen innerhalb von `kontaktpersonen` angegeben werden. Telefonnummern des Geschäftspartners. Jedes Element mit `nummer` und `typ` (`GESCHAEFTLICH` oder `MOBIL`). **Nur bei `UNTERNEHMEN`** — bei `NATUERLICHE_PERSON` müssen Telefonnummern innerhalb von `kontaktpersonen` angegeben werden. Bankverbindungen des Geschäftspartners. Jedes Element mit `iban`, `bic`, `name` und `istHauptkonto` (boolean). Jedes Element mit `vorname`, `nachname`, `anrede`, sowie `emailAdressen[]` und `telefonnummern[]`. **Pflicht bei `NATUERLICHE_PERSON`** (mindestens 1 Eintrag). **Verboten bei `UNTERNEHMEN`** — das Feld darf dann nicht mitgeschickt werden. Adressen des Geschäftspartners. Jedes Element mit `adresszeile`, `postleitzahl`, `ort`, `laendercode` (ISO 3166-1 alpha-2) und `typ` (`RECHNUNGSADRESSE` oder `GESCHAEFTLICH`). Kontenrahmen des Mandanten, z.B. `SKR03`. Länge der Kontonummer des Mandanten, z.B. `5`. Erster Tag des Geschäftsjahres (YYYY-MM-DD). Üblicherweise der 1. Januar, z.B. `2025-01-01`. ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen. # Buchungen Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/journalentries Write: Erstelle Buchungssätze direkt in DATEV Rechnungswesen. ## Definition Buchungen sind die einzelnen Buchungszeilen, die in der Buchhaltung DATEV Rechnungswesen gebucht wurden. Diese Buchungen stellen die Grundlage für Betriebswirtschaftliche Auswertungen (BWAs) und Bilanzen dar. Über dieses Modul kannst du Buchungssätze direkt in DATEV Rechnungswesen erstellen. ## Buchungen erstellen Übergib den Buchungskörper mit den englischen Feldnamen (z. B. `taxRate.code` in `journalLineItems`). Das unterscheidet sich von den deutsch benannten DATEV-Unternehmen-Online-Endpunkten (z. B. Kassenbuch advanced), wo Steuerfelder als `steuersatz.prozent` und `steuersatz.buSchluessel` heißen. Eine typische Antwort sieht folgendermaßen aus: Für das ausführen dieses Modul wird **1 Credit** berechnet. Deinen detaillierten Verbrauche kannst Du in deinem Dashboard ansehen. ```200 200 theme={null} { "meta": { "warnings": [ "Field not used by target system" ], "pagination": { "total": 125, "perPage": 50, "currentPage": 1, "totalPages": 3 } }, "data": [ { "createdDate": "2021-01-01T00:00:00Z", "currency": "EUR", "description": "Hotel for dreamforce", "documentId": "b5e624e5-fb9e-4836-a443-87a3820f5b48", "journalLineItems": [ { "accountNumber": 8200, "createdDate ": "2021-01-01T00:00:00Z", "debitCreditIndicator": "DEBIT", "dimensions": [ { "name": "Material/Waren" } ], "taxRate": { "code": "03", }, "totalGrossAmount": 1190, "updatedDate": "2021-01-01T00:00:00Z" } ], "number ": "21900030", "transactionDate": "2021-01-01T00:00:00Z", "updatedDate": "2021-01-01T00:00:00Z" } ] } ``` # Kontenplan Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/kontenplan Read: Sach- und Personenkonten (Kontenplan) aus DATEV Rechnungswesen auslesen. ## Definition Über die öffentliche API werden pro Zeile nur **Kontonummer** und **Kontobeschriftung** ausgegeben (Felder `kontonummer` und `kontobeschriftung`) — für Sach- und Personenkonten. ## API `GET /v2/datev-rewe-read/kontenplan` — Pflichtquery `geschaeftsjahrStartDatum` (YYYY-MM-DD, wie `startDatum` aus der Geschäftsjahre-Liste). Siehe API-Referenz. ## Response Die Antwort enthält **alle Konten** des gewählten Geschäftsjahrs in einer Liste: **Sachkonten** (z. B. Anlagevermögen, Aufwands- und Ertragskonten) und **Personenkonten** (Debitoren/Kreditoren mit typischerweise längerer Kontonummer und Namen als Beschriftung). Pro Zeile nur `kontonummer` und `kontobeschriftung`. ```200 - Erfolg theme={null} { "data": [ { "kontobeschriftung": "Fällige Einzahlung auf Geschäftsanteile", "kontonummer": "50000" }, { "kontobeschriftung": "EDV-Software, entgeltl. erworben", "kontonummer": "270000" }, { "kontobeschriftung": "Gew. Schutzrechte, entgeltl. erworben", "kontonummer": "200000" }, { "kontobeschriftung": "Rüttinger Maschinenmusterbau", "kontonummer": "901000000" }, { "kontobeschriftung": "Levkowitzmuster KG", "kontonummer": "915000000" }, { "kontobeschriftung": "Hubertest Installationen", "kontonummer": "920000000" } ], "business-os": { "neuesGuthaben": 336 } } ``` ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst du in deinem Dashboard ansehen. # Offene Posten (OPOS) Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/opos Read: Stand der offenen Posten pro Personenkonto aus DATEV Rechnungswesen aggregiert auslesen. ## Definition Mit diesem Modul kannst du den **Stand der offenen Posten (OPOS)** pro Personenkonto zu einem bestimmten Stichtag abrufen. Intern werden Geschäftsjahre, Kontenplan und alle Buchungen parallel aus DATEV geladen, nach `(Personenkonto, Belegnummer)` gruppiert und nach absolutem Saldo absteigend sortiert. Eröffnungsbilanz-Werte werden nach DATEV-Konvention (saldo-neutrales SOLL/HABEN-Paar pro Personenkonto) korrekt verarbeitet. ## API Die öffentliche Schnittstelle ist **`GET /v2/datev-rewe-read/opos`**. Optional sind: * `stichtag` (YYYY-MM-DD, Default: heute) — Filter `belegdatum <= stichtag` * `filter` — `all` (default), `debitors` (erste Ziffer 1-6) oder `creditors` (7-9) * `eb` — `reconcile` (default, EBs mit Detail-Posten verrechnet, Restbetrag als `EB-RESIDUAL`) oder `raw` (EBs als reguläre Posten unter `beleg = '0'`, für Debug/Wirtschaftsprüfung) ## Bekannte Limitation Der Endpoint erfasst nur **klassische 9-stellige Personenkonten** (DATEV-Standard: erste Ziffer 1-6 = Debitor, 7-9 = Kreditor — kontenrahmen-unabhängig). Mandanten mit eigenen 8-stelligen Forderungs-/Verbindlichkeits-Sachkonten (z.B. `15970000 Forderungen gg. Mustermann GmbH`) sehen darüber nicht alle ihre OPs — solche Konten sind über die [Sachkonto-Salden](/modules/DATEV-Rechnungswesen/summen-und-salden) direkt abrufbar. ## Response ```200 - Erfolg theme={null} { "data": { "stichtag": "2026-12-31", "konten": [ { "kontonummer": "100012345", "bezeichnung": "Mustermann GmbH", "isDebitor": true, "totalSaldo": 12500.00, "posten": [ { "beleg": "RE-2026-042", "belegdatum": "2026-11-15", "saldo": 12500.00, "buchungstext": "Beratungsleistung Q4" } ] } ] }, "business-os": { "neuesGuthaben": 331 } } ``` ## Verbrauch Für das Ausführen dieses Moduls werden **5 Credits** berechnet — der Endpoint aggregiert intern Geschäftsjahre, Kontenplan und alle Buchungen aller Geschäftsjahre. Deinen detaillierten Verbrauch kannst du in deinem Dashboard ansehen. # Zahlungsbedingungen Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/payment-terms Read: Erhalte eine Liste aller in DATEV Rechnungswesen definierten Zahlungsbedingungen. ## Definition In DATEV Rechnungswesen werden spezifische Zahlungsbedingungen gespeichert, damit diese in einer Buchung oder einem Kontakt (Kreditor/Debitor) hinterlegt werden können. So definiert man beispielsweise, dass man den Lieferanten A immer in 14 Tagen per Banküberweisung bezahlen muss, wenn man es bereits nach 5 Tagen erhält man 2% Skonto. Zahlungsbedingungen sind in DATEV Rechnungswesen unter Ziffern gespeichert, z.B. 1. ## Response Eine typische Antwort des Moduls enthält die folgenden Attribute: ```200 200 theme={null} { "data": [ { "id": "08d52c49-b90c-4328-b1ec-623df74f904a", "bezeichnung": "31 Tage", "skontoFrist1": 10, "skontoFrist2": 14, "skontoSatz1": 5, "skontoSatz2": 3, "perioden": [ { "rechnungsbereich": "Rechnungsstellung bis Tag 5 des Monats", "skontoFrist1": "Tag 15 des laufenden Monats", "skontoFrist2": "Tag 25 des laufenden Monats", "nettoFrist": "Tag 30 des laufenden Monats" } ], "faelligkeitsart": "NACH_TAGE", "nettoFrist": 31 } ] } ``` ## API REST: `GET /v2/datev-rewe-read/zahlungsbedingungen` — siehe API-Referenz (Pflichtparameter `geschaeftsjahrStartDatum`, Antwortfelder deutsch). ## Verbrauch Pro Aufruf wird **1 Credit** berechnet (siehe API-Referenz). Verbrauch im Dashboard prüfen. # Sachkonto Salden Source: https://docs.business-os.de/modules/DATEV-Rechnungswesen/summen-und-salden Read: Kontostände von Sachkonten auslesen. ## Definition Mit Hilfe dieses Moduls kannst du die Salden der Sachkonten in DATEV auslesen und wie diese sich auf Periodenbasis verändert haben. ## API Die öffentliche Schnittstelle ist **`GET /v2/datev-rewe-read/susa`**. Pflichtparameter ist `geschaeftsjahrStartDatum` (YYYY-MM-DD, wie `startDatum` aus `GET /v2/datev-rewe-read/geschaeftsjahre`). Optional filterst du mit `kontonummer` (gleiche Werte wie bei `GET /v2/datev-rewe-read/kontenplan`). ## Response Eine typische Antwort enthält u. a. die folgenden Attribute (deutsche Feldnamen): ```200 200 - Erfolg theme={null} { "meta": { "hinweise": [ "Field not used by target system" ], "paginierung": { "gesamt": 125, "proSeite": 50, "aktuelleSeite": 1, "seitenGesamt": 3 } }, "data": [ { "kontobeschriftung": "Kasse", "kontonummer": "120000", "saldo": { "betrag": 1000, "sollHabenKennzeichen": "SOLL" }, "erstelltAm": "2025-06-12T00:00:00Z", "periodenwerte": [ { "periode": 1, "saldo": { "betrag": 200, "sollHabenKennzeichen": "SOLL" } }, { "periode": 2, "saldo": { "betrag": 300, "sollHabenKennzeichen": "SOLL" } } ], "ebWert": { "betrag": 500, "sollHabenKennzeichen": "SOLL" }, "umsatzHaben": 0, "umsatzSoll": 500, "geaendertAm": "2025-06-12T00:00:00Z" } ] } ``` ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst du in deinem Dashboard ansehen. # Intro Source: https://docs.business-os.de/modules/DATEV-Unternehmen-Online/DATEV-DUO-Intro Einführung in DATEV Unternehmen Online. DATEV Unternehmen online zählt zu den cloudbasierten Anwendungen der DATEV. Die Plattform ermöglicht es Steuerberatern und Unternehmen, Belege sowie Buchführungsdaten digital über das Internet auszutauschen. Darüber hinaus dient die Anwendung als Schnittstelle, um Daten aus ERP- oder Vorsystemen der Mandanten in weiterführende DATEV-Lösungen zu übertragen – beispielsweise in DATEV Rechnungswesen. ## Übersicht der Module Über unsere Write Module kannst du ganz einfach Daten nach DATEV Unternehmen senden. Schaue dir dazu die Kapitel zu den jeweiligen Modulen an. | Resource | Read | Create | Update | | :------------------------------- | :-------------------: | :-------------------: | :-------------------: | | **Konten** | | | | | **Belegdateien** | | | | | **Buchungsvorschlag** | | | | | **Kassenbucheintrag (einfach)** | | | | | **Kassenbucheintrag (advanced)** | | | | ## Verbrauch Für das Ausführen der DATEV Unternehmen Online Module wird jeweils **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen. # Konten Source: https://docs.business-os.de/modules/DATEV-Unternehmen-Online/accounts Read: Liste der Konten in DATEV Unternehmen Online erhalten. ## Definition Über dieses Modul kannst du die verfügbaren Konten in DATEV Unternehmen Online auslesen. Pro Eintrag liefert die API `name` (Bezeichnung) und `typ` (Kontotyp, z. B. `CASH`, `ACCOUNTS_RECEIVABLE`, `ACCOUNTS_PAYABLE`). Optional filterst du mit dem Query-Parameter `typ`. ## Response Eine typische Antwort dieses Moduls sieht folgendermaßen aus: ```200 - Erfolg theme={null} { "data": [ { "name": "Debitoren", "typ": "ACCOUNTS_RECEIVABLE" }, { "name": "Hauptkasse", "typ": "CASH" } ], "business-os": { "neuesGuthaben": 499 } } ``` ## Verbrauch Das Abrufen der Konten kostet **1 Credit** pro Aufruf. # Belegdatei Source: https://docs.business-os.de/modules/DATEV-Unternehmen-Online/belegdateien Write: Übermittle eine Belegdatei an DATEV Unternehmen Online. ## Definition Über dieses Modul kannst Du Dateien nach DATEV Unternehmen Online übermitteln. Diese sind dann im Ordner Posteingang sichtbar. Zugrunde liegt der DATEV Belegbildservice. ## Attribute Base64-kodierter Dateiinhalt der hochzuladenden Datei. Dateiname inkl. Endung — von DATEV vorgeschrieben, z.B. `rechnung-2025-03.pdf`. Belegtyp wie das Feld `belegtyp` aus `GET /v2/datev-duo/belegtypen`. Kann auch direkt als Text übergeben werden. GUID zur eindeutigen Identifikation des Dokuments in DATEV. Notiz für den Steuerberater (max. 60 Zeichen), z.B. `"privat"` wenn die Ausgabe als Privatausgabe verbucht werden soll. Notizen dürfen maximal 60 Zeichen enthalten. ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen. # Buchungsvorschlag Source: https://docs.business-os.de/modules/DATEV-Unternehmen-Online/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 Belegdatum (z. B. Rechnungsdatum). ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-01T00:00:00Z`. Währungscode nach ISO 4217, z. B. `EUR`. 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`). Belegnummer / Rechnungsnummer. Erlaubte Zeichen: `a-zA-Z0-9$%&*+-/`, max. 36 Zeichen. 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. Belegpositionen — mindestens eine Position erforderlich. Pro Position ist `betrag` Pflicht. Bruttobetrag dieser Position. Darf nicht 0 sein. Max. 10 Vorkomma- und 2 Nachkommastellen. Positionstext, max. 60 Zeichen. Steuersatz in Prozent (z. B. 19 für 19 %). Fester Skontobetrag (Skonto 1). Positiv, max. 8 Vorkomma- und 2 Nachkommastellen. Darf den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum` auf Belegebene. Skontosatz in Prozent (Skonto 1). Max. 2 Vorkomma- und 2 Nachkommastellen, max. 100 %. Erfordert `skontoZahlungsdatum` auf Belegebene. Fester Skontobetrag (Skonto 2). Darf `skontoBetrag` und den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum2` auf Belegebene. Skontosatz in Prozent (Skonto 2). Muss kleiner als `skontoProzent` sein. Erfordert `skontoZahlungsdatum2` auf Belegebene. Name des Sachkontos, max. 40 Zeichen. Sachkontonummer. Die Länge muss der konfigurierten Kontenlänge entsprechen. DATEV-Buchungsschlüssel (BU-Code). Max. 4 Zeichen, nur Ziffern. Kostenstelle 1 (KOST1), max. 36 Zeichen. Kostenstelle 2 (KOST2), max. 36 Zeichen. `EINGANGSRECHNUNG` (Kreditor) oder `AUSGANGSRECHNUNG` (Debitor). ### Pflichtfelder Belegdatum (z. B. Rechnungsdatum). ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-01T00:00:00Z`. Währungscode nach ISO 4217, z. B. `EUR`. 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`). Belegnummer / Rechnungsnummer. Erlaubte Zeichen: `a-zA-Z0-9$%&*+-/`, max. 36 Zeichen. 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. Belegpositionen — mindestens eine Position erforderlich. Pro Position ist `betrag` Pflicht. Bruttobetrag dieser Position. Darf nicht 0 sein. Max. 10 Vorkomma- und 2 Nachkommastellen. Positionstext, max. 60 Zeichen. Steuersatz in Prozent (z. B. 19 für 19 %). Fester Skontobetrag (Skonto 1). Positiv, max. 8 Vorkomma- und 2 Nachkommastellen. Darf den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum` auf Belegebene. Skontosatz in Prozent (Skonto 1). Max. 2 Vorkomma- und 2 Nachkommastellen, max. 100 %. Erfordert `skontoZahlungsdatum` auf Belegebene. Fester Skontobetrag (Skonto 2). Darf `skontoBetrag` und den Positionsbetrag nicht überschreiten. Erfordert `skontoZahlungsdatum2` auf Belegebene. Skontosatz in Prozent (Skonto 2). Muss kleiner als `skontoProzent` sein. Erfordert `skontoZahlungsdatum2` auf Belegebene. Name des Sachkontos, max. 40 Zeichen. Sachkontonummer. Die Länge muss der konfigurierten Kontenlänge entsprechen. DATEV-Buchungsschlüssel (BU-Code). Max. 4 Zeichen, nur Ziffern. Kostenstelle 1 (KOST1), max. 36 Zeichen. Kostenstelle 2 (KOST2), max. 36 Zeichen. `EINGANGSRECHNUNG` (Kreditor) oder `AUSGANGSRECHNUNG` (Debitor). *** ### Optionale Felder UUID zur Zuordnung von hochgeladenen Dateien zum Buchungsvorschlag. Muss eine gültige UUID sein, wird andernfalls ignoriert. Name des Geschäftspartners, max. 50 Zeichen. Kreditoren- oder Debitorennummer des Geschäftspartners. Kontenlänge = konfigurierte Länge + 1. Optionale Adressen — nur Ort; Bankverbindung am Beleg-Root (`bankkontonummer`, `bankleitzahl`, `bic`). Ort, max. 30 Zeichen. Bankkontonummer (1–10 Ziffern). Wenn angegeben, ist `bankleitzahl` erforderlich. Bankleitzahl. Wenn angegeben, ist `bankkontonummer` erforderlich. BIC-Code. IBAN. Liefer- bzw. Leistungsdatum. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-15T00:00:00Z`. Fälligkeitsdatum. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339). Muss nach `belegdatum` liegen. Pflicht, wenn Skonto-Felder verwendet werden. 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. 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. Zahlungsdatum — markiert den Beleg als bezahlt. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339). Ob automatisch eine Zahlungsanweisung erstellt werden soll (Überweisung bei `EINGANGSRECHNUNG`, Lastschrift bei `AUSGANGSRECHNUNG`). Muss `false` sein, wenn `zahlungsbedingungenId` = 9. Zusätzliche Notizen, max. 120 Zeichen. Bestell- bzw. Auftrags-ID, max. 30 Zeichen. Kennung der Zahlungsbedingungen (max. 3 Ziffern). Wenn gesetzt, dürfen keine Skonto-Felder verwendet werden. USt-IdNr. des Geschäftspartners, max. 15 Zeichen. Dreistufige Ordnerstruktur für die Belegablage. Ohne Angabe wird die Standardstruktur verwendet. Oberste Ebene der Ordnerstruktur. Zweite Ebene der Ordnerstruktur. Dritte Ebene der Ordnerstruktur. Belegdateien (z. B. PDF-Rechnungen). Base64-kodierter Dateiinhalt. Dateiname inkl. Endung (nur Basisname, max. 255 Zeichen). ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen. # Kassenbucheintrag (advanced) Source: https://docs.business-os.de/modules/DATEV-Unternehmen-Online/kassenbucheintrag-advanced Write: Erstelle einen oder mehrere Kassenbucheinträge in DATEV Unternehmen Online mit strukturierten buchhalterischen Daten. Ein positiver Betrag stellt eine Einnahme dar, ein negativer Betrag eine Ausgabe. ## Definition Über den DATEV Kassenbuchdatenservice und DATEV Rechnungsdatenservice kannst du erweiterte Kassenbucheinträge erstellen. Im Vergleich zum einfachen Kassenbucheintrag kannst du hier strukturierte buchhalterische Daten mitgeben — z.B. Steuersätze, Sachkonten oder Kostenstellen. So wird die Buchung in DATEV Rechnungswesen direkt als Buchungsvorschlag bereitgestellt. ## Attribute Währungscode nach ISO 4217, z.B. `EUR`. Name des Kassenbuchs (wie in DATEV angelegt). Kann aus `GET /v2/datev-duo/kassenbuecher` (Feld `bezeichnung`) ausgelesen werden. Der Transaktionsbetrag. Muss gleich der Summe der einzelnen Belegzeilen entsprechen. Ein positiver Wert stellt eine Einnahme dar, ein negativer Wert eine Ausgabe. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-01T00:00:00Z`. Liste der Belegzeilen. Für jede Belegzeile wird ein Kassenbucheintrag erstellt. Pro Zeile ist **`belegtext` verpflichtend** (nicht leer); dazu u.a. `gegenkonto` (Sachkonto als Gegenkonto zur Kasse), `betrag` (Bruttobetrag der Belegzeile). Optional: `belegNummer` (Beleg- bzw. Dokumentnummer für die Zeile), optional verschachtelt `steuersatz` mit `prozent` (Steuersatz in Prozent) und/oder `buSchluessel` (DATEV-BU-Schlüssel), optional `kostenstelle1` / `kostenstelle2`. Belegbilder (Quittungen/Dokumente): jedes Element mit `content` (Base64) und `dateiname`. ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen. # Kassenbucheintrag (einfach) Source: https://docs.business-os.de/modules/DATEV-Unternehmen-Online/kassenbucheintrag-einfach Write: Erstelle einen einfachen Kassenbucheintrag in einem spezifizierbaren Kassenbuch in DATEV Unternehmen Online. ## Definition Über den DATEV Kassenbuchdatenservice kannst du einfache Kassenbucheinträge erstellen. Dieses Modul eignet sich für Barbelege ohne zusätzliche buchhalterische Details — z.B. wenn du eine Barausgabe erfassen möchtest, ohne Steuersätze oder Sachkonten mitzugeben. Der Steuerberater kann die Details dann in DATEV Rechnungswesen ergänzen. ## Attribute Währungscode nach ISO 4217, z.B. `EUR`. Name des Kassenbuchs, in das der Eintrag geschrieben wird (wie in DATEV angelegt). Freitext-Beschreibung des Kassenbucheintrags (z.B. „Büromaterial“). Betrag: positiv für Einnahmen, negativ für Ausgaben. ISO-8601-Datum und -Uhrzeit mit Zeitzone (RFC 3339), z. B. `2025-03-01T00:00:00Z`. Sachkontonummer (z.B. `4930`). Eindeutige Belegnummer / interne Referenz. Steuersatz in Prozent (z.B. `19`). Belegdateien: jedes Element mit `daten` (Base64) und `dateiname` (z.B. `beleg.pdf`). ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen. # Accounts Source: https://docs.business-os.de/modules/banking/account-information-services/accounts Bankkonten einer Connection abrufen. ## Definition Unter Accounts verstehen wir die einzelnen Konten bei deiner Bank. Wenn Du im Business-OS Dashboard deinen Online-Banking Zugang verknüpfst (Connection), hast du Zugriff auf alle Konten (Accounts), auf die auch dieser Online-Banking Zugang Zugriff hat. ## List Accounts (READ) Dieses Modul zeigt alle verfügbaren Konten mit ihren Informationen einer Connection an. ```200 - Erfolg theme={null} { "data": [ { "can_hide": true, "id": "8273645091827364509", "name": "Geschäftskonto", "nature": "account", "balance": 12450.75, "currency_code": "EUR", "created_at": "2026-01-03T14:40:14Z", "updated_at": "2026-04-28T06:11:03Z", "extra": { "iban": "DE89370400440532013000", "holder_name": "Mustermann GmbH", "transactions_count": { "posted": 128, "pending": 2 } } } ] } ``` ## Verbrauch Für das Abrufen der Konten werden **keine Credits** berechnet. Die Daten werden aus dem Cache gelesen. # Balances Source: https://docs.business-os.de/modules/banking/account-information-services/balances Tägliche Kontosalden (SOD/EOD) mit Transaktionsdetails abrufen. ## Definition Daily Balances liefern für jeden Tag den **Start of Day (SOD)** und **End of Day (EOD)** Saldo eines Bankkontos, zusammen mit Cash-In, Cash-Out, der Nettoveränderung (Delta) und – wenn `include_transactions=true` gesetzt ist – allen Transaktionen des Tages. Die Salden werden automatisch bei jedem Connection-Refresh berechnet und gecacht. Die Abfrage kostet keine Credits. ## Berechnung Die Berechnung erfolgt rückwärts vom aktuellen Kontostand: * **EOD(heute)** = aktueller Kontostand * **SOD(heute)** = EOD(heute) - Delta(heute) * **EOD(gestern)** = SOD(heute) * usw. für jeden Tag rückwärts Nur Transaktionen mit `status: "posted"` werden berücksichtigt. Das Datum basiert auf dem `made_on`-Feld der Transaktion. ## List Daily Balances (READ) Gibt die täglichen Salden für ein Konto zurück, optional gefiltert nach Datumsbereich. Ohne `include_transactions=true` bleibt das Feld `transactions` weg (schnellere Abfrage rein aus dem Cache). ```200 - Erfolg theme={null} { "data": [ { "date": "2026-04-25", "sod": 10950.75, "eod": 12450.75, "cash_in": 1500.00, "cash_out": 0, "delta": 1500.00, "transactions": [ { "id": "6450918273645091827", "account_id": "8273645091827364509", "duplicated": false, "mode": "normal", "status": "posted", "made_on": "2026-04-25", "amount": 1500.00, "currency_code": "EUR", "description": "Rechnung RE-2026-0042 Beispiel Handels GmbH", "description_parsed": { "cred": null, "mref": null, "kref": "NOTPROVIDED", "debt": null, "svwz": "Rechnung RE-2026-0042", "abwa": null, "abwe": null, "bic": "COBADEFFXXX", "oamt": null, "coam": null, "purp": null }, "category": "uncategorized", "extra": { "time": "14:32:00", "payee": "DE89370400440532013000", "payer": "DE02100100100006820101", "additional": "SEPA-Überweisung", "merchant_id": null, "posting_date": "2026-04-25", "end_to_end_id": "RE-2026-0042", "payee_information": "Mustermann GmbH", "payer_information": "Beispiel Handels GmbH", "account_balance_snapshot": 12450.75, "categorization_confidence": null }, "created_at": "2026-04-25T14:40:14Z", "updated_at": "2026-04-25T14:40:14Z" } ] }, { "date": "2026-04-26", "sod": 12450.75, "eod": 12450.75, "cash_in": 0, "cash_out": 0, "delta": 0, "transactions": [] } ] } ``` ## Verbrauch Für das Ausführen dieses Endpunkts werden **keine Credits** berechnet. Die Daten werden aus dem Cache gelesen. # Connections Source: https://docs.business-os.de/modules/banking/account-information-services/connection Bankverbindungen einer Organisation abrufen und verwalten. ## Definition Eine Connection ist die Kopplung deines Online Banking Zugangs in unserem Backend. Eine Connection kann mehrere Accounts enthalten, wenn du mit deinem Online Banking Zugang Zugriff zu mehreren Bankkonten hast. ## List Connections (READ) Dieses Modul zeigt alle Connections an, also alle Online Banking Zugänge, die du im Business OS Back-End gekoppelt hast. ```200 - Erfolg theme={null} { "data": [ { "id": "9182736450918273645", "provider_name": "Musterbank", "provider_code": "musterbank_de", "country_code": "DE", "status": "active", "automatic_refresh": true, "next_refresh_possible_at": "2026-02-19T06:26:03Z", "created_at": "2026-01-03T14:39:58Z", "updated_at": "2026-02-19T06:11:03Z", "display_name": "Mustermann GmbH – Geschäftskonto", "logo_url": "https://cdn.business-os.de/logos/providers/musterbank_de.svg", "consent_expires_at": "2026-07-19T06:11:03Z", "error_class": null, "error_message": null }, { "id": "8273645091827364509", "provider_name": "Sparmuster eG", "provider_code": "sparmuster_de", "country_code": "DE", "status": "inactive", "automatic_refresh": false, "next_refresh_possible_at": null, "created_at": "2026-01-15T13:55:11Z", "updated_at": "2026-03-20T09:12:44Z", "display_name": "Mustermann GmbH – Tagesgeld", "logo_url": "https://cdn.business-os.de/logos/providers/sparmuster_de.svg", "consent_expires_at": "2026-04-15T13:55:28Z", "error_class": "ConnectionExpired", "error_message": "Die Bank-Einwilligung ist abgelaufen. Bitte neu verbinden." } ] } ``` ## Verbrauch Für das Verwalten und Abrufen von Verbindungen werden **keine Credits** berechnet. Credits fallen erst bei Datenabrufen (Transaktionen) und Zahlungen an. # Transactions Source: https://docs.business-os.de/modules/banking/account-information-services/transactions Transaktionen eines Bankkontos abrufen. ## Definition Transactions sind Buchungen, die auf einem Konto durchgeführt wurden — Einzahlungen und Auszahlungen. ## List Transactions (READ) Dieses Modul zeigt alle Transaktionen eines spezifizierbaren Kontos mit konfigurierbaren Filtern an. ```200 - Erfolg theme={null} { "data": [ { "id": "6450918273645091827", "account_id": "8273645091827364509", "duplicated": false, "mode": "normal", "status": "posted", "made_on": "2026-04-25", "amount": 1500.00, "currency_code": "EUR", "description": "Rechnung RE-2026-0042 Beispiel Handels GmbH", "description_parsed": { "cred": null, "mref": null, "kref": "NOTPROVIDED", "debt": null, "svwz": "Rechnung RE-2026-0042", "abwa": null, "abwe": null, "bic": "COBADEFFXXX", "oamt": null, "coam": null, "purp": null }, "category": "uncategorized", "extra": { "time": "14:32:00", "payee": "DE89370400440532013000", "payer": "DE02100100100006820101", "additional": "SEPA-Überweisung", "merchant_id": null, "posting_date": "2026-04-25", "end_to_end_id": "RE-2026-0042", "payee_information": "Mustermann GmbH", "payer_information": "Beispiel Handels GmbH", "account_balance_snapshot": 12450.75, "categorization_confidence": null }, "created_at": "2026-04-25T14:40:14Z", "updated_at": "2026-04-25T14:40:14Z" } ] } ``` ## Verbrauch Für das Ausführen dieses Moduls wird **1 Credit pro Abruf** berechnet. Deinen detaillierten Verbrauch kannst Du in deinem Dashboard ansehen. # Webhook Source: https://docs.business-os.de/modules/banking/account-information-services/webhook Erhalte automatische Benachrichtigungen bei neuen Kontodaten, Verbindungsfehlern oder gelöschten Verbindungen. ## Definition Sobald sich der Status einer Bank-Verbindung ändert, sendet Business OS einen `POST`-Request an deine konfigurierte Webhook-URL. Du erhältst Benachrichtigungen bei neuen Kontodaten, Verbindungsfehlern und gelöschten Verbindungen. ## Webhook-URL konfigurieren Du kannst deine Webhook-URL über die API setzen: **`PUT /v2/banking/webhook-url`** ```json theme={null} { "webhook_url": "https://hook.eu2.make.com/dein-webhook-pfad" } ``` Die aktuelle Webhook-URL kannst du über `GET /v2/banking/webhook-url` abrufen. Die Webhook-URL muss eine **öffentliche HTTPS-URL** sein. Lokale Adressen (localhost, private IP-Bereiche) und nicht-HTTPS URLs werden abgelehnt. ## Payload-Struktur Alle Webhook-Payloads haben dieselbe Envelope-Struktur: ```json theme={null} { "event": "event_name", "data": { ... }, "received_at": "2026-03-31T14:30:00.000Z" } ``` | Feld | Typ | Beschreibung | | :------------ | :---------------- | :---------------------- | | `event` | string | Event-Typ (siehe unten) | | `data` | object | Event-spezifische Daten | | `received_at` | string (ISO 8601) | Zeitpunkt des Events | ## Event-Typen ### `refresh_complete` Neue Kontodaten sind verfügbar. Wird ausgelöst, wenn eine automatische oder manuelle Aktualisierung abgeschlossen wurde. ```json theme={null} { "event": "refresh_complete", "data": { "connection_id": "9182736450918273645", "provider_name": "Musterbank", "provider_code": "musterbank_oauth_client_de", "country_code": "DE", "status": "active", "refresh_type": "automatic", "accounts": [ { "id": "8273645091827364509", "name": "DE89370400440532013000", "holder_name": "Mustermann GmbH", "nature": "account", "balance": 1250.00, "currency_code": "EUR", "iban": "DE89370400440532013000" } ] }, "received_at": "2026-03-31T14:30:00.000Z" } ``` | Feld | Typ | Beschreibung | | :-------------- | :----- | :----------------------------------------------------------------------------------- | | `connection_id` | string | ID der aktualisierten Verbindung | | `provider_name` | string | Name der Bank | | `provider_code` | string | Technischer Provider-Code | | `country_code` | string | Ländercode (ISO 3166-1 alpha-2) | | `status` | string | Verbindungsstatus (`active`, `inactive`) | | `refresh_type` | string | `automatic` oder `manual` | | `accounts` | array | Aktuelle Kontostände (id, name, holder\_name, nature, balance, currency\_code, iban) | ### `connection_error` Fehler bei einer Verbindung — z.B. abgelaufene PSD2-Einwilligung oder technisches Problem. ```json theme={null} { "event": "connection_error", "data": { "connection_id": "9182736450918273645", "provider_name": "Musterbank", "provider_code": "musterbank_oauth_client_de", "country_code": "DE", "refresh_type": "automatic", "error_class": "InvalidCredentials", "error_message": "Credentials are invalid." }, "received_at": "2026-03-31T14:30:00.000Z" } ``` | Feld | Typ | Beschreibung | | :-------------- | :----- | :-------------------------------------------------------- | | `connection_id` | string | ID der betroffenen Verbindung | | `provider_name` | string | Name der Bank | | `provider_code` | string | Technischer Provider-Code | | `country_code` | string | Ländercode | | `refresh_type` | string | `automatic` oder `manual` | | `error_class` | string | Fehlerklasse (z.B. `InvalidCredentials`, `ProviderError`) | | `error_message` | string | Fehlerbeschreibung | ### `connection_destroyed` Eine Verbindung wurde gelöscht — entweder durch API-Aufruf oder durch die Bank. ```json theme={null} { "event": "connection_destroyed", "data": { "connection_id": "9182736450918273645", "provider_name": "Musterbank", "provider_code": "musterbank_oauth_client_de", "country_code": "DE", "refresh_type": "automatic" }, "received_at": "2026-03-31T14:30:00.000Z" } ``` | Feld | Typ | Beschreibung | | :-------------- | :----- | :--------------------------- | | `connection_id` | string | ID der gelöschten Verbindung | | `provider_name` | string | Name der Bank | | `provider_code` | string | Technischer Provider-Code | | `country_code` | string | Ländercode | | `refresh_type` | string | `automatic` oder `manual` | ## Verbrauch Webhooks verbrauchen keine Credits. Nur aktive API-Aufrufe (z.B. Transaktionen abrufen) werden berechnet. # Intro Source: https://docs.business-os.de/modules/banking/banking-intro Einführung in die Banking-Module von Business OS. Über die Banking-Module von Business OS kannst du Bankkonten anbinden, Kontodaten und Transaktionen abrufen sowie Zahlungen initiieren. Die Anbindung erfolgt über PSD2-konforme Schnittstellen und unterstützt über 5.000 Banken in Europa. ## Übersicht der Services Die Banking-Funktionalität ist in zwei Services unterteilt: Bankverbindungen verwalten, Kontoinformationen und Transaktionen abrufen. Ideal für automatisiertes Reporting, Kontoabgleich und Buchhaltungsvorarbeit. SEPA- und SEPA-Instant-Zahlungen direkt aus deinen Automatisierungen initiieren. Die finale Freigabe erfolgt über den TAN-Prozess deiner Bank. ## Übersicht der Module | Resource | Read | Create | | :--------------- | :-------------------: | :-------------------: | | **Connections** | | | | **Accounts** | | | | **Transactions** | | | | **Payments** | | | ## Bankverbindung einrichten Um Banking-Module nutzen zu können, muss zunächst eine Bankverbindung (Connection) über das Business OS Dashboard hergestellt werden: Öffne das [Business OS Dashboard](https://app.business-os.de) und navigiere zum Banking-Bereich. Wähle deine Bank aus der Liste der unterstützten Institute. Es werden sowohl regulierte Banken (Partner API) als auch unregulierte Institute (Open Banking API) unterstützt. Du wirst zum Online-Banking deiner Bank weitergeleitet, um den Zugriff zu autorisieren. Je nach Bank wird der Zugriff per TAN oder App-Freigabe bestätigt. Nach erfolgreicher Autorisierung werden deine Konten automatisch importiert und stehen über die API zur Verfügung. ## Webhooks Für beide Services (AIS und PIS) stehen Webhooks zur Verfügung. Über das Dashboard oder die API kannst du eine Webhook-URL konfigurieren, an die Echtzeit-Benachrichtigungen gesendet werden — z.B. bei neuen Transaktionen oder Statusänderungen einer Zahlung. ## Verbrauch Nicht jedes Banking-Modul kostet Credits. **Kostenpflichtig:** Transaktionen auflisten/abrufen (**1 Credit**), Zahlungsstatus abrufen/aktualisieren (**1 Credit**), Zahlung auslösen (**3 Credits**, nur bei erfolgreicher Zahlung). **Kostenlos:** Konten, Salden, Zahlungen auflisten, Payment-Templates, Verbindungen und Webhook-URL (Cache- bzw. Verwaltungs-Operationen). Die genauen Kosten stehen bei jedem Modul; deinen detaillierten Verbrauch siehst du im Dashboard. # Payments Source: https://docs.business-os.de/modules/banking/payment-initiation-services/payments Zahlungen in SEPA oder SEPA Instant initiieren. ## Definition Über dieses Modul gibst du alle relevanten Zahlungsparameter mit, um die Zahlung auf einem spezifizierbaren Konto zu initiieren. Dieser Vorgang löst den TAN-Prozess deiner Bank aus, sodass du die Zahlung final über z.B. Push-TAN auf deinem Handy freigeben musst. ## Initiate SEPA Payment Erstelle eine neue Zahlung über den `POST /v2/banking/payments` Endpunkt. ### Attribute Die Banking-Customer-ID. Wird automatisch aus deiner Organisation ermittelt, wenn nicht angegeben. Die Connection-ID des Bankzugangs, über den die Zahlung ausgeführt werden soll. Der Zahlungsbetrag in der angegebenen Währung. Währungscode (z.B. `EUR`). Verwendungszweck der Überweisung. IBAN des Zahlungsempfängers. Name des Zahlungsempfängers. ## Get Payment Status Rufe den Status einer bestehenden Zahlung über `GET /v2/banking/payments/:id` ab. ```200 - Erfolg theme={null} { "data": { "id": "7364509182736450918", "reference": "RE-2026-0042", "provider_code": "musterbank_de", "provider_name": "Musterbank", "status": "settled", "raw_provider_status": "ACCC", "template_identifier": "SEPA", "payment_attributes": { "amount": "150.00", "currency_code": "EUR", "description": "Rechnung RE-2026-0042", "creditor_name": "Beispiel Handels GmbH", "creditor_iban": "DE89370400440532013000", "creditor_bic": "COBADEFFXXX", "debtor_iban": "DE02100100100006820101", "end_to_end_id": "RE-2026-0042", "customer_ip_address": "203.0.113.42" }, "refresh_interval": 60, "refresh_timeout": 600, "last_attempt": { "id": "8273645091827364509", "custom_fields": {} }, "created_at": "2026-04-25T10:30:00Z", "updated_at": "2026-04-25T10:31:00Z" } } ``` ### Payment Status-Werte | Status | Beschreibung | | :------------ | :------------------------------------------------------ | | `authorizing` | Zahlung wird vom Zahler autorisiert (TAN-/App-Freigabe) | | `processing` | Zahlung wird verarbeitet | | `settled` | Zahlung erfolgreich ausgeführt | | `failed` | Zahlung fehlgeschlagen (z.B. unzureichendes Guthaben) | | `rejected` | Zahlung von der Bank abgelehnt | ## Verbrauch Für das ausführen dieses Modul werden **3 Credits (nur bei erfolgreicher Zahlung)** berechnet. Deinen detaillierten Verbrauche kannst Du in deinem Dashboard ansehen. # Webhook Source: https://docs.business-os.de/modules/banking/payment-initiation-services/webhook Erhalte automatische Status-Updates zu initiierten Zahlungen. ## Definition Nachdem du eine Zahlung initiiert hast, erhältst du über den Webhook automatische Status-Updates — z.B. wenn die Zahlung erfolgreich ausgeführt wurde oder fehlgeschlagen ist. Die Webhook-URL wird zentral für alle Banking-Events konfiguriert (`PUT /v2/banking/webhook-url`). Nutze das `event`-Feld, um zwischen AIS- und PIS-Events zu unterscheiden. ## Payload ### `payment_update` Wird ausgelöst, wenn sich der Status einer Zahlung ändert (z.B. von `processing` zu `settled`). ```json theme={null} { "event": "payment_update", "data": { "payment_id": "7364509182736450918", "status": "settled", "raw_provider_status": "ACCC", "template_identifier": "SEPA", "payment_attributes": { "amount": "150.00", "currency_code": "EUR", "description": "Rechnung RE-2026-001", "creditor_iban": "DE89370400440532013000", "creditor_name": "Mustermann GmbH", "debtor_iban": "DE27100777770209299700", "end_to_end_id": "RE-2026-001", "customer_ip_address": "203.0.113.42" }, "custom_fields": { "invoice_id": "RE-2026-001" } }, "received_at": "2026-03-31T14:35:00.000Z" } ``` | Feld | Typ | Beschreibung | | :-------------------- | :------------- | :--------------------------------------------------------------------------- | | `payment_id` | string | ID der Zahlung | | `status` | string | Aktueller Status (siehe unten) | | `raw_provider_status` | string \| null | Roher Bank-Statuscode (z.B. `ACCC`, `ACSC`) | | `template_identifier` | string | `SEPA` oder `SEPA_INSTANT` | | `payment_attributes` | object | Zahlungsdetails (amount, creditor\_iban, creditor\_name, debtor\_iban, etc.) | | `custom_fields` | object | Benutzerdefinierte Felder aus dem Create-Request (falls gesetzt) | ### `payment_progress` Wird ausgelöst, wenn eine initiierte Zahlung den Zwischenschritt `initiated_info_required` erreicht (Zahlung initiiert, wartet auf eine zusätzliche Bestätigung wie z.B. eine TAN). Reines Fortschritts-Signal — sobald die Zahlung weiterläuft, kommen alle echten Statusänderungen weiterhin als `payment_update`. ```json theme={null} { "event": "payment_progress", "data": { "payment_id": "7364509182736450918", "status": "initiated_info_required", "custom_fields": { "invoice_id": "RE-2026-001" } }, "received_at": "2026-03-31T14:32:00.000Z" } ``` | Feld | Typ | Beschreibung | | :-------------- | :----- | :------------------------------------------------------------------- | | `payment_id` | string | ID der Zahlung | | `status` | string | Zwischenstatus (aktuell `initiated_info_required`) | | `custom_fields` | object | Benutzerdefinierte Felder aus dem Create-Request (nur falls gesetzt) | Die Payload ist bewusst schlanker als bei `payment_update` — kein `raw_provider_status`, keine `payment_attributes`. Verarbeite `payment_progress` nur, wenn du den Zwischenschritt anzeigen willst; für abschließende Logik bleibt `payment_update` maßgeblich. Behandle unbekannte `event`-Werte in deiner Integration generell nicht als Fehler. ### Payment Status-Werte Folgende Status werden per `payment_update` ausgeliefert: | Status | Beschreibung | | :------------ | :----------------------------------------------------------------------- | | `initiated` | Zahlung wurde initiiert | | `authorizing` | Zahlung wird vom Zahler autorisiert (Bestätigung in der Bank) | | `authorized` | Zahlung wurde autorisiert (z.B. Terminüberweisung wartet auf Ausführung) | | `processing` | Zahlung wird verarbeitet | | `executed` | Auftrag von der Bank ausgeführt — Settlement noch nicht bestätigt | | `settled` | Settlement vollständig abgeschlossen (finaler Erfolg) | | `failed` | Zahlung fehlgeschlagen | | `rejected` | Zahlung von der Bank abgelehnt | `executed` ist noch kein finaler Erfolg — warte für abschließende Logik (z.B. Rechnungs-Abhaken) auf `settled`. Der Zwischenstatus `initiated_info_required` wird nicht als `payment_update` ausgeliefert — er kommt als eigener Event-Typ `payment_progress` (siehe oben). Sobald die Zahlung weiterläuft, erhältst du wieder ein `payment_update` (z.B. `authorizing` → `processing` → `settled`). Der `raw_provider_status` gibt den Original-Statuscode der Bank zurück. Gängige Werte sind `ACCC` (AcceptedSettlementCompleted) und `ACSC` (AcceptedSettlementCompletedDebitorAccount). Verwende das `status`-Feld für die Logik in deiner Integration. ## Verbrauch Webhooks verbrauchen keine Credits. Die 3 Credits für eine Zahlung werden erst beim erfolgreichen Settlement (`settled`) bestätigt. # CLI & Skill Source: https://docs.business-os.de/sdks/cli Business OS direkt aus dem Terminal oder mit AI-Agenten wie Claude Code nutzen # CLI & Skill Die Business OS CLI gibt dir Zugriff auf **Banking** und **DATEV** (Unternehmen Online, Rechnungswesen Lesen/Schreiben) direkt aus dem Terminal. In Kombination mit der Skill-Datei können AI-Agenten wie Claude Code die CLI automatisch nutzen. Für AI-Agenten **außerhalb der Shell** (claude.ai, Cursor, Windsurf) gibt es den Hosted MCP unter `mcp.business-os.de` (OAuth, voller Banking- + DATEV-Funktionsumfang). Die CLI selbst bringt keinen lokalen MCP-Server mehr mit — siehe [MCP Server](/sdks/mcp). ## Installation ```bash theme={null} npm install -g business-os-cli ``` Oder ohne globale Installation: ```bash theme={null} npx business-os-cli ``` ## Authentifizierung ### Interaktiv ```bash theme={null} business-os login ``` Du wirst nach deinem API Key gefragt. Der Key wird unter `~/.business-os/config.json` gespeichert. ### Per Umgebungsvariable ```bash theme={null} export BUSINESS_OS_API_KEY=bo_xxxxx... ``` ### API Typ setzen Business OS unterstützt zwei APIs: * **Partner API** — Regulierte Banken (Sparkasse, Volksbank, Deutsche Bank, etc.) * **Open Banking API** — Nicht-regulierte Anbieter (American Express, PayPal, Revolut, etc.) ```bash theme={null} business-os config --api partner # Default business-os config --api openbanking ``` ## Claude Code Skill Installiere die Skill-Datei, damit Claude Code die CLI automatisch nutzen kann: ```bash theme={null} business-os init ``` Dies kopiert eine `SKILL.md` nach `~/.claude/skills/business-os/`. Nach einem Neustart von Claude Code erkennt dieser die Skill automatisch. **Beispiel-Interaktion mit Claude Code:** ``` User: Zeige mir meine Banking-Connections Claude: Ruft `business-os connections list` auf und zeigt die Ergebnisse ``` ## Befehle ### Connections ```bash theme={null} # Alle Verbindungen auflisten business-os connections list # Einzelne Verbindung abrufen business-os connections get 9182736450918273645 # Verbindung löschen business-os connections delete 9182736450918273645 ``` ### Accounts ```bash theme={null} # Alle Konten auflisten business-os accounts list # Konten einer bestimmten Verbindung business-os accounts list --connection 9182736450918273645 # Einzelnes Konto abrufen business-os accounts get 8273645091827364509 ``` ### Transactions ```bash theme={null} # Transaktionen einer Verbindung business-os transactions list --connection 9182736450918273645 # Gefiltert nach Konto business-os transactions list --connection 9182736450918273645 --account 8273645091827364509 # Mit Zeitraum business-os transactions list --connection 9182736450918273645 --from 2026-01-01 --to 2026-03-24 ``` ### Balances ```bash theme={null} # Tagessalden eines Kontos (Start-/End-of-Day, Cash-In/-Out, Delta) business-os balances list --account 8273645091827364509 # Mit Zeitraum business-os balances list --account 8273645091827364509 --from 2026-01-01 --to 2026-03-31 ``` `accounts list` liefert den **aktuellen** Saldo pro Konto (Snapshot). `balances list` liefert den **Verlauf** über die Zeit. ### Payments ```bash theme={null} # Alle Zahlungen auflisten business-os payments list # Zahlungsdetails abrufen business-os payments get 7364509182736450918 # Verfügbare Templates (SEPA, SEPA_INSTANT) + unterstützende Provider business-os payments templates # SEPA-Zahlung initiieren business-os payments create \ --provider musterbank_oauth_client_de \ --template SEPA \ --creditor-name "Mustermann GmbH" \ --creditor-iban "DE27100777770209299700" \ --debtor-iban "DE89370400440532013000" \ --amount "100.00" \ --end-to-end-id "RE-2026-001" \ --description "Rechnung RE-2026-001" ``` Der `payments create` Befehl gibt eine Widget-URL zurück. Der Nutzer muss diese URL öffnen, um die Zahlung per TAN zu autorisieren. ### Webhook ```bash theme={null} # Aktuelle Webhook URL abrufen business-os webhook get # Webhook URL setzen business-os webhook set https://hook.example.com/banking ``` ### Provider suchen ```bash theme={null} # Bank suchen business-os providers search "Sparkasse" # Open Banking Anbieter suchen business-os providers search "American Express" --api openbanking ``` ## DATEV DATEV-Verbindungen werden im Dashboard angelegt. Jede Verbindung hat eine `connectionId`. Multi-Mandant-Verbindungen (ReWe-Read) brauchen zusätzlich `--company ` — die companyId liefert `datev companies`. ### Mandanten ```bash theme={null} business-os datev companies --connection ``` ### DATEV Unternehmen Online (DUO) Beleg- und Kassenbuch-Ebene. ```bash theme={null} business-os datev-duo connections business-os datev-duo belegtypen --connection business-os datev-duo kassenbuecher --connection business-os datev-duo rechnungsordner --connection --typ EINGANG # Schreiben — Payload wird 1:1 an DATEV weitergereicht business-os datev-duo upload-beleg --connection --body '{ ... }' business-os datev-duo kassenbuch-einfach --connection --body-file beleg.json business-os datev-duo kassenbuch-advanced --connection --body-file kassenbuch.json business-os datev-duo buchungsvorschlag --connection --body '{ ... }' ``` ### DATEV Rechnungswesen — Schreiben ```bash theme={null} business-os datev-rewe connections business-os datev-rewe belegtypen --connection business-os datev-rewe steuersaetze --connection business-os datev-rewe upload-beleg --connection --body '{ ... }' business-os datev-rewe personenkonto --connection --body '{ ... }' business-os datev-rewe buchung --connection --body '{ ... }' ``` `personenkonto` und `buchung` benötigen das RVO-Recht „Rechnungsdatenservice 1.0" auf dem Mandanten. ### DATEV Rechnungswesen — Lesen Read-only Finanzdaten pro Mandant. Typischer Ablauf: `connections` → `permissions` (welche RVO-Rechte?) → `geschaeftsjahre` (liefert `startDatum`) → `susa`/`opos`. ```bash theme={null} business-os datev-rewe-read connections business-os datev-rewe-read permissions --connection business-os datev-rewe-read geschaeftsjahre --connection business-os datev-rewe-read geschaeftsjahr --connection # Finanzdaten — brauchen --fiscal-year-start (aus geschaeftsjahre.startDatum) business-os datev-rewe-read kontenplan --connection --fiscal-year-start 2026-01-01 business-os datev-rewe-read susa --connection --fiscal-year-start 2026-01-01 business-os datev-rewe-read susa --connection --fiscal-year-start 2026-01-01 --konto 4000 business-os datev-rewe-read buchungsdaten --connection --fiscal-year-start 2026-01-01 business-os datev-rewe-read zahlungsbedingungen --connection --fiscal-year-start 2026-01-01 # Offene Posten (Mahnwesen, Forderungen/Verbindlichkeiten) business-os datev-rewe-read opos --connection business-os datev-rewe-read opos --connection --filter debitoren --stichtag 2026-03-31 ``` DATEV-Befehle laufen unter dem aktuellen Org-Scope. Bei Agentur-Keys mit mehreren Organisationen die Ziel-Org mit der globalen Option `--org ` wählen, z.B. `business-os --org datev-rewe-read connections`. ## Output Alle Befehle geben **JSON** zurück. Du kannst die Ausgabe mit `jq` weiterverarbeiten: ```bash theme={null} # Nur Kontonamen anzeigen business-os accounts list | jq '.data[].name' # Saldo eines Kontos business-os accounts get 8273645091827364509 | jq '.data.balance' # Transaktionen als CSV business-os transactions list --connection 123 | jq -r '.data[] | [.made_on, .amount, .description] | @csv' ``` # Banking Make App Source: https://docs.business-os.de/sdks/make-banking PSD2 Banking direkt in Make.com — Konten, Transaktionen und Zahlungen ohne Code # Banking Make App Die **Business OS Banking** Custom App für [Make.com](https://www.make.com) gibt dir die komplette Banking-API als drag-and-drop Module — für Konto-Listings, Transaktions-Sync, Daily-Balances und SEPA/SEPA-Instant-Zahlungen über 3.300+ Banken in Deutschland. ## Installation 1. Öffne dein Make.com-Team und gehe zu **Apps** → **Add app** 2. Suche nach **Business OS Banking** oder nutze den direkten Link: [Banking App im Make Marketplace](https://eu1.make.celonis.com/) 3. Klicke **Install** — die App ist sofort in deinem Szenario-Builder verfügbar Die App läuft auf der Celonis-Make-Zone (`eu1.make.celonis.com`). Wenn du eine andere Make-Zone nutzt, kontaktiere [impressum@business-os.de](mailto:impressum@business-os.de) — wir migrieren die App in dein Region. ## Connection einrichten Beim ersten Modul-Drop wirst du nach einer Connection gefragt: | Feld | Wert | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | **Connection Name** | Frei wählbar (z.B. "Business OS — Live") | | **API Key** | Dein Org- oder Agency-API-Key aus dem [Dashboard](https://app.business-os.de) (Format `bo_xxxxx...`) | | **API Typ** | `Partner API` für regulierte Banken (Sparkasse, Volksbank, Deutsche Bank, ...) oder `Open Banking API` für AMEX, PayPal, Revolut | **Agency-Keys** funktionieren genauso wie Org-Keys, brauchen aber bei den meisten Modulen zusätzlich entweder eine `Connection ID` (Org wird daraus aufgelöst) oder den optionalen Parameter **Organisation** (UUID der Ziel-Org). ## Module Die App hat **12 Module**, die direkt auf die Banking-API-Endpoints abbilden. ### Connections | Modul | Beschreibung | Endpoint | | --------------------- | ------------------------------------------------ | ------------------------------------- | | **List Connections** | Listet alle Banking-Connections der Organisation | `GET /v2/banking/connections` | | **Get Connection** | Ruft eine einzelne Connection ab | `GET /v2/banking/connections/{id}` | | **Delete Connection** | Löscht eine Banking-Connection | `DELETE /v2/banking/connections/{id}` | ### Accounts | Modul | Beschreibung | Endpoint | | ----------------- | ----------------------------------------------------------------- | ------------------------------- | | **List Accounts** | Listet Konten — optional gefiltert nach Connection oder PIS-fähig | `GET /v2/banking/accounts` | | **Get Account** | Ruft ein einzelnes Konto ab | `GET /v2/banking/accounts/{id}` | ### Transactions | Modul | Beschreibung | Endpoint | | --------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------ | | **List Transactions** | Listet Transaktionen (sortiert nach `made_on` aufsteigend). Mindestens `connection_id` oder `account_id` erforderlich. | `GET /v2/banking/transactions` | ### Payments (PIS) | Modul | Beschreibung | Endpoint | | ------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------- | | **Create Payment** | Initiiert eine SEPA- oder SEPA-Instant-Zahlung. Provider/Debitor-IBAN werden automatisch aus der `account_id` aufgelöst. | `POST /v2/banking/payments` | | **List Payments** | Listet alle Zahlungen der Organisation | `GET /v2/banking/payments` | | **Get Payment** | Ruft Zahlungsdetails ab | `GET /v2/banking/payments/{id}` | ### Webhooks | Modul | Beschreibung | Endpoint | | ------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------- | | **Set Webhook URL** | Setzt die Webhook-URL für Banking-Benachrichtigungen (Refresh-Complete, Payment-Update, Connection-Error) | `PUT /v2/banking/webhook-url` | | **Get Webhook URL** | Ruft die aktuelle Webhook-URL ab | `GET /v2/banking/webhook-url` | ### Agentur-Tools | Modul | Beschreibung | Endpoint | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------- | | **List Organizations** | Listet alle Organisationen im Scope des API-Keys (Org-Keys: 1 Org; Agency-Keys: alle Orgs der Agentur). Keine Credits. | `GET /v2/organizations` | ## Beispiel-Szenario: Tägliche Transaktions-Synchronisation **Trigger:** Make-Scheduler täglich um 06:00 Uhr ``` [Scheduler] → [List Connections] ↓ Iterator [List Accounts (connection_id)] ↓ Iterator [List Transactions (account_id, from_date = yesterday)] ↓ [Filter: nur posted] ↓ [Google Sheet / DATEV-Beleg-Upload] ``` ## Beispiel-Szenario: Zahlung aus Rechnungs-Trigger **Trigger:** Webhook aus deinem ERP wenn Rechnung "freigegeben"-Status erreicht ``` [Webhook] → [Create Payment] account_id: {{erp.bank_account_id}} amount: {{erp.invoice.amount}} creditor_name: {{erp.invoice.creditor_name}} creditor_iban: {{erp.invoice.creditor_iban}} description: "Rechnung {{erp.invoice.number}}" reference: {{erp.invoice.number}} ↓ [Email an Approver mit payment_url für TAN-Bestätigung] ``` `Create Payment` gibt eine `payment_url` zurück — der Endkunde muss diese URL öffnen, um die Zahlung per TAN/2FA zu autorisieren. Erst nach Bestätigung wird die Zahlung ausgeführt und die 3 Credits abgebucht. ## Webhook-Integration Wenn du `Set Webhook URL` nutzt, sendet Business OS folgende Events an deine URL: | Event | Beschreibung | | ---------------------- | --------------------------------------------------------------------------------------- | | `refresh_complete` | Refresh einer Connection ist durchgelaufen — neue Transaktionen verfügbar | | `connection_error` | Connection ist in einen Fehlerzustand gegangen (User-Action / transient / auth-expired) | | `connection_destroyed` | Connection wurde vom Salt-Edge-Provider entfernt | | `payment_update` | Status einer Zahlung hat sich geändert (initiated → settled / failed) | Payload-Details findest du in der [API-Reference unter Webhook Events](/api-reference/openapi.json). ## Credit-Verbrauch Pro Modul-Aufruf werden Credits abgebucht — siehe Beschreibung pro Modul. Übersicht: | Aktion | Credits | | ------------------------------------------------------------- | ------------------------------------ | | Listings (Verbindungen, Konten, Zahlungen, Payment-Templates) | 0 | | Konto / Verbindung abrufen | 0 | | Transaktionen auflisten / Transaktion abrufen | 1 | | Zahlungsstatus abrufen / aktualisieren | 1 | | Zahlung erstellen | 3 (nur bei erfolgreicher Settlement) | | Webhook setzen / abrufen | 0 | ## Troubleshooting **"Insufficient credits" (402)** — Verbleibendes Guthaben im Dashboard prüfen oder Top-Up kaufen. **"connection\_id oder account\_id ist erforderlich" (400)** — Bei `List Transactions` muss mindestens einer der beiden Filter gesetzt sein. **Agency-Key wirft "Organisation muss angegeben werden" (400)** — Bei Modulen ohne `connection_id` (z.B. Create Payment ohne Konto-Bindung) den optionalen Parameter **Organisation** setzen. ## Feedback & Wünsche Issues und Module-Wünsche zur Banking-App: [impressum@business-os.de](mailto:impressum@business-os.de). # DATEV Make App Source: https://docs.business-os.de/sdks/make-datev DATEV Unternehmen Online und Rechnungswesen direkt in Make.com — Belege, Buchungen und Auswertungen ohne Code # DATEV Make App Die **Business OS DATEV** Custom App für [Make.com](https://www.make.com) bringt DATEV Unternehmen Online und DATEV Rechnungswesen als drag-and-drop Module in deine Szenarien — für Beleg-Übertragung, Buchungsvorschläge, Kassenbuch-Einträge, Buchungen, Stammdaten und Auswertungen. ## Installation 1. Öffne dein Make.com-Team und gehe zu **Apps** → **Add app** 2. Suche nach **Business OS DATEV** oder nutze den direkten Link: [DATEV App im Make Marketplace](https://www.make.com/en/hq/apps) 3. Klicke **Install** — die App ist sofort in deinem Szenario-Builder verfügbar ## Connection einrichten Beim ersten Modul-Drop wirst du nach einer Connection gefragt: | Feld | Wert | | ------------------- | ---------------------------------------------------------------------------------------------------- | | **Connection Name** | Frei wählbar (z.B. "Business OS — Steuerkanzlei XY") | | **API Key** | Dein Org- oder Agency-API-Key aus dem [Dashboard](https://app.business-os.de) (Format `bo_xxxxx...`) | Anders als bei der Banking-App gibt es bei DATEV **keinen API-Typ-Selector** — DATEV hat nur eine API, alle Module nutzen sie. ## Tool-Auswahl: 3 DATEV-Welten DATEV Online unterstützt drei verschiedene Anwendungen, jede mit eigenem OAuth-Flow und eigenem Berechtigungsmodell. Du wählst pro Connection im **Dashboard**, welche DATEV-App du verbinden möchtest: | DATEV-Tool | Wofür | Module-Familie | | ---------------------------------- | ------------------------------------------------------------------------------------------ | ----------------------- | | **DATEV Unternehmen Online (DUO)** | Beleg-Upload, Buchungsvorschläge, Kassenbücher — für Mandanten/Buchhalter im Unternehmen | DATEV DUO Module | | **DATEV Rechnungswesen — Write** | Buchungen erstellen, Kontakte/Personenkonten anlegen, Belege schreiben — für Steuerberater | DATEV ReWe Write Module | | **DATEV Rechnungswesen — Read** | Stammdaten lesen, Summen-und-Salden ziehen, Buchungsdaten auswerten — für Reporting/BI | DATEV ReWe Read Module | Vor dem ersten Make-Aufruf musst du die jeweilige Connection im [Business OS Dashboard](https://app.business-os.de) per OAuth einrichten — DATEV leitet dich durch den Berater-Login. ## Module — DATEV Unternehmen Online (DUO) | Modul | Beschreibung | Endpoint | | ------------------------- | ------------------------------------------------------------------ | ---------------------------------------- | | **Verbindungen** | Listet alle DUO-Connections | `GET /v2/datev-duo/connections` | | **Belegtypen** | Liste der verfügbaren Belegtypen (Eingangs-/Ausgangsrechnung, ...) | `GET /v2/datev-duo/belegtypen` | | **Kassenbücher** | Liste der Kassenbücher | `GET /v2/datev-duo/kassenbuecher` | | **Rechnungsordner** | Liste der Rechnungsordner (gefiltert nach Typ) | `GET /v2/datev-duo/rechnungsordner` | | **Beleg bereitstellen** | Lädt einen Beleg (PDF, JPG) in einen Rechnungsordner | `POST /v2/datev-duo/beleg-bereitstellen` | | **Buchungsvorschlag** | Erstellt einen Buchungsvorschlag mit Beleg-Bezug | `POST /v2/datev-duo/buchungsvorschlag` | | **Kassenbuch (einfach)** | Erstellt einen Kassenbucheintrag (vereinfacht) | `POST /v2/datev-duo/kassenbuch-einfach` | | **Kassenbuch (advanced)** | Erstellt einen Kassenbucheintrag mit allen Feldern | `POST /v2/datev-duo/kassenbuch-advanced` | ## Module — DATEV Rechnungswesen — Write | Modul | Beschreibung | Endpoint | | ----------------------- | --------------------------------------------- | ----------------------------------------- | | **Verbindungen** | Listet alle ReWe-Write-Connections | `GET /v2/datev-rewe/connections` | | **Belegtypen** | Liste der ReWe-Belegtypen | `GET /v2/datev-rewe/belegtypen` | | **Steuersätze** | Liste der verfügbaren Steuersätze pro Mandant | `GET /v2/datev-rewe/steuersaetze` | | **Beleg bereitstellen** | Lädt einen Beleg in DATEV ReWe | `POST /v2/datev-rewe/beleg-bereitstellen` | | **Personenkonto** | Legt Debitor/Kreditor-Personenkonto an | `POST /v2/datev-rewe/personenkonto` | | **Buchung** | Erstellt eine Buchung im Rechnungswesen | `POST /v2/datev-rewe/buchung` | ## Module — DATEV Rechnungswesen — Read | Modul | Beschreibung | Endpoint | | -------------------------- | ----------------------------------------------- | ---------------------------------------------- | | **Verbindungen** | Listet alle ReWe-Read-Connections | `GET /v2/datev-rewe-read/connections` | | **Geschäftsjahre** | Listet alle Geschäftsjahre des Mandanten | `GET /v2/datev-rewe-read/geschaeftsjahre` | | **Geschäftsjahr (Detail)** | Details zu einem einzelnen Geschäftsjahr | `GET /v2/datev-rewe-read/geschaeftsjahre/{id}` | | **Kontenplan** | Sach- und Personenkonten für ein Geschäftsjahr | `GET /v2/datev-rewe-read/kontenplan` | | **Summen und Salden** | SuSa-Auswertung | `GET /v2/datev-rewe-read/susa` | | **Buchungsdaten** | Buchungen abrufen (asynchroner Polling-Pattern) | `GET /v2/datev-rewe-read/buchungsdaten` | | **Zahlungsbedingungen** | Zahlungsbedingungen des Mandanten | `GET /v2/datev-rewe-read/zahlungsbedingungen` | ## Multi-Mandanten-Berater (Steuerkanzleien) Wenn eine Connection mehrere Mandanten umfasst (typischer Steuerberater-Account), kannst du auf den ReWe-Read-Modulen den optionalen Parameter **Mandant (companyId)** setzen — Format `-`, z.B. `386587-29183`. **Wichtig:** Ohne Mandant-Angabe nutzt DATEV den beim OAuth gewählten Default-Mandanten. Wenn dieser keine Export-Subscription hat, kommt **403** zurück. Setze in dem Fall den `companyId`-Parameter explizit auf einen abonnierten Mandanten. ## Agency-Keys Agency-API-Keys arbeiten über mehrere Organisationen. In den DATEV-Modulen findest du den optionalen Parameter **Organisation (Agency-Key only)** — UUID der Ziel-Organisation: * **Bei Org-Keys:** Parameter leer lassen — Org steckt im Key * **Bei Agency-Keys MIT `connection_id`:** Parameter optional — Backend resolved die Org aus der Connection * **Bei Agency-Keys OHNE `connection_id`** (z.B. List-Endpunkte): Parameter optional, aber empfohlen zum Filtern * **Bei Agency-Keys auf credit-pflichtige Endpunkte ohne `connection_id`:** Parameter **erforderlich** — sonst `400` ## Beispiel-Szenario: Eingangsrechnung → DATEV DUO **Trigger:** Webhook aus deinem ERP, wenn eine Eingangsrechnung den Status "geprüft" erreicht ``` [ERP-Webhook] → [Belegtypen] Filter: typ = "Eingangsrechnung" ↓ [Rechnungsordner] Filter: typ = "Eingangsrechnung" ↓ [Beleg bereitstellen] belegtyp: {{1.id}} rechnungsordner: {{2.id}} datei: {{webhook.pdf}} ↓ [Buchungsvorschlag] belegBereitstellungsId: {{3.id}} buchungstext: {{webhook.subject}} ... ``` ## Beispiel-Szenario: Monatliche BWA-Auswertung **Trigger:** Make-Scheduler am 5. jeden Monats ``` [Scheduler] → [Verbindungen ReWe-Read] ↓ Iterator [Geschäftsjahre] Filter: aktuelles Jahr ↓ [Summen und Salden] geschaeftsjahrStartDatum: {{2.startDatum}} ↓ [Aggregator / Google Sheet / E-Mail an Geschäftsführer] ``` ## Credit-Verbrauch Pro Modul-Aufruf werden Credits abgebucht: | Aktion | Credits | | ------------------------------------------------------ | ------- | | Listings (Verbindungen, Belegtypen, Kassenbücher, ...) | 0 | | Get-Operationen | 0 | | Beleg bereitstellen (DUO + ReWe) | 1 | | Buchungsvorschlag (DUO) | 1 | | Kassenbuch-Eintrag (DUO) | 1 | | Personenkonto (ReWe) | 1 | | Buchung (ReWe) | 1 | | ReWe-Read Operationen | 1 | Der `business-os.neuesGuthaben` im Response zeigt das verbleibende Guthaben. ## Troubleshooting **"RVO-Recht fehlt: Stammdaten" / "Auswertungen Export" (403)** — Der Steuerberater muss in DATEV RVO für deinen User auf dem Mandanten die entsprechenden Rechte-Bündel freischalten. **"datev\_export\_service\_missing" (402)** — Der Mandant hat keine DATEV-Rechnungswesen-Export-Subscription. Bei Multi-Mandanten-Connections per `companyId`-Parameter auf einen abonnierten Mandanten umschalten. **"datev\_token\_expired" (401)** — OAuth-Token ist abgelaufen. Im [Dashboard](https://app.business-os.de) auf die DATEV-Card → **Erneut verbinden** klicken. **Buchungsdaten bleibt "PENDING" (504)** — Asynchroner Job läuft noch. Make wiederholt den Call automatisch nach 30 Sekunden — pro Iterator-Run werden bis zu 3 Polls gemacht. ## Feedback & Wünsche Issues und Module-Wünsche zur DATEV-Make-App: [impressum@business-os.de](mailto:impressum@business-os.de) — wir leiten sie weiter. # MCP Server Source: https://docs.business-os.de/sdks/mcp Business OS als gehosteter MCP Server für claude.ai, Cursor, Windsurf und das Agent SDK # MCP Server Der **Hosted MCP Server** stellt Business OS — **Banking + DATEV** — als typisierte Tools für KI-Agenten bereit, die außerhalb der Shell laufen: **claude.ai**, **Cursor**, **Windsurf** und das **Agent SDK**. Er läuft remote (kein lokaler Prozess, keine Installation) und authentifiziert jede Sitzung per **OAuth 2.1**. * **Remote & stateless** — funktioniert im Web, auf Mobile und in Cloud-Agenten * **OAuth 2.1 + PKCE** — pro Nutzer-Sitzung eigene Autorisierung * **Strukturierte Tool-Definitionen** mit JSON Schema * **Voller Funktionsumfang** — Banking (PSD2) und DATEV (DUO, Rechnungswesen Lesen/Schreiben) Für Claude **Code** (Shell vorhanden) ist die [CLI + Skill](/sdks/cli) der einfachere Weg — `business-os init` bringt Claude die Befehle bei. Der Hosted MCP ist für Agenten **ohne** Shell gedacht. ## Setup Der Server wird als **Custom Connector** eingebunden. Server-URL: ``` https://mcp.business-os.de ``` ### claude.ai 1. **Einstellungen → Connectors → Custom Connector hinzufügen** 2. URL `https://mcp.business-os.de` eintragen und speichern 3. Beim ersten Verbinden öffnet sich die Business-OS-Autorisierungsseite — dort deinen **API Key** aus dem [Dashboard](https://app.business-os.de) einfügen und bestätigen 4. Die Tools stehen danach in jeder Unterhaltung zur Verfügung ### Cursor / Windsurf In der MCP-Konfiguration einen Remote-Server mit derselben URL (`https://mcp.business-os.de`) eintragen; der OAuth-Flow läuft identisch im Browser. Es wird **kein** API Key in eine lokale Datei geschrieben — die Autorisierung läuft über den Browser-OAuth-Flow, und jede Sitzung erhält ihr eigenes Token. ## Verfügbare Tools Nach dem Verbinden stehen folgende Tools im Agenten zur Verfügung. ### Banking AIS | Tool | Beschreibung | | ------------------- | ---------------------------------------- | | `list_connections` | Alle Banking-Connections auflisten | | `get_connection` | Einzelne Connection abrufen | | `delete_connection` | Connection löschen | | `list_accounts` | Konten auflisten (inkl. aktuellem Saldo) | | `get_account` | Einzelnes Konto abrufen | | `list_balances` | Tägliche Saldenreihe eines Kontos | | `list_transactions` | Transaktionen auflisten | ### Banking PIS | Tool | Beschreibung | | ------------------------ | ------------------------------------------- | | `create_payment` | SEPA-Zahlung initiieren | | `list_payment_templates` | Payment-Templates + unterstützende Provider | | `list_payments` | Zahlungen auflisten | | `get_payment` | Zahlungsdetails abrufen | ### Banking — Sonstige | Tool | Beschreibung | | ------------------ | ---------------------------- | | `get_webhook_url` | Aktuelle Webhook URL abrufen | | `set_webhook_url` | Webhook URL setzen | | `search_providers` | Banken nach Name suchen | ### DATEV — Allgemein & Unternehmen Online (DUO) | Tool | Beschreibung | | ----------------------------------------------------------------------------- | ---------------------------------------------- | | `list_datev_companies` | Mandanten einer Verbindung (liefert companyId) | | `list_duo_connections` | DUO-Verbindungen auflisten | | `list_duo_belegtypen` / `list_duo_kassenbuecher` / `list_duo_rechnungsordner` | DUO-Stammdaten lesen | | `upload_duo_beleg` | Beleg in DUO bereitstellen | | `create_duo_kassenbuch_einfach` / `create_duo_kassenbuch_advanced` | Kassenbuch-Einträge anlegen | | `create_duo_buchungsvorschlag` | Buchungsvorschlag anlegen | ### DATEV Rechnungswesen — Schreiben | Tool | Beschreibung | | ------------------------------------------------- | ------------------------------------------------------- | | `list_rewe_connections` | ReWe-Write-Verbindungen auflisten | | `list_rewe_belegtypen` / `list_rewe_steuersaetze` | Stammdaten lesen | | `upload_rewe_beleg` | Beleg bereitstellen | | `create_rewe_personenkonto` | Personenkonto anlegen (RVO „Rechnungsdatenservice 1.0") | | `create_rewe_buchung` | Buchung anlegen (RVO „Rechnungsdatenservice 1.0") | ### DATEV Rechnungswesen — Lesen | Tool | Beschreibung | | ----------------------------------------------------------------- | -------------------------------------------------------- | | `list_rewe_read_connections` | ReWe-Read-Verbindungen auflisten | | `get_rewe_read_permissions` | RVO-Rechte einer Verbindung prüfen | | `list_rewe_read_geschaeftsjahre` / `get_rewe_read_geschaeftsjahr` | Geschäftsjahre | | `get_rewe_read_kontenplan` | Kontenplan (Sachkonto-Nummern → Namen) | | `get_rewe_read_susa` | Summen-und-Salden (SuSa / BWA) | | `get_rewe_read_buchungsdaten` | Buchungsdaten (Journaleinträge) | | `get_rewe_read_opos` | Offene Posten (Mahnwesen, Forderungen/Verbindlichkeiten) | | `get_rewe_read_zahlungsbedingungen` | Zahlungsbedingungen | ## Beispiel-Interaktion Nach der Konfiguration kannst du Claude direkt in natürlicher Sprache ansprechen: ``` User: Zeige mir alle Bankkonten der Musterbank Claude: Nutzt list_connections → findet Musterbank (ID: 9182...) Nutzt list_accounts mit connection_id → zeigt 9 Konten mit IBANs und Salden User: Wie hoch ist der Gesamtsaldo? Claude: Berechnet aus den Account-Daten: 12.500,00 EUR User: Überweise 500€ von DE89... an Mustermann GmbH, DE27... Claude: Nutzt create_payment → gibt Widget-URL zurück "Bitte öffne diesen Link um die Zahlung per TAN zu autorisieren: ..." ``` ## Tool-Parameter ### `create_payment` ```json theme={null} { "provider_code": "musterbank_oauth_client_de", "template_identifier": "SEPA", "creditor_name": "Mustermann GmbH", "creditor_iban": "DE27100777770209299700", "debtor_iban": "DE89370400440532013000", "amount": "500.00", "end_to_end_id": "RE-2026-001", "currency_code": "EUR", "description": "Rechnung RE-2026-001", "custom_fields": { "invoice_id": "RE-2026-001" } } ``` ### `list_transactions` ```json theme={null} { "connection_id": "9182736450918273645", "account_id": "8273645091827364509", "from_date": "2026-01-01", "to_date": "2026-03-24" } ``` ## CLI + Skill vs. Hosted MCP Beide sprechen dasselbe API an — die Wahl hängt davon ab, **wo** der Agent läuft. | | CLI + Skill | Hosted MCP | | -------------------------- | ------------------------------------- | ----------------------------------------------- | | **Läuft** | lokal, in der Shell (Claude Code, CI) | remote (claude.ai, Cursor, Windsurf, Agent SDK) | | **Setup** | `business-os init` | Custom Connector auf `mcp.business-os.de` | | **Auth** | API Key lokal / Env-Var | OAuth 2.1 pro Sitzung (Browser) | | **Wie der Agent es nutzt** | Bash-Tool (`business-os …`) | typisierte MCP-Tools | | **Empfohlen für** | Terminal, Scripting, Claude Code | Cloud-/Web-Agenten ohne Shell | Beide Oberflächen sind unabhängige Clients desselben REST-API und decken denselben Funktionsumfang ab (Banking + DATEV) — keine wrappt die andere.