Zum Hauptinhalt springen

Lohnlauf (PayrollRun)

Zweck

Der Lohnlauf (/payroll) ist die monatliche Lohn-Übersicht der Buchhaltung: Er rechnet die erwarteten Lohnkosten und Zahlungsströme eines Monats hoch (Forecast), schreibt sie auf Knopfdruck als SKR03-Buchung fest (inkl. der entstehenden Verbindlichkeiten), berücksichtigt U1/U2-Erstattungen und lässt die tatsächlichen Bank-Zahlungen über das Cockpit abgleichen.

SpeamCore **rechnet** den Lohnlauf hoch und **bucht** die Zahlungsströme — es ersetzt **keine** zertifizierte Lohnabrechnungs-Software. Beträge stammen aus den Mitarbeiter-Stammdaten und Sätzen; die rechtsverbindliche Abrechnung/Meldung bleibt beim Lohnbüro/Steuerberater.

Voraussetzungen

- Berechtigung `view:FE_PayrollRun` und `view:PayrollRun`. - Für Forecast `create:PayrollRun`; für Festschreiben/Zurücknehmen/Auto-Match `update:PayrollRun`. - Für den Verbindlichkeits-Abgleich `view`/`update:PayrollRunLiability`. - Gepflegte Mitarbeiter mit Lohndaten und [Krankenkassen](/health-insurance-funds) mit Sätzen.

Berechtigungen (CASL)

ActionSubjectWirkung
viewFE_PayrollRun, PayrollRunLohnlauf-Seite aufrufbar
createPayrollRunForecast erstellen / neu berechnen
updatePayrollRunFestschreiben, Zurücknehmen, Auto-Match, Lohn-Tx ausblenden
deletePayrollRunLohnlauf löschen
view/updatePayrollRunLiabilityVerbindlichkeiten abgleichen (Match/Unmatch)

Status-Ablauf

StatusLabel (UI)Bedeutung
forecastGeplanthochgerechnet, noch nicht gebucht
committedFestgeschriebengebucht, Verbindlichkeiten offen
reconcilingAbgleich mit Bank-Zahlungen läuft
closedabgeschlossen

Die Lohnlauf-Übersicht

Oben wählen Sie den Monat. Die Seite zeigt dann:

Zahlungsströme

Karten mit den erwarteten Abflüssen des Monats:

  • → Mitarbeiter (Netto-Sammelüberweisung)
  • → Finanzamt (Lohnsteuer + Soli + Kirchensteuer)
  • → Krankenkassen (Sozialversicherung netto) — inkl. U1/U2-Erstattungsanzeige
  • → Berufsgenossenschaft
  • → VWL (Anlageinstitut) — falls vorhanden

Tabellen

TabelleInhalt
VerbindlichkeitenPosten · Konto · Fällig · Betrag · Status (open/matched/paid) · Abgleich-Button
Je KrankenkasseKrankenkasse · MA-Zahl · AN-SV · AG-SV · Umlagen · Gesamt
U1-Erstattung (Krankheit)Krankenkasse · Krank-Tage · fortgez. Entgelt · Satz % · Erstattung
U2-Erstattung (Mutterschaft)analog U1 (falls vorhanden)
MitarbeiterMitarbeiter · Krankenkasse · Brutto · Lohnsteuer · AN-SV · Auszahlung

Aktionen

ButtonWirkungEndpoint
Forecast erstellen / Neu berechnenRechnet den Monat (neu) hochPOST /payroll-runs/forecast
FestschreibenBucht + erzeugt Verbindlichkeiten (forecast → committed)POST /payroll-runs/:id/commit
ZurücknehmenMacht Festschreibung rückgängig, löscht Buchungen (committed → forecast)POST /payroll-runs/:id/reopen
Automatisch zuordnenBulk-Match offener Verbindlichkeiten ↔ Bank-TxPOST /payroll-runs/:id/auto-match
Lohn-Tx ausblendenKlassifiziert Lohn-Bank-Transaktionen, blendet sie aus der Standard-Buchhaltung ausPOST /payroll-runs/classify-transactions

Festschreiben — was gebucht wird

Beim Festschreiben erzeugt SpeamCore die Buchungssätze nach SKR03 und die zugehörigen Verbindlichkeiten:

KontoBezeichnungSoll/Haben
4100Löhne und Gehälter (Personalaufwand)Soll
4130Gesetzliche soziale Aufwendungen (AG-SV)Soll
4138Beiträge BerufsgenossenschaftSoll
4170Vermögenswirksame Leistungen (AG-Anteil)Soll
8611Unentgeltliche Wertabgabe Kfz-Nutzung (geldwerter Vorteil)Soll
1740Verbindlichkeit Lohn und Gehalt (Netto-Sammelüberweisung)Haben
1741Verbindlichkeit Lohn- und Kirchensteuer (Finanzamt)Haben
1742Verbindlichkeit soziale Sicherheit (Krankenkassen + BG)Haben
1790Sonstige Verbindlichkeiten (VWL ans Anlageinstitut)Haben
1776Umsatzsteuer 19 % (auf den geldwerten Vorteil)Haben

Pro Zahlungsstrom entsteht eine Verbindlichkeit (PayrollRunLiability) mit Fälligkeit und Status open. Die U1/U2-Erstattungen werden als Forderung (direction = receivable) gegen die jeweilige Kasse gegengerechnet — sie mindern die SV-Zahlung.

Cockpit-Abgleich (Bank-Tx ↔ Lohn-Verbindlichkeit)

Nach dem Festschreiben gleichen Sie die tatsächlichen Bank-Zahlungen gegen die Verbindlichkeiten ab:

  1. Abgleich an einer Verbindlichkeit öffnet ein Popover mit Vorschlägen (gescorte Bank-Transaktionen, GET /payroll-run-liabilities/:id/suggestions) — Score ≥ 70 grün, 50–69 gelb.
  2. Passende Transaktion wählen (oder per Freitextsuche finden) → Match (POST …/match); Status wird matched.
  3. Falsche Zuordnung lösen → Unmatch (POST …/unmatch); Status wird wieder open.
  4. Automatisch zuordnen macht das in einem Rutsch für alle offenen Posten.

Mit Lohn-Tx ausblenden werden Lohn-Transaktionen aus dem normalen Cockpit entfernt, damit die Buchhaltung sie nicht doppelt bearbeitet.

Einmalbezüge / sonstige Bezüge

Über das Panel Einmalbezüge / sonstige Bezüge erfassen Sie einmalige Zahlungen pro Mitarbeiter und Monat, die zusätzlich in den Forecast einfließen (EmployeeOneTimePayment):

FeldBedeutung
MitarbeiterEmpfänger.
Betrag (brutto)Höhe des Einmalbezugs.
Artbonus (Bonus), provision, ega (Erfolgs-/Ergebnisbeteiligung), vacationPay (Urlaubsgeld), christmasBonus (Weihnachtsgeld), other.
SV-pflichtigSchalter, ob der Bezug sozialversicherungspflichtig ist.
NotizFreitext.

SAGE-Abgleich (SOLL/IST)

SpeamCore rechnet den Lohnlauf hoch (Forecast = SpeamCore-SOLL). Mit dem SAGE-Abgleich stellen Sie das gegen die echte SAGE-Lohnbuchhaltung und die tatsächlichen Bank-Zahlungen — ein dreifacher SOLL/IST-Vergleich.

Import

Oben im Panel SAGE-Abgleich laden Sie den SAGE-Export hoch (POST /sage-payroll-imports/import, max. 25 MB):

  • SAGE-FiBu-Journal (CSV, Windows-1252, Semikolon-getrennt), oder
  • SAGE-Monats-ZIP (Journal-CSV + Lastschriften-PDF + optional SEPA-Datei pain.001).

Aus der ZIP werden einzelne Zahlungen je Empfänger (Kasse/Finanzamt/Mitarbeiter) extrahiert; bei reiner CSV wird pro Konto aggregiert. Ein Saldo-Badge zeigt „Saldo 0 ✓" (grün), wenn das Verrechnungskonto (1755) ausgeglichen ist — sonst rot. Der Import ist idempotent (Prüfsumme; ein Monat existiert nur einmal pro Mandant).

Die drei Spalten — SOLL / Forecast / IST

Die Abgleich-Tabelle „SOLL/IST — Verbindlichkeiten" stellt je Verbindlichkeit gegenüber:

SpalteQuelle
SOLL (SAGE)Betrag aus dem importierten SAGE-Journal.
Forecast (SpeamCore)der hochgerechnete Wert; farbiges Δ zeigt die Abweichung.
IST (Bank)die zugeordnete echte Bank-Transaktion (Betrag/Zweck/Datum).
Δgrün bei `
Statuszugeordnet (matched) / offen (open).

Konten-Zuordnung: 1740 Netto-Auszahlung, 1741 Lohn-/Kirchensteuer, 1742 Sozialversicherung, 1750 VWL.

Abgleichen

  • Zuordnen verknüpft eine Verbindlichkeit mit der erkannten Bank-Transaktion (POST /sage-payroll-imports/:id/match), Aufheben löst sie wieder.
  • Auto-Abgleich (POST …/auto-match) ordnet alle offenen Posten zu, bei denen der Betrag exakt passt (|Δ| < 0,01 €). Die Vorschläge sind gescort (exakter Betrag +60, ±2 % +45, Empfänger/Zweck +25, Datum nahe Periode +10 …).
  • SEPA-Vorschau (POST …/sepa-preview) schlüsselt eine SEPA-Zahlungsdatei (pain.001) auf, ohne sie zu speichern — nützlich, um Sammel-Verbindlichkeiten in Einzelzahlungen zu zerlegen.
Bestimmte Lohnkonten sind als **sensibel** markiert und nur mit erhöhter Berechtigung (`SensitiveAccount`) lesbar: **1750** (VWL), **1755** (Lohn-/Gehaltsverrechnung), **4124** (Geschäftsführergehälter), **4125** (Ehegattengehalt), **4190** (Aushilfslöhne). So sehen nicht alle Buchhalter individuelle Gehälter. Die U1/U2-Umlage- und Erstattungssätze einer [Krankenkasse](/health-insurance-funds) lassen sich per **KI-Bild-Import** aus einem Screenshot der Kassen-Mitteilung übernehmen (Claude-Vision, `POST /health-insurance-funds/rate-import/extract`) — mit Vorschau (alt → neu) vor dem Übernehmen.

Datenmodell (Auszug)

  • PayrollRun — Lohnlauf pro year/month (+ optional branchId); Summen (grossTotal, netTotal, wageTaxTotal, socialSecurityTotal, employerCostTotal), status, committedAt.
  • PayrollRunEmployee — Zeile pro Mitarbeiter: grossMonthly, wageTax, employeeSocialSecurity, employerSocialSecurity, employerLevies, bgMonthly, carBenefitMonthly (GWV), employerVwlMonthly/employeeVwlMonthly, netMonthly, healthInsuranceName.
  • PayrollRunLiability — Zahlungsstrom: kind (net/wageTax/socialSecurity/bg/u1Refund/u2Refund), direction, accountNumber (SKR03), amount, dueDate, status, matchedTransactionId.
  • SagePayrollImport — ein SAGE-Monatsimport: mandantNr, year/month (eindeutig), total, clearingBalance (Konto 1755, muss 0 sein), entryCount, sourceChecksum (Idempotenz).
  • SagePayrollEntry — Journal-Buchung: lohnartNr, text, amount, debitAccount/creditAccount, bookingDate, matchStatus.
  • SagePayrollPayment — Einzel-Zahlung aus der Lastschriftenliste: kind (employee/tax/socialSecurity), recipient, account, amount, iban, matchStatus.
  • EmployeeOneTimePayment — Einmalbezug: employeeId, year/month, amount, kind, svRelevant.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/payroll-runsListe der Lohnläufeview PayrollRun
POST/api/payroll-runs/forecastForecast für Monat berechnencreate PayrollRun
GET/api/payroll-runs/summaryAufbereitete Übersichtview PayrollRun
POST/api/payroll-runs/classify-transactionsLohn-Tx ausblendenupdate PayrollRun
POST/api/payroll-runs/:id/commitFestschreibenupdate PayrollRun
POST/api/payroll-runs/:id/reopenFestschreibung zurücknehmenupdate PayrollRun
POST/api/payroll-runs/:id/auto-matchVerbindlichkeiten bulk-abgleichenupdate PayrollRun
GET/api/payroll-run-liabilities/:id/suggestionsMatch-Vorschlägeview PayrollRunLiability
POST/api/payroll-run-liabilities/:id/matchVerbindlichkeit ↔ Tx zuordnenupdate PayrollRunLiability
POST/api/payroll-run-liabilities/:id/unmatchZuordnung lösenupdate PayrollRunLiability
POST/api/sage-payroll-imports/importSAGE-Export importieren (CSV/ZIP)create SagePayrollImport
POST/api/sage-payroll-imports/sepa-previewSEPA-Datei aufschlüsseln (ohne Speichern)view SagePayrollImport
GET/api/sage-payroll-imports/:id/reconciliationSOLL/IST-Abgleich-Zeilenview SagePayrollImport
POST/api/sage-payroll-imports/:id/match · /unmatchZuordnung setzen/lösenupdate SagePayrollImport
POST/api/sage-payroll-imports/:id/auto-matchAuto-Abgleich (exakte Beträge)update SagePayrollImport
GET/api/employee-one-time-paymentsEinmalbezüge je Monatview EmployeeOneTimePayment

Verknüpfungen zu anderen Modulen

Versionshinweise

  • 2026-06-09: SAGE-Abgleich (SOLL/IST) ergänzt — Import von SAGE-FiBu-Journal (CSV) bzw. Monats-ZIP (inkl. SEPA pain.001), dreifacher Vergleich SOLL (SAGE) / Forecast (SpeamCore) / IST (Bank) je Verbindlichkeit, Zuordnen + Auto-Abgleich (exakte Beträge), Saldo-Prüfung (Konto 1755). Neu: Einmalbezüge (EmployeeOneTimePayment), sensible Lohnkonten (1750/1755/4124/4125/4190), KI-Bild-Import der Kassensätze. Verifiziert an sagePayrollImport.router.ts, sagePayrollReconciliation.service.ts, sagePayroll*.model.ts, SagePayrollPanel.tsx, OneTimePaymentsPanel.tsx.
  • 2026-06-06: Initiale Veröffentlichung. Lohnlauf-Forecast, Festschreiben (SKR03-Buchung + Verbindlichkeiten), U1/U2-Erstattung, VWL + geldwerter Vorteil (Kfz), Cockpit-Abgleich (Match/Auto-Match), Lohn-Tx ausblenden. Verifiziert an payrollRun.model.ts, payrollRunCommit.service.ts, payrollRun.router.ts, payrollRunLiability.router.ts, PayrollRunOverviewPage.tsx.