Moins d'endroits pour configurer la même chose, moins de surprises le jour de la paie
La Paie est l'une des applications les plus remaniées d'Odoo 20, et l'essentiel du changement se trouve dans les fondations. La liste distincte des types d'entrée de fiche de paie disparaît : une règle salariale peut désormais être elle-même une entrée. Le contrat s'appelle la fiche employé (Employee Record) et porte un état de révision qui peut bloquer une fiche de paie jusqu'à ce que quelqu'un la regarde. Les avertissements du tableau de bord sont des enregistrements configurables. Si vous gérez la paie, cela change la façon de configurer les allocations et de vérifier un cycle de paie avant de le valider.
Cet article couvre deux sections de notre série Odoo 20 : la refonte de la paie et les nouveaux packages par pays. Nous avons parcouru la refonte sur une société américaine et les déclarations belges sur une société belge, sur la version préliminaire. Les packages du Golfe et le connecteur GOSI saoudien sont décrits à partir du guide et du code source 20.0.
Observé sur la version préliminaire d'Odoo 20.0 Enterprise du 23 septembre 2026. Les noms, menus et disponibilités peuvent changer avant la version finale ; nous mettrons cette page à jour le cas échéant.
Une seule liste de règles, et une règle peut être sa propre entrée
Dans Odoo 19, un gestionnaire de paie tenait deux listes : les types d'entrée, et les règles salariales qui les lisent. Une entrée pouvait exister sans qu'aucune règle ne la consomme, et personne ne s'en rendait compte avant qu'une fiche de paie ne sorte trop basse. Odoo 20 fusionne les deux sous Paie > Configuration > Salaire > Règles, une page intitulée Salary Rules qui regroupe toutes les règles de toutes les structures de paie.

Pour faire d'une règle une entrée, réglez Amount Type sur Input Value (avec Based on : Input Value dans le bloc de condition) et cochez Inputtable on Employee, Payslip ou les deux. Employee stocke la valeur une fois sur la fiche employé, pour une allocation récurrente. Payslip signifie que vous la saisissez sur chaque fiche de paie, pour une prime ou une déduction ponctuelle. À l'écran, « marquer une règle comme entrée » se résume à ces deux cases.

Un onglet Input Options contient la section de la fiche de paie, un interrupteur Selected by Default, une valeur par défaut et un suffixe tel que « USD / month ». Les sections se gèrent sous Configuration > Salaire > Salary Input Sections, un menu qui ouvre une page intitulée Salary Rule Sections. Sur la démo, nous avons ajouté de cette façon une Remote Work Allowance et une Mobile Phone Allowance à la structure United States: Regular Pay.

Le contrat devient la fiche employé, avec des propriétés de paie
Ce qu'Odoo 19 avait introduit comme « Version » du contrat s'appelle Employee Record partout dans la Paie d'Odoo 20. Chaque fiche porte le salaire, le salaire horaire (désormais à quatre décimales), le type de structure, le type d'employé, les informations de départ et un bloc de propriétés de paie. Les fiches peuvent être archivées avec leurs fiches de paie.

Une correction au guide. Il décrit des propriétés Many2one et de sélection avec un modèle dédié pour les valeurs. Sur la version préliminaire, le bloc de propriétés est généré à partir des règles cochées Inputtable on Employee, et chaque propriété est un nombre avec un suffixe : nos deux allocations apparaissent à 75 et 30 USD / month. Rien à l'écran ne permet de définir une commission paritaire ou une catégorie de voiture comme liste déroulante. Considérez cette partie du guide comme une feuille de route.
Seconde correction : le guide place Employees, Employee Records et Payslip Adjustments sous Paie > Employés. En mode normal, seul Employees s'y trouve ; les deux autres exigent le mode développeur. Les gestionnaires de paie travaillent depuis l'onglet Payroll de la fiche employé.

États de révision, avertissements configurables et fiches de paie bloquées
C'est la partie qu'un gestionnaire de paie ressent en premier. Chaque employé a un état de révision, Reviewed, To Review ou Anomaly, affiché en badge sur la fiche. Le guide affirme que toute modification suivie le fait passer à To Review. Sur cette version, cela n'arrive que si la personne qui modifie n'est pas Payroll Officer ; une modification par l'équipe de paie laisse l'état inchangé. Quand les RH changent un salaire, la paie reçoit un signal.

Les avertissements du tableau de bord sont des enregistrements sous Paie > Configuration > Dashboard > Warnings : 39 sur la démo, chacun avec une description, une classe de couleur (Primary, Info, Warning, Danger) et un interrupteur actif. Employees To Review, Employees With Anomalies et Payslips With Zero or Negative Net y figurent tous.

Le guide décrit une bannière Review Employees sur le cycle de paie. Nous ne l'avons pas trouvée. À la place, la fiche de paie d'un employé en To Review affiche le statut Blocked avec l'avertissement « Review employee to validate payslip » et un lien Review. Un bouton Review Employees existe bel et bien, dans la boîte de dialogue d'avertissement affichée au démarrage d'un cycle de paie, et sur la carte du tableau de bord sous le nom Review Records. Les états du cycle de paie sont Draft, Ready, Done et Paid, plus Cancelled.

Conseil de pro
Avant votre premier cycle de paie Odoo 20, convenez de qui marque les employés Reviewed. Si le même gestionnaire modifie les fiches et valide les fiches de paie, l'état bascule rarement : le filet de sécurité ne fonctionne que si les RH et la paie sont des groupes distincts.
First Payrun Date et les avantages dans la Paie
Sous Paie > Configuration > Paramètres, une First Payrun Date indique à Odoo de ne rien générer pour les périodes antérieures à la mise en production, ce qui supprime les avertissements « missing payrun » pour les mois payés dans l'ancien système. Nous l'avons fixée au 1er janvier 2025 sur la société de San Francisco.

La configuration des avantages quitte le configurateur salarial pour Paie > Configuration > Salaire > Benefits, groupée par type d'avantage, afin que les RH et la paie partagent une seule définition. Le guide indique aussi qu'une offre peut désormais être un avenant au contrat d'un employé existant, avec un modèle PDF Signature choisi depuis le formulaire d'offre ; ce module n'était pas installé sur notre démo, nous avons donc vu le menu Benefits mais pas le formulaire d'offre.

Irak, Koweït, Oman et Philippines, plus un connecteur GOSI saoudien
Selon le guide et le code source 20.0, quatre packages de paie sont nouveaux : l'Irak (assurance sociale, fin de service, heures supplémentaires), le Koweït (une structure « Kuwait: Monthly Pay » avec sécurité sociale, indemnité de fin de service et congés de maladie par paliers), Oman (structure mensuelle, assurance sociale, deux jeux de règles d'heures supplémentaires) et les Philippines. Chacun livre un pont comptable pour que les fiches de paie génèrent des écritures. Pour être clair : ni le Canada ni les États-Unis ne font partie des nouveaux packages. Le package américain est toujours là, et nos cycles de paie de démonstration ont utilisé sa structure United States: Regular Pay ; le guide ne mentionne pas le package canadien.

L'Arabie saoudite s'approfondit. Un module GOSI se connecte à l'API de la General Organization for Social Insurance, récupère les données de cotisation et journalise chaque mise à jour comme un enregistrement de mise à jour de salaire ; il se configure avec une clé de certificat dans les paramètres de paie. Un module compagnon collecte les heures de retard depuis Présences et les fait passer par To Approve, Approve et Refuse. Les configurateurs de package salarial sont localisés pour les Émirats arabes unis, l'Inde, l'Arabie saoudite et l'Égypte. Rien de tout cela n'était installé sur notre démo, ce paragraphe vient donc du code source, pas de l'écran.
Belgique : des déclarations produites depuis Odoo, des connecteurs retirés
La Belgique reste la localisation la plus active. Sous Configuration > Salaire > Structures, le groupe Belgium Pay liste Monthly Pay (BE) avec 256 règles, Double Holidays, Termination Fees, 13th Month et d'autres. À savoir avant l'installation : le package belge archive ses structures, règles et catégories juste après l'installation ; elles reviennent une fois qu'une société belge est configurée. Une liste vide sur une base neuve est attendue.

Le menu Rapports d'une société belge liste Meal Vouchers, Eco-Vouchers, DMFA, DIMONA, DRS et les feuilles 273.XX, 274.XX et 281.XX, entre autres. Le guide parle d'une « déclaration 281.30 » ; aucun menu ne porte ce nom. L'entrée est Rapports > Belgium > 281.XX Sheets, le formulaire s'intitule Create 281.XX Form, et il ne demande qu'une année (Year) et un type d'envoi (Sending Type, Original ou Corrections) avant Compute.




Le guide liste aussi un flux de correction pour la déclaration 273S, un treizième mois pour la commission paritaire 302 et un module de budget mobilité reliant la paie et les dépenses. Et un retrait qui compte : les connecteurs vers SD Worx, Partena, Group S, UCM, Acerta et Prisma n'existent plus comme modules, selon le diff du code source 20.0. Dimona a été intégré au module belge principal.
Comment l'essayer sur une base de démonstration
- Installez Paie avec les données de démonstration sur une société dont le pays livre des règles salariales (le package américain a fonctionné pour nous).
- Ouvrez
Paie > Configuration > Salaire > Règles, créez une règle, réglez Amount Type sur Input Value, cochez Inputtable on Employee et remplissez l'onglet Input Options. - Ouvrez Paie > Employés, choisissez un employé et remplissez la nouvelle propriété dans l'onglet Payroll.
- En tant qu'utilisateur RH qui n'est pas Payroll Officer, modifiez le salaire de cet employé ; le badge passe à To Review.
- Ouvrez Paie > Fiches de paie > Cycles de paie, cliquez sur Nouveau, choisissez la structure et la période, puis Continue. La fiche de paie affiche Blocked avec un lien Review.
- Suivez le lien, marquez la fiche Reviewed et validez le cycle de paie.
- Pour la Belgique, changez de société, ouvrez Rapports > Belgium > 281.XX Sheets, cliquez sur Nouveau, réglez Year et Sending Type, puis Compute.



Ce que nous n'avons pas pu vérifier sur la version préliminaire
Nous n'avons pas vu les structures et fiches de paie du Koweït, d'Oman, de l'Irak ou des Philippines, les paramètres GOSI saoudiens, le journal de mise à jour des salaires et les approbations de retards (modules non installés, et GOSI exige une vraie clé de certificat), les pages du configurateur de package salarial et le formulaire d'offre d'avenant (non installés), ni un PDF 281.XX calculé et une fiche de paie belge (la société belge de démonstration n'avait ni employés ni fiches de paie). Les propriétés de paie Many2one et de sélection n'existaient pas dans cette version, l'action Review Time exigeait des congés en attente, et la bannière de budget mobilité exige un employé belge avec un budget et une dépense. Tout le reste de cette page a été parcouru sur la version 20.0 Enterprise du 23 septembre 2026.
Ce que cela change pour une mise à niveau
Si vous gérez la paie sur Odoo 17, 18 ou 19, attendez-vous à trois types de travaux. D'abord, chaque type d'entrée de fiche de paie devient une règle salariale avec Inputtable on coché, et les règles personnalisées qui lisent des entrées par code doivent être vérifiées, puisque les ponts hr_work_entry_* et hr_payroll_holidays ont été fusionnés dans la paie. Ensuite, vérifiez votre pays : selon le diff du code source 20.0, les packages France, US ADP, Italie SD Worx et Hong Kong eMPF sont absents de la branche enterprise 20.0, sans commit de retrait pour l'expliquer. Enfin, décidez qui est responsable de l'état Reviewed et fixez la First Payrun Date au mois de votre mise en production. Nous déroulons cette liste dans notre service de migration ; si un script extrait des données de paie par XML-RPC ou JSON-RPC, ajoutez l'audit de migration RPC, car Odoo a programmé pour Odoo 20 la suppression de ces points de terminaison. L'article central de la série liste les autres changements de la même mise à niveau.
Questions fréquentes
Les types d'entrée de fiche de paie disparaissent-ils dans Odoo 20 ?
Oui. La liste distincte des types d'entrée est remplacée par des règles salariales qui sont elles-mêmes des entrées : réglez Amount Type sur Input Value et cochez Inputtable on Employee ou Payslip. Sections, valeurs par défaut et suffixes se trouvent dans l'onglet Input Options de la règle, sous Paie > Configuration > Salaire > Règles.
Odoo 20 ajoute-t-il la paie pour le Canada ou les États-Unis ?
Non. Les nouveaux packages nommés dans le guide sont l'Irak, le Koweït, Oman et les Philippines, avec une couverture approfondie pour l'Arabie saoudite, les Émirats, l'Égypte et la Belgique. Le package américain est toujours présent ; nos cycles de démonstration ont utilisé sa structure Regular Pay. Le guide ne mentionne aucun changement au package canadien, vérifiez-le donc sur votre propre configuration avant de migrer.
Pourquoi une fiche de paie est-elle Blocked dans mon cycle de paie Odoo 20 ?
Parce que l'employé est dans l'état To Review. Une modification suivie faite par quelqu'un qui n'est pas Payroll Officer fait passer la fiche à To Review, et la fiche de paie reste Blocked avec un lien Review jusqu'à ce qu'un gestionnaire de paie ouvre la fiche et la marque Reviewed. Le cycle peut alors être validé.
Qu'est-il arrivé au package de paie français dans Odoo 20 ?
Selon le diff du code source 20.0, l10n_fr_hr_payroll est absent de la branche enterprise 20.0, comme US ADP, Italie SD Worx et Hong Kong eMPF. Aucun commit de retrait ne l'explique, les packages ont donc peut-être été déplacés ailleurs. Confirmez auprès d'Odoo avant de planifier une migration de paie française.
Où se trouve la déclaration belge 281.30 dans Odoo 20 ?
Sous Paie > Rapports > Belgium > 281.XX Sheets sur une société belge. Cliquez sur Nouveau, choisissez l'année (Year) et le type d'envoi (Original ou Corrections), puis Compute. Il n'y a pas de menu 281.30 distinct ; le même formulaire couvre la famille 281. Les règles belges doivent être actives, ce qui se produit une fois qu'une société belge est configurée.
Où est passée la configuration des avantages dans Odoo 20 ?
Elle a quitté le configurateur salarial pour Paie > Configuration > Salaire > Benefits, groupée par type d'avantage. L'objectif est une seule définition partagée par les offres RH et le calcul de paie, au lieu de deux listes qui divergent. Le formulaire d'offre du configurateur continue de référencer ces avantages quand il compose un package.
