Zum Inhalt springen

Odoo Payroll Schweiz: Bugs und fehlende Features

Schweizer Payroll mit Odoo ist gut, aber leider nicht fehlerfrei. In diesem Beitrag zeige ich dir, auf welche Bugs und fehlenden Standard-Features du dich in einem Schweizer Payroll-Projekt vorbereiten solltest, damit dich beim Testen und Go-Live keine bösen Überraschungen treffen.
5. April 2026 durch
Odoo Payroll Schweiz: Bugs und fehlende Features
Nathanael Lee
| Noch keine Kommentare

Ich habe im Q1 2026 ein grosses Schweizer Payroll Projekt umgesetzt. Dabei bin ich nicht nur auf firmenspezifische Anforderungen gestossen, sondern auch auf mehrere Bugs in der Schweizer Odoo Payroll Lokalisation, plus einige fehlende Features, die im Standard schlicht nicht vorhanden waren.

Nachfolgend findest du eine Zusammenfassung davon und wie ich die jeweiligen Probleme gelöst habe.

Diese Bugs habe ich in Odoo Payroll für die Schweiz gefunden:

(1) Quellensteuer im Jahresmodell mit 13. Monatslohn

Der 13. Monatslohn muss in der Berechnung vom Quellensteuer-Satz und der Quellensteuer selber mit einbezogen werden. Odoo macht dies im Standard erst bei der Auszahlung vom 13. Monatslohn (normalerweise im Dezember). Das führt zu einer sehr hohen Quellensteuer im Dezember, während die vorhergehenden Monate tiefer sind. Das führt zu vielen Unklarheiten und Problemen bei den Mitarbeitern.

In der Praxis sollte der satzbestimmende Lohn bereits ab Januar sauber auf das Jahr hochgerechnet werden. 

Die Lösung: Anpassung der Quellensteuer-Lohnregeln (Salary Rules / Lohnarten), damit sie den 13. Monatslohn anteilig ab dem 1. Monat im Jahr berechnen. 

Die Lohnregeln müssen auch im Cronjob "Update Payroll Data" aktualisiert werden, da sonst die Anpassungen wieder vom Odoo Standard überschrieben werden.

Screenshot Cron Job Methode Overwrite

(2) LPP "nicht versichert" funktioniert nicht beim Prozentmodell

Wenn ein Mitarbeiter auf der LPP-Seite (Pensionskasse) als "nicht versichert" markiert war, wurde diese Logik im Standard nicht in allen Konstellationen korrekt berücksichtigt, sobald die LPP in Prozent angegeben war.

In der Praxis betrifft das vor allem Mitarbeiter mit längeren Krankheitsfällen. Nach einer bestimmten Zeit (oft 3 Monate) sind solche Mitarbeiter von den Pensionskassen-Beiträgen entbunden.

Die Lösung: Anpassung der entsprechenden Lohnregeln in einem Custom-Modul und Laden der Anpassungen im Update Payroll Cronjob, damit sie nicht vom Odoo Standard überschrieben werden. 

Screenshot LPP not insured fix

(3) Arbeitgeberkosten LPP erscheinen im Prozentmodell nicht korrekt

Ich hatte auch ein Problem bei der Darstellung der LPP-Arbeitgeberkosten im Employee Cost Dashboard. Sobald die LPP im Prozentmodell lief, war die Arbeitgeberseite im Standard nicht sauber sichtbar.

Die Lösung: Die Lohnregel mit einem Overwrite für die Arbeitgeberkosten markieren.

Screenshot LPP Employer Cost Fix

(4) Fake zukünftige LPP-Gehaltsmutationen

Odoo generierte in bestimmten Fällen Gehaltsänderungs-Mutationen für die Pensionskasse, obwohl gar keine Gehaltsänderung vorlag.

Die Lösung: Overwrite der _compute_mutations()-Methode, die die falschen Mutationen wieder löscht.

Screenshot LPP Mutations Fix

(5) Vorzeichenfehler beim FCF-Arbeitgeberbeitrag

Es gab ein falsches Vorzeichen beim Arbeitgeberbeitrag der Familienausgleichskasse. Solche Fehler sind besonders schwierig, weil er nicht offensichtlich ist. Odoo rechnet einfach mit dem falschen Vorzeichen weiter.

Das Resultat war ein falsches Total in den Arbeitgeberkosten. 

Die Lösung: Korrektur der Lohnregel.

Screenshot Correct FCF


Die fehlenden Features, die ich zusätzlich bauen musste

(1) LAAC mit mehr als zwei Lösungen

Im Standard ist die zusätzliche Unfallversicherung zu stark eingeschränkt. Man kann zwar beliebig viele Pläne hinzufügen, Odoo zieht aber nur die ersten beiden bei der Berechnung mit ein. In meinem Projekt brauchte ich vier LAAC-Lösungen.

Die Lösung: Zusätzliche Lohnregeln für die Abbildung der zusätzlichen Unfall-Zusatzversicherungen. An dieser Stelle hat auch der verantwortliche Odoo Entwickler sehr weitergeholfen, da er mir den Pull-Request im Odoo Enterprise Repository gesendet hat. Im PR ist die Erweiterung auf mehrere LAAC Pläne bereits geplant. 

(2) Granulare LPP-Abbildung für COPRE

Ich musste die Pensionskasse deutlich granularer abbilden, als es der Standard erlaubt. Konkret brauchte ich getrennte Lohnarten für COPRE Epargne, COPRE Risques und administrative Gebühren, jeweils auf Arbeitnehmer- und Arbeitgeberseite.

Out of the box erlaubt Odoo nur eine Pensionskasse. 

Screenshot only one LPP

(3) Standardlohnarten für reale Korrekturfälle fehlen

Ich musste zusätzliche Lohnarten für reale Korrekturfälle anlegen, zum Beispiel für Krankentaggeld-Zahlungen, Third Party Corrections, LPP-Refund-Transitions sowie Rückzahlungen oder Nachzahlungen von Familien- und Ausbildungszulagen durch die FCF.

Das ist kein einzelner Bug. Es ist eine Standardlücke. Odoo liefert den Kern der Schweizer Payroll, aber nicht jede operative Lohnart, die du in einer echten Migration aus einer alten Lohnsoftware brauchst. Spätestens bei Übergangskorrekturen und zeitversetzten Versicherungsfällen musst du damit rechnen, selber zusätzliche Lohnarten aufzubauen.

(4) Das Standard-PDF für die Lohnabrechnung ist nicht wirklich gut

Der Standard-Payslip war für das Projekt nicht gut genug. Das betraf nicht nur das dürftige Layout, sondern auch die fehlende fachliche Flexibilität auf dem PDF. Ich brauchte unter anderem eigene Payroll-Beschriftungen pro Lohnart, die Zusammenfassung von Kinder- und Ausbildungszulagen auf eine Linie, die Zusammenfassung von Arbeitgeber-Social-Reimbursements sowie die Möglichkeit, den Grundlohn auf dem PDF in zwei separate Linien aufzuteilen, ohne die Payroll-Berechnung zu verändern.

Zusätzlich brauchte ich eine frei pflegbare Notiz pro Vertragsversion und ein saubereres französisches Layout. Kurz: Odoo kann Payslips drucken, aber der Standardbericht ist für anspruchsvollere Schweizer Rollouts oft zu wenig flexibel und zu wenig schön.

(5) Kein verschlüsselter Versand von Lohnabrechnungen out of the box

Ein weiteres Problem war der Versand der Lohnabrechnungen. Gewünscht waren passwortgeschützte PDF-Dateien pro Mitarbeiter, mit einem individuellen Passwort auf dem Employee Record. Das ist im Standard nicht vorhanden.

Odoo kann Payslips per E-Mail versenden, aber nicht als per-employee verschlüsseltes PDF mit sauberem Mail-Workflow. Für sensible Payroll-Dokumente ist das ein Problem.

(6) Payroll Accounting ist zu grob für ein auditnahes Setup

Die Lohnbuchhaltung war ein weiterer Punkt, bei dem der Standard nicht tief genug war. Die Standardkontierung und die vorhandenen Lohnarten waren zu grob, wenn man Arbeitgeberanteile, Clearing Accounts und Aufwandskonten wirklich sauber für Revision und interne Analyse trennen will.

Das heisst nicht, dass Odoo Payroll Accounting das nicht kann. Es heisst aber sehr wohl, dass du bei anspruchsvolleren Schweizer Setups zusätzliche Konten, zusätzliche Salary Rules und ein sauberes Mapping einplanen musst. 

(7) Offizielle Payroll-Datenupdates überschreiben lokale Fixes wieder

Das ist ein technischer Punkt, den viele unterschätzen. Die Schweizer Payroll-Daten von Odoo werden durch offizielle Updates neu geladen. Wenn du einen Standardfehler in einer Salary Rule patchst, ist dieser Fix ohne weitere Massnahmen beim nächsten Payroll-Datenupdate potenziell wieder weg.

Im Projekt musste ich deshalb die Fixes so aufbauen, dass sie nach offiziellen CH-Updates automatisch wieder angewendet werden. 


Nicht alles ist ein Odoo Bug

Das ist mir wichtig. Nicht jede zusätzliche Salary Rule in einem Projekt ist ein Odoo Problem. Dinge wie Abzüge für Parkplatzgebühren, das genaue Verbuchen auf firmenspezifische Konten oder die Entscheidung, Arbeitgeberbeiträge intern auf eine bestimmte Weise weiterzuverrechnen, sind Business-Regeln des Unternehmens, nicht Produktfehler von Odoo.

Wenn du Fragen zu Odoo Payroll Schweiz oder Swissdec hast, kontaktiere mich gerne oder schreibe einen Kommentar.

Nate

Danke für die Registrierung!



Anmelden , um einen Kommentar zu hinterlassen