DATEV SDK for PHP

Installs: 269

Dependents: 1

Suggesters: 0

Security: 0

Stars: 4

Watchers: 4

Forks: 1

Open Issues: 0

pkg:composer/daniel-jorg-schuppelius/datev-php-sdk

v0.4.5 2026-01-11 18:40 UTC

This package is auto-updated.

Last update: 2026-01-11 18:41:03 UTC


README

PHP Version License Packagist

Ein PHP SDK für die DATEV Desktop API, das programmatischen Zugriff auf die deutsche Buchhaltungs- und Lohnabrechnungssoftware ermöglicht.

🚀 Features

  • Flexible Authentifizierung: Basic Auth und Bearer Token über austauschbare Authentication-Klassen
  • Domain-Driven Design: Strikte Trennung zwischen API-Clients, Endpoints, Entities und Contracts
  • Über 120 Endpoints für umfassende DATEV-Integration
  • Umfassende API-Abdeckung für verschiedene DATEV-Bereiche:
    • Buchhaltung (Accounting) - 34 Endpoints
    • Mandantenstammdaten (Client Master Data) - 19 Endpoints
    • Lohn & Gehalt (Payroll/HR) - 32 Endpoints
    • Dokumentenmanagement (DMS) - 11 Endpoints
    • Auftragsverwaltung (Order Management) - 21 Endpoints
    • Rechtswesen (Law) - 15 Endpoints
    • Öffentlicher Sektor (Public Sector) - 12 Endpoints
    • Identity & Access Management (SCIM) - 5 Endpoints
    • Diagnostics - 2 Endpoints

📋 Voraussetzungen

  • PHP 8.2, 8.3 oder 8.4
  • DATEV Software mit aktivierter Desktop API (läuft standardmäßig auf Port 58452)
  • Composer

📦 Installation

composer require daniel-jorg-schuppelius/datev-php-sdk

⚙️ Konfiguration

Verbindung zur DATEV Desktop API

Die API läuft standardmäßig auf https://127.0.0.1:58452.

Authentifizierung

HTTP Basic Auth (empfohlen):

use APIToolkit\API\Authentication\BasicAuthentication;
use Datev\API\Desktop\Client;

$authentication = new BasicAuthentication('Benutzer', 'Passwort');
$client = new Client($authentication, 'https://127.0.0.1:58452');

Bearer Token Auth:

use APIToolkit\API\Authentication\BearerAuthentication;
use Datev\API\Desktop\Client;

$authentication = new BearerAuthentication(
    'your-api-key',
    ['X-Datev-Client-ID' => 'your-client-id']
);
$client = new Client($authentication, 'https://127.0.0.1:58452');

📚 Verwendung

Beispiel: Mandanten abrufen (Accounting)

use APIToolkit\API\Authentication\BasicAuthentication;
use Datev\API\Desktop\Client;
use Datev\API\Desktop\Endpoints\Accounting\ClientsEndpoint;

$client = new Client(new BasicAuthentication('user', 'password'));
$endpoint = new ClientsEndpoint($client);

// Alle Mandanten abrufen
$clients = $endpoint->get();

// Einzelnen Mandanten abrufen
$singleClient = $endpoint->get(id: $clientId);

Beispiel: Mitarbeiter abrufen (Payroll)

use APIToolkit\API\Authentication\BasicAuthentication;
use Datev\API\Desktop\Client;
use Datev\API\Desktop\Endpoints\Payroll\EmployeesEndpoint;

$client = new Client(new BasicAuthentication('user', 'password'));
$endpoint = new EmployeesEndpoint($client);

// Mitarbeiter mit Referenzdatum abrufen (erforderlich für HR-Endpoints)
$employees = $endpoint->get(referenceDate: new DateTime('2024-01-01'));

Beispiel: Echo-Test (Verbindung prüfen)

use APIToolkit\API\Authentication\BasicAuthentication;
use Datev\API\Desktop\Client;
use Datev\API\Desktop\Endpoints\Diagnostics\EchoEndpoint;

$client = new Client(new BasicAuthentication('user', 'password'));
$echoEndpoint = new EchoEndpoint($client);

$response = $echoEndpoint->get();

🏗️ Projektstruktur

src/
├── API/
│   └── Desktop/
│       ├── Client.php              # API Client (unterstützt alle Auth-Typen)
│       └── Endpoints/
│           ├── Accounting/         # 34 Endpoints (accounting/v1)
│           ├── ClientMasterData/   # 19 Endpoints (master-data/v1)
│           ├── Diagnostics/        # 2 Endpoints (Echo & Domains)
│           ├── DocumentManagement/ # 11 Endpoints (dms/v2)
│           ├── IdentityAndAccessManagement/  # 5 Endpoints (SCIM)
│           ├── Law/                # 15 Endpoints (law/v1)
│           ├── OrderManagement/    # 21 Endpoints
│           ├── Payroll/            # 32 Endpoints (hr/v3)
│           └── PublicSector/       # 12 Endpoints (public-sector/v1)
├── Contracts/
│   ├── Abstracts/                  # Basis-Klassen
│   └── Interfaces/                 # Interface-Definitionen
├── Entities/                       # Domain-Entities
└── Enums/                          # Enumerations (20+ Typen)

🔌 API-Endpunkte

Accounting (accounting/v1)

Buchungssätze, Kostenstellen, Konten, Kreditoren, Debitoren und mehr.

Endpoint Beschreibung
ClientsEndpoint Mandantenverwaltung
AccountingRecordsEndpoint Buchungssätze
AccountingSequencesEndpoint Buchungsstapel
GeneralLedgerAccountsEndpoint Sachkonten
CreditorsEndpoint / DebitorsEndpoint Kreditoren & Debitoren
CostCentersEndpoint Kostenstellen
FiscalYearsEndpoint Wirtschaftsjahre
TermsOfPaymentEndpoint Zahlungsbedingungen
PostingProposal*Endpoint Buchungsvorschläge (Kasse, Ein-/Ausgangsrechnungen)
... und 24 weitere

Client Master Data (master-data/v1)

Mandantenstammdaten, Adressaten und Finanzämter.

Endpoint Beschreibung
ClientsEndpoint Mandantenstammdaten
AddresseesEndpoint Adressatenverwaltung
TaxAuthoritiesEndpoint Finanzämter
BanksEndpoint Bankverbindungen
LegalFormsEndpoint Rechtsformen
ClientCategoriesEndpoint Mandantenkategorien
RelationshipsEndpoint Beziehungen
... und 12 weitere

Payroll / HR (hr/v3)

Lohn- und Gehaltsabrechnung. Hinweis: Alle HR-Endpoints erfordern ein reference-date.

Endpoint Beschreibung
EmployeesEndpoint Mitarbeiterverwaltung
SalariesEndpoint Gehälter
SocialInsuranceEndpoint Sozialversicherung
TaxationEndpoint Besteuerung
WorkingHoursEndpoint Arbeitszeiten
VacationEntitlementEndpoint Urlaubsansprüche
GrossPaymentsEndpoint Bruttobezüge
... und 25 weitere

Document Management (dms/v2)

Dokumentenverwaltung und Archivierung.

Endpoint Beschreibung
DocumentsEndpoint Dokumentverwaltung
DocumentFilesEndpoint Dateien zu Dokumenten
DocumentStatesEndpoint Dokumentstatus
DomainsEndpoint Mandantenbereiche
StructureItemsEndpoint Ordnerstrukturen
SecureAreasEndpoint Sicherheitsbereiche
... und 5 weitere

Order Management

Auftragsverwaltung mit Gebührenplanung.

Endpoint Beschreibung
OrdersEndpoint Aufträge
InvoicesEndpoint Rechnungen
FeePlansEndpoint Gebührenpläne
ChargeRatesEndpoint Verrechnungssätze
CostItemsEndpoint Kostenträger
ExpensePostingsEndpoint Auslagenbuchungen
... und 15 weitere

Law (law/v1)

Aktenverwaltung für Rechtsanwälte und Notare.

Endpoint Beschreibung
FilesEndpoint Akten
ExpensesEndpoint Auslagen
FeeVersionsEndpoint Gebührenversionen
CausesEndpoint Fallursachen
PartyRolesEndpoint Parteirollen
SecurityZonesEndpoint Sicherheitszonen
... und 9 weitere

Public Sector (public-sector/v1)

Kommunalverwaltung und öffentlicher Sektor.

Endpoint Beschreibung
CitizensEndpoint Bürgerverwaltung
MetersEndpoint Zählerverwaltung
MeterReadingsEndpoint Zählerablesungen
NotificationsEndpoint Bescheide
DuesEndpoint Gebühren
ConsumptionsEndpoint Verbrauchsdaten
... und 6 weitere

Identity & Access Management (SCIM)

Benutzer- und Gruppenverwaltung nach SCIM-Standard.

Endpoint Beschreibung
UsersEndpoint Benutzerverwaltung
GroupsEndpoint Gruppenverwaltung
SchemasEndpoint SCIM-Schemas
ResourceTypesEndpoint Ressourcentypen
ServiceProviderConfigEndpoint Provider-Konfiguration

Diagnostics

Verbindungstests und Systemdiagnose.

Endpoint Beschreibung
EchoEndpoint Verbindungstest
DomainsEndpoint Verfügbare Domains

🧪 Tests

Test-Konfiguration

  1. Kopieren Sie .samples/config.json.sample nach tests/.samples/config.json
  2. Tragen Sie Ihre DATEV-Zugangsdaten ein:
{
    "DATEV-DESKTOP-API": [
        {
            "key": "resourceurl",
            "value": "https://127.0.0.1:58452"
        },
        {
            "key": "user",
            "value": "IhrBenutzer"
        },
        {
            "key": "password",
            "value": "IhrPasswort"
        }
    ]
}

Tests ausführen

composer test
# oder
vendor/bin/phpunit

Hinweis: Die meisten Tests erfordern eine laufende DATEV-Installation und sind daher standardmäßig deaktiviert.

📖 Abhängigkeiten

🔧 Tools

Das SDK enthält ein OpenAPI Coverage Analyzer Tool zur Analyse der API-Abdeckung:

php tools/OpenApiCoverageAnalyzer.php

Dokumentation: docs/OpenApiCoverageAnalyzer.md

📄 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert.

💖 Unterstützung

Wenn Ihnen dieses Projekt gefällt und es Ihnen bei Ihrer Arbeit hilft, würde ich mich sehr über eine Spende freuen!

GitHub Sponsors PayPal

👤 Autor

Daniel Jörg Schuppelius