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.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung |
|---|---|---|
view | FE_PayrollRun, PayrollRun | Lohnlauf-Seite aufrufbar |
create | PayrollRun | Forecast erstellen / neu berechnen |
update | PayrollRun | Festschreiben, Zurücknehmen, Auto-Match, Lohn-Tx ausblenden |
delete | PayrollRun | Lohnlauf löschen |
view/update | PayrollRunLiability | Verbindlichkeiten abgleichen (Match/Unmatch) |
Status-Ablauf
| Status | Label (UI) | Bedeutung |
|---|---|---|
forecast | Geplant | hochgerechnet, noch nicht gebucht |
committed | Festgeschrieben | gebucht, Verbindlichkeiten offen |
reconciling | — | Abgleich mit Bank-Zahlungen läuft |
closed | — | abgeschlossen |
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
| Tabelle | Inhalt |
|---|---|
| Verbindlichkeiten | Posten · Konto · Fällig · Betrag · Status (open/matched/paid) · Abgleich-Button |
| Je Krankenkasse | Krankenkasse · 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) |
| Mitarbeiter | Mitarbeiter · Krankenkasse · Brutto · Lohnsteuer · AN-SV · Auszahlung |
Aktionen
| Button | Wirkung | Endpoint |
|---|---|---|
| Forecast erstellen / Neu berechnen | Rechnet den Monat (neu) hoch | POST /payroll-runs/forecast |
| Festschreiben | Bucht + erzeugt Verbindlichkeiten (forecast → committed) | POST /payroll-runs/:id/commit |
| Zurücknehmen | Macht Festschreibung rückgängig, löscht Buchungen (committed → forecast) | POST /payroll-runs/:id/reopen |
| Automatisch zuordnen | Bulk-Match offener Verbindlichkeiten ↔ Bank-Tx | POST /payroll-runs/:id/auto-match |
| Lohn-Tx ausblenden | Klassifiziert Lohn-Bank-Transaktionen, blendet sie aus der Standard-Buchhaltung aus | POST /payroll-runs/classify-transactions |
Festschreiben — was gebucht wird
Beim Festschreiben erzeugt SpeamCore die Buchungssätze nach SKR03 und die zugehörigen Verbindlichkeiten:
| Konto | Bezeichnung | Soll/Haben |
|---|---|---|
| 4100 | Löhne und Gehälter (Personalaufwand) | Soll |
| 4130 | Gesetzliche soziale Aufwendungen (AG-SV) | Soll |
| 4138 | Beiträge Berufsgenossenschaft | Soll |
| 4170 | Vermögenswirksame Leistungen (AG-Anteil) | Soll |
| 8611 | Unentgeltliche Wertabgabe Kfz-Nutzung (geldwerter Vorteil) | Soll |
| 1740 | Verbindlichkeit Lohn und Gehalt (Netto-Sammelüberweisung) | Haben |
| 1741 | Verbindlichkeit Lohn- und Kirchensteuer (Finanzamt) | Haben |
| 1742 | Verbindlichkeit soziale Sicherheit (Krankenkassen + BG) | Haben |
| 1790 | Sonstige Verbindlichkeiten (VWL ans Anlageinstitut) | Haben |
| 1776 | Umsatzsteuer 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:
- 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. - Passende Transaktion wählen (oder per Freitextsuche finden) → Match (
POST …/match); Status wirdmatched. - Falsche Zuordnung lösen → Unmatch (
POST …/unmatch); Status wird wiederopen. - 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):
| Feld | Bedeutung |
|---|---|
| Mitarbeiter | Empfänger. |
| Betrag (brutto) | Höhe des Einmalbezugs. |
| Art | bonus (Bonus), provision, ega (Erfolgs-/Ergebnisbeteiligung), vacationPay (Urlaubsgeld), christmasBonus (Weihnachtsgeld), other. |
| SV-pflichtig | Schalter, ob der Bezug sozialversicherungspflichtig ist. |
| Notiz | Freitext. |
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:
| Spalte | Quelle |
|---|---|
| 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 ` |
| Status | zugeordnet (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.
Datenmodell (Auszug)
PayrollRun— Lohnlauf proyear/month(+ optionalbranchId); 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
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/payroll-runs | Liste der Lohnläufe | view PayrollRun |
POST | /api/payroll-runs/forecast | Forecast für Monat berechnen | create PayrollRun |
GET | /api/payroll-runs/summary | Aufbereitete Übersicht | view PayrollRun |
POST | /api/payroll-runs/classify-transactions | Lohn-Tx ausblenden | update PayrollRun |
POST | /api/payroll-runs/:id/commit | Festschreiben | update PayrollRun |
POST | /api/payroll-runs/:id/reopen | Festschreibung zurücknehmen | update PayrollRun |
POST | /api/payroll-runs/:id/auto-match | Verbindlichkeiten bulk-abgleichen | update PayrollRun |
GET | /api/payroll-run-liabilities/:id/suggestions | Match-Vorschläge | view PayrollRunLiability |
POST | /api/payroll-run-liabilities/:id/match | Verbindlichkeit ↔ Tx zuordnen | update PayrollRunLiability |
POST | /api/payroll-run-liabilities/:id/unmatch | Zuordnung lösen | update PayrollRunLiability |
POST | /api/sage-payroll-imports/import | SAGE-Export importieren (CSV/ZIP) | create SagePayrollImport |
POST | /api/sage-payroll-imports/sepa-preview | SEPA-Datei aufschlüsseln (ohne Speichern) | view SagePayrollImport |
GET | /api/sage-payroll-imports/:id/reconciliation | SOLL/IST-Abgleich-Zeilen | view SagePayrollImport |
POST | /api/sage-payroll-imports/:id/match · /unmatch | Zuordnung setzen/lösen | update SagePayrollImport |
POST | /api/sage-payroll-imports/:id/auto-match | Auto-Abgleich (exakte Beträge) | update SagePayrollImport |
GET | /api/employee-one-time-payments | Einmalbezüge je Monat | view EmployeeOneTimePayment |
Verknüpfungen zu anderen Modulen
- Krankenkassen — Sätze (Zusatzbeitrag, U1/U2) für die Berechnung.
- Transaktions-Cockpit — Bank-Zahlungen, Lohn-Tx ausblenden.
- Mitarbeiter — Lohndaten je Mitarbeiter.
- Buchhaltungskonten — die SKR03-Konten der Buchung.
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 ansagePayrollImport.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.