
LedgerLou Config
Die zentrale Stelle für API-Keys, Tenant-Stammdaten, Nutzerzugriffe und Steuercodes. Hier werden Berechtigungen vergeben, Einstellungen gepflegt und die Konfigurationsbasis für REST und MCP sauber verwaltet.
API ReferenceWas das Config-Modul abdeckt
API Key-Lifecycle — API Keys erstellen, auflisten und widerrufen. Jeder Key erhält beim Anlegen eine individuelle Scope-Kombination aus den 5 Modulen (journal, bank, perioden, auswertungen, config). Der Key-Wert wird nur einmalig angezeigt und dann gehasht gespeichert.
Nutzerverwaltung — Owner können weitere Nutzer per E-Mail einladen und ihnen eine Rolle (member oder admin) zuweisen. Bestehende Nutzer lassen sich entfernen. Alle Aktionen werden im Audit-Log festgehalten.
Tenant-Stammdaten — Firmenname, Adresse, Steuernummer, Umsatzsteuer-ID und Rechtsform können hier gepflegt werden. Schreibzugriffe auf Tenant-Stammdaten sind nur per Browser-Session für Owner zugelassen, nicht per API-Key.
Steuercodes — Tenant-spezifische Steuerschlüssel für leichte VAT-Automatik werden ebenfalls als Config-Ressource verwaltet. Lesen läuft über config:read, Anlegen und Ändern über config:write.
OAuth-Clients — Für Drittanbieter-Integrationen können OAuth 2.0 Clients registriert werden. Dies ist ein fortgeschrittenes Feature für Entwickler und Partner.
Zugangswege
Steuercodes
Steuercodes sind die leichte Konfigurationsschicht zwischen rohen Journalzeilen und alltagstauglicher Umsatzsteuer-Logik.
Sie erlauben es, Buchungszeilen mit tax_code zu versehen, während LedgerLou die nötigen Steuerzeilen deterministisch ergänzt.
Was ein Steuercode definiert
- den Schlüssel selbst, z. B.
VSt19oderVSt-igE19 - den Prozentsatz
- das Vorsteuer- oder Umsatzsteuerkonto
- optional ein Gegenkonto für Selbstveranlagung / Reverse Charge
Beim Buchen mit tax_code wird die Journalzeile vor Validierung und Pairing erweitert:
- Standardfall: Brutto wird in Netto + Steuer auf derselben Seite gesplittet
- Selbstveranlagung: Ursprungszeile bleibt netto, zusätzlich wird ein balanciertes Steuerpaar erzeugt
Unterstützte Fälle
| Fall | Unterstützt | Verhalten |
|---|---|---|
VSt19, VSt7, USt19, USt7 | Ja | Standard-Split auf derselben Buchungsseite |
igE / §13b mit self_assess_account | Ja | Nettozeile bleibt stehen, balanciertes Steuerpaar wird ergänzt |
Manuelle Steuerzeilen + tax_code im selben Booking | Nein | Request wird abgelehnt |
FX + self_assess | Nein | Request wird abgelehnt |
Beispiele
Einkauf mit VSt19
POST /v1/bookings
{
"booking_date": "2026-04-09",
"description": "Bürobedarf",
"lines": [
{ "account_number": "6815", "account_name": "Bürobedarf", "debit": 119, "credit": 0, "tax_code": "VSt19" },
{ "account_number": "1800", "account_name": "Bank", "debit": 0, "credit": 119 }
]
}
Ergebnis im Journal:
6815 -> 1800über100.001406 -> 1800über19.00
Beide Zeilen tragen tax_code = "VST19" im Journal.
Innergemeinschaftlicher Erwerb mit VSt-igE19
POST /v1/bookings
{
"booking_date": "2026-04-09",
"description": "Innergemeinschaftlicher Erwerb",
"lines": [
{ "account_number": "5200", "account_name": "Wareneingang", "debit": 100, "credit": 0, "tax_code": "VSt-igE19" },
{ "account_number": "1800", "account_name": "Bank", "debit": 0, "credit": 100 }
]
}
Ergebnis im Journal:
5200 -> 1800über100.001404 -> 3804über19.00
Was bewusst getrennt bleibt
- Der Journal-Request bleibt weiterhin explizit:
tax_codeist optional, rohe manuelle Steuerzeilen sind weiterhin möglich - DATEV BU-Schlüssel oder UStVA-Ableitung werden nicht automatisch aus dem Code erzeugt
Scopes
Config-Endpunkte haben keine review-Aktion — nur Lesen und Schreiben: