Swiss Payroll in Odoo - Some how to's
A few numbers
Release of the Certified Payroll localization on February 2025. Since then:
- Number of production databases running Swiss Payroll: +600 databases
- Number of payslips generated in production: +20,000 payslips
Set-up
Prerequisites
Odoo version: minimum 17.0
Company localization: Switzerland
Certification: The Swissdec module is certified ELM 5.0 and ELM 5.3
Installation
In your Odoo database, install the module Swissdec ELM 5.0 and ELM 5.3 from the Apps

Note that if Odoo is freshly installed with a Swiss localization and payroll app, the ELM modules are automatically installed.
Usual set-up for Swiss Payroll follows this logic:
On a regular basis (i.e. every year for the payroll settings, every month for the running payroll, every day for the employee and contracts), this process needs to be updated to always be aligned with the current situation of the company.
Available resources for the general configuration
For demo purpose, following videos can be shared: Demo FR and Demo EN.
For step-by-step configuration of the solution and demo on the transmission workflow, refer to the following video:
In Odoo 18: https://www.youtube.com/watch?v=1C0E9fTSeTk
In Odoo 19: https://www.youtube.com/watch?v=_y12os9mns8
In order to quickly create and test the workflow in a database, you can use this link to duplicate a template Odoo 19 database: https://www.odoo.com/odoo-enterprise/template/53154?token=e2fbc8dd-d06c-42f2-8a26-ed5eabd0da81
As the solution is Swissdec certified, following resources are useful to know if needs are part of Swissdec requirements: Swissdec Data Receiver List and Swissdec Document
Practical use cases
Before starting, note that Odoo Swiss Payroll should always be done on a yearly basis. In other words, except if the company was created during the year or that an employee joined during the year, payslips should always be generated from January to December.
# | NEED | SOLUTION |
1 | EN: What is certified by Swissdec? ------------------------------ FR: Qu'est-ce qui est certifié Swissdec dans la localisation de paie Odoo? |
|
2 | EN: How to deal with warnings ------------------------------ FR: Comment gérer les avertissements | On a draft payslip, any highlighted warnings should be fixed before creating the draft entry (i.e. confirming the payslip):
Even if they might not seem relevant for each and every companies, each warning has a purpose, either related to the payslip computation or the Swissdec transmission. It's NOT enough to fix the warning AFTER confirming the payslip. It should be done before. If you ever created and posted a payslip that was containing warnings, you would need to cancel, delete and create it again once those warnings are solved. NB: in draft, by clicking on the blue arrow, you are brought to the model where the data should be changed. Any changes on those fields are reflected automatically on the corresponding payslip. Don't forget to recompute the sheet.
From the technical point of view, warnings are coming from the employee_meta_data variable coming from the code, and is computed from this method: Github repository 19.0 - _compute_employee_meta_data method |
3 | EN: The Source-Tax/IS amount is not right, what could be the reason? ------------------------------ FR: Le montant d'impĂŽt Ă la source calculĂ© n'est pas correct, quelle peut en ĂȘtre la raison? | The Source-Tax computation for eligible employees is done on a yearly basis. From a general point of view, if you are willing to do Swiss Payroll on Odoo, you need to generate payslips starting from the beginning of the year (January). That also means to reproduce the update of the Employee data in each corresponding month (as it was done before switching to Odoo), reproducing errors as well, IS corrections,... Also, if the employee has another employment, it's important to add the total income of their other job in order to adjust the IS base amount:
It's because Swissdec is computing the IS amount based on the sum, and not the average (source: Swissdec Book - Page 59 for computation examples regarding the AVS). |
4 | EN: Source-Tax Rates: manual or automatic import every year? ------------------------------ FR: Les taux d'impÎt à la source: doit-on les importer manuellement chaque année ou est-ce fait automatiquement? | For now, the source-tax rates import should be triggered manually through the corresponding feature in the Payroll app (on a yearly basis):
The right Tax Year should be chosen, as well as the targeted cantons:
|
5 | EN: Source-Tax: who is subjected to IS? ------------------------------ FR: ImpĂŽt Ă la source: qui est concernĂ©? | Here is the definition: 3.1.1 Workers residing in Switzerland Workers without a permanent residence permit (C permit) who are resident in Switzerland for tax purposes are subject to withholding tax on their income from employment. Spouses living in the same household are not subject to withholding tax if one of them is a Swiss national or has a permanent residence permit. If the spouse who is a Swiss national or has a permanent residence permit resides abroad in a separate domicile, the worker who is employed and resides in Switzerland remains subject to withholding tax (see Art. 83 LIFD). 3.1.2 Workers residing abroad Regardless of their nationality and residence permit, workers (cross-border workers or workers staying for a week or a short period) residing abroad are taxed at source on salary income and compensation income paid to them by a debtor of the taxable service who has their domicile, registered office, effective administration, a permanent establishment, or a fixed base in Switzerland (see Art. 91, para. 1, LIFD). This means that a worker residing abroad is subject to taxation at source even if they are a Swiss national or hold a permanent residence permit. The divergent provisions of the relevant DTA remain reserved. Workers who are not resident in Switzerland and who receive a salary or other remuneration for work in international traffic on board a ship, aircraft, or road transport vehicle from an employer with its registered office or permanent establishment in Switzerland are subject to withholding tax regardless of their nationality or residence permit (see Art. 91, para. 2, LIFD). To determine on a case-by-case basis whether withholding tax must be levied, reference must be made to the provisions of the applicable DTAs. These are summarized in the âOverview of double taxation agreementsâ contained in the current âFTA Circular on the withholding tax treatment of employees in international transport companies.â Source: Circulaire n°45 - DĂ©partement fĂ©dĂ©ral des finances - Juin 2019 (page 9 - section 3.1.1 and 3.1.2) |
6 | EN: Annual salary paid as one-shot, various cases:
------------------------------ FR: Salaire annuel payé en une fois, différents cas de figure:
| 1. Annual salary paid as one-shot (ex. 2 000 CHF/year) While the wage type (1018) Salary by task could be used to record one-shot payment, it would trigger the AVS cotisation even if the threshold is not reached. Therefore, it would be easier to set a (1000) Monthly salary as a one-time payment for the corresponding month.
NB: for employees who are only paid by tasks, you have to check that box (if they don't have weekly hours or lessons on their contract):
2. AVS exemption for small salaries (< 2 300 CHF/year) The "Exempted" AVS Special Status should be set on the Employee form if it is 100% sure that he will not go above the yearly amount for the given year. If it happens that the Employee yearly salary eventually goes above the limit, Odoo will NOT recompute the AVS cotisation he should pay, starting from the beginning of the year.
3. AVS Deductible for Retired Employees (16 800 CHF/year) Even if the deductible is yearly, Odoo will split it per month (1400 CHF/month). Therefore, if only one payslip is generated for the year, it won't apply the deductible in the right way. What should be done is to generate payslip every month for such employee (for the contract period), even with a 0 CHF salary. For the month where the yearly salary is effectively paid, record it through a one-time payment for that month as explained above. |
7 | EN: Configure the LPP in % ------------------------------ FR: Configurer les contributions LPP en % | If the ELM 5.3 module is installed, it is possible to choose the LPP computation method from the "Insurances" tab on the Employee:
Either with regular amount if the checkbox is not set, or through percentages. |
8 | EN: Set the PP complementary contributions ------------------------------ FR: Définir la contribution LPP complémentaire | Use the (5052) PP Complementary Contributions |
9 | EN: Be able to set flexible rate on IJM and LAAC for Employer Rate ------------------------------ FR: Définir des taux flexibles de taux employeur sur l'IJM et la LAAC | If the ELM 5.3 module is installed, it is possible to set flexible rate for the Employer Rates: For the LAAC:
For the IJM:
|
10 | EN: Set-up CCT or LPCFam (in rate % or general amounts) ------------------------------ FR: Mettre en place les cotisations CCT et LPCFam (en pourcentage ou des montants généraux) | Either use: 54XX/74XX wage types for specific rates 5300/7300 wage types for specific amounts
Those wage types must be encoded at the Employee level in the monthly salary wages:
|
11 | EN: Computation of IS for foreign worker ------------------------------ FR: Calcul de l'impÎt à la source pour un travailleur étranger | In case a foreign worker is subjected to Source-Tax, the IS amount will be computed based on the canton from the Workplace:
|
12 | EN: Encoding of Swiss specific leaves for employees and impact on the salary ------------------------------ FR: Encoder les absences spécifiques à la Suisse et comprendre leur impact sur le calcul du salaire | Along with the Payroll localization, specific Swiss time off are created in the time off types: By grouping them by Country, we identify them in the list:
Each of this absence has an impact on the payslip of the month they are posted. This is done through the "Disability" and "Continued Pay" percentages applied when recording them:
Which impact?
Example:
Display:
|
13 | EN: What can be changed on a wage type and what shouldn't be changed (i.e. how to make sure wage types are taken into account for vacation computation) Can I create my own wage type? ------------------------------ FR: Quels Ă©lĂ©ments des types de salaire peuvent ĂȘtre modifiĂ©s ou non (par exemple, concernant l'impact d'un type de salaire sur la base de calcul des vacances) Est-ce que je peux crĂ©er mes propres types de salaire? | By default, nothing should be changed at the wage type level in order to grant the Swissdec certification. This is why there is no option to create wage types in the model:
For any unmet cases, the first step is to check if another wage type cannot answer the need, by checking the documentation or asking through odoo.com/help. From a more practical point of view, it is possible to edit any parts of the wage types except the Python expressions/computation. To be noted that it's the responsibility of the one who changes those settings to make sure that the expected result is the right one. Also, after update of the model or upgrade to another versions, some settings will be reset by the localization. About wage type creation (same responsibility concern apply), you can decide to duplicate similar wage type when doing so and adapt the settings accordingly. Note that, in order to keep unique CH code per wage type, you could use suffix to manually created ones, such as:
That way, added wage type will remain unique and will still appear on the payslip PDF. Exceptions about the settings reset during the upgrade still exist:
|
14 | EN: Be in one app free Swiss Payroll database - pros and cons ------------------------------ FR: Base de données gratuite avec l'app Paie - avantages et limitations | It is technically possible to create a database through odoo.com/trial and only select the Payroll app:
This will result in a one-app-free database for Swiss Payroll. Time off app will be installed as well and be part of the one-app free. However, Accounting won't be installed, which means:
|
15 | EN: What salary to indicate on the Employee contract (part time) ------------------------------ FR: Quel salaire mensuel définir sur la fiche Employé (temps partiel) | The Monthly Wage defined on the Employee form is directly linked to the Occupation Rate:
In this screenshot, 6000 CHF is the salary of the employee with a 80% occupation rate. This is NOT the corresponding 100% salary amount the employee would get if he was at 100% of occupation rate. |
16 | EN: Set-up the 100% salary on the contract and make it displayed on the payslip PDF ------------------------------ FR: Encoder le salaire équivalent à 100% sur son contrat et l'afficher sur le PDF: bonnes pratiques | In standard, this is not possible yet but a task is created to add it in the future. Prior to this standard update, it would require some customization to make it work. A non-intrusive advice is to add a new field on the hr.employee model to store the 100% equivalent salary as an information. Then, through an inherited view, add this field to the header of the Payslip, next to the "Activity Rate".
By doing so, we don't impact the salary computation and the salary rules linked to the Swissdec certification. |
17 | EN: Net wage warranty in case of long-term illness ------------------------------ FR: Garantie du net dans le cas de maladie longue durée | In case of long-term illness, net wage warranty may be computed and added/subtracted from the net salary to ensure that the contract paid salary remains the same. This is not automatically done in Odoo, but it could be manually computed and added through the (5110) Cash Advantage Correction wage type. |
18 | EN: Set up additional monthly wages (night shift, night work, overtime,...) at the payslip level ------------------------------ FR: Définir des salaires mensuels (travail de nuit, heures supplémentaires) au niveau de la fiche de paie | Once the payslip is generated and still at the "draft" level, additional monthly wages, along with their base and the corresponding factor can be added:
Once recorded, you can click on "Compute Sheet" to take it into account for the payslip computation. You can also decide the "Recompute Whole Sheet" to get rid of any manually added inputs (monthly wages or additional wage types) on the payslip:
|
19 | EN: Time off: how to understand the disability and continued pay %? ------------------------------ FR: Absences/congés: comprendre les taux d'invalidité et de maintien de salaire | When recording time off with Swiss Payroll Localization, new fields appear:
Which impact do they have?
Example:
Display:
|
20 | EN: Computation of the illness pay rate ("Jour de carence", sick days paid by the company, sick days paid at 80%,...), depending on the canton ------------------------------ FR: Calcul et encodage des jours de congé maladie (en tenant compte des jours de carence, et des taux de maintien de salaire propres à chaque canton) | Such canton-specific computation rules are not part of the module for now. They should be manually set through the time off overview of the corresponding employee, with the corresponding Continued Pay %. For example, if an employee takes sick time off for 10 days, and that:
Those should be recorded on the "Time off" smartbutton of the Employee, which the corresponding rates:
So that the corresponding payslip will look like this:
Description can be adapted here to make it clearer (if needed). Absences/manually added monthly wages can also be recorded at the payslip level when in "Draft" stage. |
21 | EN: When is the email sent to employee about the payslip generation/how to communicate the PDF through a portal access to employees (Odoo 19) ------------------------------ FR: Quand est envoyé l'email prévenant l'employé de la génération d'une fiche de paie / comment communiquer le PDF via un coffre-fort pour chaque employé (sur Odoo 19 en passant par le portail) | At the moment the Pay Run is confirmed (i.e. the draft entry is created), an email is sent to the Employees, depending if yes or no you have the Document app installed:
Content of the email template can be adapted, either at the body level, or concerning the recipient of the email:
Which could be set to the Employee personal email address with the following Python expression in the "To (Emails)" field:
If the Document app is installed, it is possible to store the payslip PDF in each employee personal drive, so that it is accessible from their internal user/portal user interface. How to make it work?
|
22 | EN: How to easily generate the salary payment file ------------------------------ FR: Comment générer le fichier de paiement des salaires | The first step is to activate the SEPA payment in the Payroll Settings:
As for the payment of vendor bills in the Accounting, this feature implies that the IBAN (and corresponding bank information) are defined on the Bank journal and on the Employees: Bank journal:
Employees (important to set it as Trusted):
Once set, Payroll Managers can generate the payment file from the Pay Run:
And specify the Export format, the bank journal on which the payment should be made, as well as the payment date if it shouldn't be done immediately. Note that this technical module should be installed to benefit from the ISO20022 export format:
|
23 | EN: Why is the number of days off an integer on the Employee form ------------------------------ FR: Pourquoi le nombre de congés est un entier sur la fiche employé | The number of Holidays defined on the Employee form is an integer because it represents the number of days for a 100% occupation rate in the company
|
24 | EN: Minimum annual salary to be AVS exempted ------------------------------ FR: Salaire minimum annuel pour ne pas ĂȘtre soumis Ă la cotisation AVS - ce qu'il faut savoir | AVS exemption for small yearly salaries (< 2 300 CHF/year) The "Exempted" AVS Special Status should be set on the Employee form if it is 100% sure that he will not go above the yearly amount for the given year. If it happens that the Employee yearly salary eventually goes above the limit, Odoo will NOT recompute the AVS cotisation he should pay, starting from the beginning of the year.
|
25 | EN: How to set up a complementary illness insurance (as an "IJMC") ------------------------------ FR: Comment mettre en place une assurance maladie complémentaire ("IJMC") | As the IJM insurances field on the Employee form is a many2many field type, several entries can be selected (a primary and a secondary insurance):
To be noted that the accounting impact for each insurance can be set on the corresponding wage type (9051) and (9053):
|
26 | EN: Anticipated retirement ------------------------------ FR: Retraite anticipée | To be set through the (54XX) and (74XX) wages types |
27 | EN: Representation fees (wage types that impact AVS base VS those that don't) ------------------------------ FR: Frais de représentations (et clarification sur les types de salaire qui impactent la base AVS et ceux qui ne l'impactent pas) | (6040) Lump-sum representation expenses From a general perspective, wage types going from (1000) to (2000) impact the AVS base amount, while wage types from (3000) to (9000) do not. However, exceptions exist, and a way to see which wage types impact the AVS base amount is to group them by "AVS/AC included":
|
28 | EN: What should be set in the Payroll settings ------------------------------ FR: quels paramétrages sont obligatoires dans l'app Paie | What is mandatory for the transmission is:
In case of an association (which doesn't have an IDE-OFS number), this field can remain empty/unknown. |
29 | EN: Statistic report in the Transmission: error because unsupported report ------------------------------ FR: Génération du PDF sur le rapport statique: erreur de validation | For now, the statistic report PDF is not supported by Swissdec, which explains why the generation of the PDF in Odoo is triggering an error when trying to open it:
Once Swissdec will support it, it will be available in Odoo. However, the "Declare Salary" feature is still available and allows you to declare the Statistic through Swissdec. |
30 | EN: How to understand the LAA set-up ------------------------------ FR: Comprendre la configuration et la mise en place de l'assurance LAA | A feedback that comes a lot is the question: "why are there only a 0% and 50% company part on the LAA groups?"
To answer this question, we need to address it from a general point of view:
|
31 | EN: Specific time off (i.e. accident) with a continued pay set to 0% but salary paid by the insurance ------------------------------ FR: Absence (par exemple, accident) avec un maintien de salaire de 0% car payé par l'assurance | First step is to record a Swiss time off (see above sections about time off/absence) with a continued pay % = 0 Depending on the time off type (accident, sickness, maternity leaves), the wage type to be used to record the allowance (through a one-time payment) is:
Then, the equivalent correction is done through the (2050) Third Party Correction wage type (in earliest version, the 2050 might be automatically added even if not specified in the Additional Wage types. This can be prevented by setting the (2050) to 0 in that same table). Example: 2000CHF for a sickness allowance. On the payslip, following wage types are recorded:
And its impact is to reduce the base amount by the corresponding allowance amount:
While keeping the same gross salary. |
32 | EN: How to manually adjust the Source-Tax/IS amount ------------------------------ FR: Comment ajuster manuellement le montant de l'impĂŽt Ă la source | Use the (5061) Source-Tax: Manual Correction to record the difference (+ or -) between the computed source-tax amount and the actual one that should appear |
33 | EN: Deduction for prosecution office ------------------------------ FR: Retenue office des poursuites | (5081) Deduction for Prosecution Office |
34 | EN: How to deduct speed fine on the payslip How to deduct repayment of a loan (for a computer) on a monthly basis When to use 5110 wage type ------------------------------ FR: DĂ©duire des amendes pour excĂšs de vitesse DĂ©duire le remboursement mensuel d'un prĂȘt (pour un ordinateur par exemple) Quand utiliser le type de salaire 5110 | As those deductions should reduce the Net salary without impacting the Cotisations, it can be recorded through the (5110) Cash Correction wage type. In other words, (5110) wage type is to be used when willing to impact Net salary, without impacting anything previously computed (gross, AVS, deductions,...) By default, the 5110 wage type is going to deduct the amount from the net salary. Therefore,
NB: if you encode several additional wage types with the code 5110 on the same payslip, they will be concatenated on the payslip PDF:
|
35 | EN: Edit the vacation pay rate for hourly salary ------------------------------ FR: Modifier le taux d'indemnité de vacances | The Holiday Compensation Rate is defined at the Employee level:
By default, it's computed based on the number of annual time off, but it can be edited afterwards. |
36 | EN: Salary Advance ------------------------------ FR: Avances sur salaire | (6510) Salary Advance Already Paid |
37 | EN: Health insurance ------------------------------ FR: Caisse maladie | (1974) Employee portion CM assumed by employer |
38 | EN: Household Allowance ------------------------------ FR: Allocation de ménage | (3032) Household allowance |
39 | EN: Child Allowance (CAF, FCF) before 16 years old or after 16 years old ------------------------------ FR: Allocation de famille (FCF, CAF) avant et aprĂšs 16 ans | (3000) Child allowance for children < 16 years old (3010) Education allowance for children > 16 years old With ELM 5.3, computation of the child allowance is automatically done based on the personal information of the employee:
And the corresponding compensation fund:
However, following scenario may occur: Up front: for each child, only one full child allowance is paid. If both parents work, entitlement follows a legal priority order:
Cases 4 and 5 occur quite regularly in practice. Concrete example:
In such case, the computation of the child allowance should be performed outside of Odoo. Then, it should be set in the (3000) Child Allowance wage type AND the corresponding children should be set with non-receivable allowance:
|
40 | EN: Child Allowance (Geneva/GenÚve specific) ------------------------------ FR: Allocation de famille (dans le cas spécifique de GenÚve) | (3004) Child allowance paid by FCF In the case of Geneva, this is the FCF which is paying for the child allowance |
41 | EN: Alimony Deduction ------------------------------ FR: Pension alimentaire | (5082) Alimony Deduction |
42 | EN: Split the salary paid into different bank accounts/different payment method ------------------------------ FR: Répartir le paiement du salaire selon différents comptes bancaires ou méthodes de paiement | The bank account field is now a Many2many field. This allows you to add multiple bank accounts to the same employee. You can so assign two bank accounts to one employee if the salary from the payslip needs to be split and paid to two separate accounts.
|
43 | EN: 13th salary payment ------------------------------ FR: Paiement du 13Ăšme mois | Nothing prevents Payroll Managers to pay the 13th salary every month, two times per year, or one time per year. When generating a pay run, they simply need to check the box if 13th salary should be paid for the corresponding month:
This will automatically trigger the 13th salary computation on each payslip of the Run:
|
44 | EN: Rounding to 0.5 of the payslip rules ------------------------------ FR: Arrondi Ă 0.5 des rĂšgles de salaire | This is a Swissdec constraint, as explained in the following document Swissdec reference book (section 4.1.1) |
45 | EN: Partial Unemployment/RHT ------------------------------ FR: ChĂŽmage partiel | The partial unemployment amount can be recorded through the
But it should be computed outside of Odoo. It means that oth wage types expect a fixed amount in CHF. Odoo does not automatically calculate short-time work compensation based on any criteria, this logic lives entirely outside of Odoo. It is therefore the "Payroll officer" s responsibility to calculate, by their own means, how much short-time work compensation each employee is entitled to. Once this amount is determined, it simply needs to be entered on the payslip using the relevant wage type either as a recurring entry or as a one-time payment. |
46 | EN: Translate other input types in Odoo 17.0 to ease the payslip encoding ------------------------------ FR: Comment traduire les types de salaire sur la fiche de paie pour les faire apparaßtre en français | In Odoo 17, description field of the other input type is not translatable. Therefore, it will be the unique name that will be displayed during the encoding of the payslip additional wage types:
In the payslip wage type (whatever the language of the connected user):
A workaround is to add both the English and French translation as a description, liked "(3000) Child Allowance / Allocation de famille" |
47 | EN: Private share of vehicle ------------------------------ FR: Part privée des véhicules | (1910) Private share and (5080) Deduction for the private share |
48 | EN: Vacation Provision ------------------------------ FR: Provision de vacances | The wage types (9000) Vacation pay Provision and (9001) Vacation pay Balance appear once the employee contract is set as "hourly" and the "Pay Holiday Compensation each month" is not set:
The payment of the provision is to be made with the (1162) Vacation payments wage type. NB: the vacation provision is not transferred from one year to another. |
49 | EN: Average delay to get status during declaration (verifying plausibility status) ------------------------------ FR: Délai moyen pour obtenir un statut lors d'une déclaration (Vérification de la plausabilité) | This depends on Swissdec workload. It can be up to seconds or minutes - hours in some cases. Anyway, if the delay exceeds one day, it's better to create a new declaration by clicking again on the "Declare Salary":
Be aware that you have to click on "Get Status" option to leave the "Verifying Plausibility" status:
|
50 | EN: How to know if an insurance or a canton administration is connected to Swissdec ------------------------------ FR: Comment savoir si je peux déclarer mon salaire ou mes cotisations via Swissdec (à l'administration ou aux caisses d'assurance) | The list of available data receiver or canton that are connected to Swissdec is available here: https://swissdec.ch/fr/data-receiver For example, the last table of that page is referring to the cantons that allow salary certificate declaration through Swissdec (instead of printing and sending it by letter):
|
51 | EN: Scheduled action that regularly recomputes the draft payslips ------------------------------ FR: Actions planifiées qui recalculent les fiches de paie en attente | By default, the following scheduled action is recomputing draft payslips based on up-to-date Employee data. This might erase manually added wage types or edited values. To prevent it, you could decide to archive this action in the database:
|
52 | EN: How to pay salary after departure ------------------------------ FR: Comment gérer le paiement de salaire aprÚs le départ d'un employé | Everything starts from this field in the other info tab of the departure payslip:
The two options are the following:
See this: https://swissdec.ch/document/share/359/54dddb6c-ed5e-4a56-ab1c-8d0db2817501, sections 9.6.5 and 9.6.6 |
53 | EN: What is absences are recorded after the Pay Run is validated on a given month ------------------------------ FR: Comment encoder des absences encodées par des employés aprÚs que le lot de fiches de paie du mois concerné a été validé | If the Pay Run is validated, trying to create time off for the corresponding month is triggering this error:
In order for the time off/absences to still be encoded and impact the computation of next month salary, users will have to create those time off entries in the next month (even if they were actually taken the month before). That's the way to get the right salary computation. NB: a description can be added to make it more clear:
|
54 | If really necessary, how can I create my salary type? ------------------------------ FR: Si vraiment nécessaire, comment puis-je créer mon type de salaire ? | As explained in point 13, it is really not recommended to create your own salary type; however, here is a video explaining how to properly create one if it is really necessary. |
55 | Is there an automatic carry-over to the next year for the vacation provision (9000-9001)? ------------------------------ FR: Y a-t-il un report automatique à l'année suivante pour la provision de vacances (9000-9001) ? | This is not possible at the moment, a new wage type should soon exist for this purpose. |
56 | Swiss Salary Certificate â Field 15 (cm 63â71) How to populated id on Odoo ? ------------------------------ Fr : Comment le configurer ? | Field 15 of the Swiss salary certificate is a free-text remarks field used to record specific information about an employee's compensation. |
57 | Correcting Payslips in Switzerland â Best Practice ------------------------------ Fr : Correction de bulletins de paie en Suisse â Bonne pratique | The refund mechanism should not be used in Switzerland as it will likely break calculations. Depending on the type of error, two alternatives are recommended:
|
58 | Telework Percentage â Impact on Declarations ------------------------------ FR : Pourcentage de tĂ©lĂ©travail â Impact sur les dĂ©clarations | a telework percentage can be set on the employee record. This field has no impact on the monthly IS declaration and no computation impact. It is only reported in the yearly cross-border tax declaration.
|
59 | Report expenses on payslips ------------------------------ FR : Reporter les dépenses sur les fiches de paie | Unfortunately, there is no direct link between expenses and payslips with the Swiss payroll localization. The "Report in Next Payslip" button on expenses does not work with this localization.
To display them on payslips, an additional manual step is required, which involves adding a one-time payment on the relevant employee's record with the amount of the expense(s) to be reimbursed. Wage types are already created in the Swiss localization to support this. wage type already available:
One time payment :
This one-time payment will generate an additional wage type on the payslip, on which it will always be possible to change the description on the payslip if needed.
|
60 | Separate Salary Type for Public Holiday Hours ------------------------------ FR : Salaire pour jours fériés travaillés | If you want a separate salary type for hours worked on public holidays, with a different rate than regular hours. Unfortunately, this is not standard in Odoo. As soon as you need to add or modify salary rules in Python, The solution would be to create a new input type "hours worked on public holidays", add a new salary rule that calculates the pay for those hours, and modify the standard hourly rule to deduct those hours and avoid double counting. |
61 | Retroactive exemption of the source-tax (correction) ------------------------------ FR : rembourser l'IS pour un employé qui n'est finalement pas soumis à l'impÎt à la source | There 3 steps to correct this:
2. Perform the IS line correction like in this video of the affected payslips https://drive.google.com/file/d/1VT7Ip3QRFGNKHDIQmweBoQsyVYrDdMUd/view?usp=sharing 3. After the correction, set back his profile to Not subject to source tax (uncheck the box below)
|



















































































