Konten (Accounts)
Zweck
Account modelliert das Buchhaltungskonto im Sinne des Kontenrahmens — typischerweise SKR03. Pro Konto pflegen Sie accountNumber, displayName, postingType (revenue / expense), Verknuepfungen zu Klasse, Steuersatz und Steuerkategorie.
Wenn ein Anwender nach „Konten" sucht, fuehren Sie ihn hierhin (/accounts). Für externe Bank-/PayPal-Anbindung verweisen Sie auf Bankkonten und Zuweisungen.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_Account, Account | Liste/Details aufrufbar | — |
create/update/delete | Account | Pflegen | APP_SPEAMCORE_CREATE/UPDATE/DELETE_ACCOUNT |
view | AccountEntry | Sub-Liste für Konto-Einträge | APP_SPEAMCORE_VIEW_ACCOUNT_ENTRY |
Schritt-für-Schritt-Anleitung
Konto anlegen
- Konten (
/accounts) → + Neu. accountNumberunddisplayNamepflegen (z. B. „1200" und „Bank").postingTypewählen —revenue(Erloeskonto) oderexpense(Aufwandskonto).- ChartOfAccountClass, TaxRate und TaxCategory zuordnen.
isRelevantauftruesetzen, damit das Konto in Auswahllisten erscheint.
Konto-Einträge einsehen
/account-entries zeigt die AccountEntry-Sub-Liste pro Konto — Buchungen und Belegzuordnungen.

Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|
accountNumber | ja | String | Konto-Nummer (z. B. „1200"). Muss eindeutig sein. | — |
displayName | ja | String | Anzeigename in Belegen, Reports und Auswahllisten. | — |
postingType | nein | revenue/expense | Bestimmt, ob das Konto für Erloese oder Aufwand verwendet wird. Filtert in Beleg-Selects. | — |
isRelevant | nein | Boolean (Switch) | true: erscheint in Auswahllisten. false: ausgeblendet. | — |
description | nein | TEXT | Erlaeuterung des Kontos. | — |
chartOfAccountClassId | nein | UUID | Klassifizierung im Kontenrahmen. | view:ChartOfAccountClass. |
taxRateId | nein | UUID | Standard-Steuersatz für Buchungen auf dieses Konto. | view:TaxRate. |
taxCategoryId | nein | UUID | Steuerkategorie für Reports und Steuererklaerungen. | view:TaxCategory. |
reverseChargeType | nein | String, nullable | Markiert das Konto als Reverse-Charge-Konto (§13b UStG). Aktuell unterstützter Wert: foreign_service (sonstige Leistung eines ausländischen Unternehmers). null = kein Reverse-Charge. | siehe §13b-Abschnitt |
Steuerschuldumkehr nach §13b UStG
Bei der Steuerschuldumkehr (Reverse-Charge, §13b UStG) schuldet nicht der leistende, sondern der empfangende Unternehmer die Umsatzsteuer — typisch bei sonstigen Leistungen ausländischer Unternehmer. Ein Aufwandskonto wird dafür über reverseChargeType = foreign_service als §13b-Konto markiert.
Für die Gegenbuchung legt SpeamCore zwei Steuerkonten automatisch an (Seed-Migration, abgeleitet von den Schwesterkonten 1576/1776):
| Konto | Bezeichnung |
|---|---|
| 1577 | Abziehbare Vorsteuer nach §13b UStG 19% (Input) |
| 1787 | Umsatzsteuer nach §13b UStG 19% (Output) |
Beim Buchen einer Eingangsrechnung auf ein §13b-Konto werden Vorsteuer (1577) und Umsatzsteuer (1787) gegeneinander gebucht, sodass sie sich neutralisieren — als Verbindlichkeit bleibt nur der Nettobetrag. Wie das in der Konten-Buchung erscheint, siehe Konten-Buchungen. Welches §13b-Aufwandskonto je Lieferant vorbelegt wird, steuert das Feld defaultExpenseAccountId am Lieferanten.
DATEV-Kontenabgleich-Wizard (seit Juni 2026)
Über Aus DATEV abgleichen lässt sich der Kontenrahmen mit einer DATEV-SUSA (Summen- und Saldenliste, CSV) abgleichen und vervollständigen — in einem zweistufigen Wizard:
- Vorschau (
POST /accounts/datev-chart/preview) — die SUSA wird geparst und gegen den vorhandenen Kontenrahmen gehalten. Angezeigt wird, welche Konten vorhanden, welche fehlen und welche Personenkonten (≥ 10000, Debitoren/Kreditoren) nur gemeldet — letztere werden nicht angelegt. Schreibt nichts. - Übernehmen (
POST /accounts/datev-chart/apply) — legt die fehlenden GL-Konten an (idempotent, wiederholbar) und führt anschließend direkt in die Zahlungskonten-Verknüpfung über (Bilanz-/Verrechnungskonten den Zahlungskonten zuordnen).
Wiederverwendbare Konzepte
- Buchhaltungskonten — Querschnitts-Konzept zu allen Konten-Modellen.
- Berechtigungen verstehen (CASL)
Verknuepfungen zu anderen Modulen
- Verkaufsbelege —
SalesDocument.revenueAccountId. - Bestellbelege —
PurchaseDocument.expenseAccountId. - Produkte —
Product.accountIdundProduct.expenseAccountId. - Niederlassungen — primary/secondary Bank-Account-Verknuepfung.
- AccountEntry — Sub-Liste pro Konto.
- TaxRate, TaxCategory, ChartOfAccountClass — Stammdaten.
- Setup-Wizard Schritt 4 —
Standards (DE) ladenimportiert ~250 SKR03-Konten als Account-Sätze.
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
| Konto erscheint nicht in Beleg-Auswahl | isRelevant = false oder postingType passt nicht zum Beleg-Kontext (z. B. Verkaufsbeleg sucht revenue). |
Doppelte accountNumber | Validierungsfehler beim Speichern — eindeutige Nummer wählen. |
| Steuersatz wird nicht übernommen | taxRateId nicht gesetzt — manuell pflegen oder im Setup-Wizard SKR03-Standard laden. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/accounts | Liste | view Account |
POST | /api/accounts | Anlegen | create Account |
GET | /api/accounts/:id | Detail | view Account |
PATCH | /api/accounts/:id | Ändern | update Account |
DELETE | /api/accounts/:id | Soft-Delete | delete Account |
POST | /api/accounts/datev-chart/preview | DATEV-SUSA abgleichen (Vorschau) | view Account |
POST | /api/accounts/datev-chart/apply | fehlende Konten anlegen | create Account |
GET | /api/account-entries | Eintrag-Liste pro Konto | view AccountEntry |
Versionshinweise
- 2026-06-12: DATEV-Kontenabgleich-Wizard (
/accounts/datev-chart/preview+/apply) dokumentiert — SUSA-Abgleich, fehlende GL-Konten anlegen, Übergang zur Zahlungskonten-Verknüpfung. Verifiziert anaccount.router.ts,datevChartReconciliation.service.ts. - 2026-06-11: Feld
reverseChargeType(§13b-Steuerschuldumkehr, Wertforeign_service) und die geseedeten §13b-Steuerkonten 1577/1787 dokumentiert. Verifiziert anaccount.model.tsund20260610170002-seed-section13b-vat-accounts-and-flags.js. - 2026-04-29: Initiale Veroeffentlichung.