Skip to main content
Pending validationOdoo 20.0Community and Enterprise

How to set up Social Security rates and schemes

What is it for?​

Each payslip calculates Social Security with the rate of the contract's scheme in force on the payslip date. fiscaldoo already ships the schemes, the rates and the return codes. In most companies, setting up means checking these tables and choosing the right scheme on each contract.

When to use it?​

  • When preparing payroll for a new company: check the tables with the certified accountant.
  • When a legal act changes a rate: record the new rate from the date the law brings it into force.
  • When a contract changes its framework, for example an employee who becomes a manager (gerente): record a new version of the contract.

Where to find it?​

  • Payroll › Configure › Social security and income tax › Social security regimes
  • Payroll › Configure › Social security and income tax › Social security rates
  • Payroll › Configure › Social security and income tax › DMR codes
  • Payroll › Configure › Social security and income tax › Social security remuneration codes
  • Payroll › Prepare › Workers and contracts › Contracts, for each employee's scheme

Before you start​

  • To consult, your profile is Payroll Administrator: you see the four lists, but you have no New and cannot change anything.
  • To record a rate, log in as a system administrator. fiscaldoo also has the National legal data profile, which the demo does not assign to anyone.
  • Have at hand the legal act that publishes the rate: the Legal reference is required.

How to use it​

  1. Open Payroll › Configure › Social security and income tax › Social security regimes. The demo ships five: GERAL, JOVENS_FERIAS, MCD, MOE_GERENCIA and MOE_RESTANTES.
  2. Open Payroll › Configure › Social security and income tax › Social security rates and check one line per scheme: Valid from, Worker rate (%), Employer rate (%) and Base type. The Total rate (%) is the sum of the two and is not typed.
  3. Open a line to see the base. In Base type, the options are Effective remuneration and Conventional/notional base. In Minimum base source and Maximum base source, they are Fixed amount and Multiple of the IAS.
  4. If the law changed the rate, open the line in force and fill in Valid until with the last day of the old rate, for example 31/12/2026. Save.
  5. Click New. Choose the Scheme and type Valid from (01/01/2027), Version (2027), the two rates and the Legal reference. Choose the Base type and the two sources. Save. The list now has both lines, and each payslip uses the one for its date.
  6. Open Payroll › Prepare › Workers and contracts › Contracts and open the contract. In the Social Security block, check Social Security scheme and Beneficiary type. The block also shows Accounting class (in the demo, Staff).
  7. Open Payroll › Configure › Social security and income tax › Social security remuneration codes and click the group of the return model to see the 17 codes, and Payroll › Configure › Social security and income tax › DMR codes to see the 40. These lists are read-only. The code of each pay item is chosen in the pay item's version (see How to create and set up a pay item).

Example with accounts. The September 2026 payslip of Ana Margarida Pinto has a base of €2,400.00. On the payslip, How the amounts were reached says:

Segurança Social: 11 % de 2.400,00 € = 264,00 €; a cargo da empresa 23,75 % = 570,00 €.

The September batch, with 8 payslips, generated journal entry SAL/2026/00004. The Social Security part, checked in the ledger, is the sum of the 8 payslips. The total base is €11,560.00 and the company's share is rounded payslip by payslip, so it gives €2,745.52 and not €2,745.50:

AccountDebitCredit
245 Contribuições para a Segurança Social, the employee's share, deducted from what they are owed€1,271.60
635 Encargos sobre remunerações, the company's share€2,745.52
245 Contribuições para a Segurança Social, the company's share€2,745.52

Setting up rates and schemes does not generate journal entries: these lines are created when the batch is posted (see How to post payroll to accounting).

Pending validation by a certified accountant: the rates and bases of each scheme, and the scheme to give each employee.

Expected result​

  • Each scheme has a rate in force on each payslip date.
  • The payslip shows the rate used in How the amounts were reached.
  • The Social Security return and the journal entry use the payslip's amounts (see How to send the pay statement to Social Security).

Important notes​

  • A rate in force is not rewritten. From the date it starts, the percentages are fixed, so that old payslips and corrective payslips keep giving the same result. A rate with a future date can still be corrected or deleted.
  • The schemes are not all the same. In the demo, MCD and JOVENS_FERIAS have 26.100% paid by the company only and a conventional base. MOE_RESTANTES has 9.300% and 20.300%, and MOE_GERENCIA has the percentages of the general scheme.
  • Exemptions. The Exemptions field is just a text note: it does not change the calculation. Hiring incentives are recorded on the contract, in Social Security incentives.
  • An empty list is not missing configuration. An employee without a scheme is flagged on the payslip (see “Common problems”); the rate list does not show it.

Common problems​

“Rate(s) of “GERAL” is/are already in force”​

  • Message: “Rate(s) of “GERAL” is/are already in force (validity started on 2026-01-01). What happened: a rate already in force is immutable — its history is never rewritten. How to fix it: create a new rate with a new start date and close this one's “Valid until”.”
  • What to do: follow steps 4 and 5. On screen, “Valid until” is the Valid until field.

“Scheme “GERAL” already has a rate in force in that period”​

  • Message: “Scheme “GERAL” already has a rate in force in that period (from 01/01/2026). Close the previous rate's “Valid until” or change the dates.”
  • Cause: you clicked New without closing the previous rate.
  • What to do: do step 4 first.

“The rate of “GERAL” … can only be closed from today on”​

  • Message: “The rate of “GERAL” (from 01/01/2026) is already in force and its validity can only be closed from today on. What happened: setting “Valid until” in the past (or changing one that has already ended) would rewrite periods already processed. How to fix it: use today's date or a later one and register a new rate for the new period.”
  • What to do: use today's date or a future date. If the change in the law started months ago, talk to the certified accountant before processing: the payslips of those months are corrected with corrective payslips.

“The contract of … is already in force and Social Security scheme cannot be changed”​

  • Message: “The contract of Diogo Ferreira Lopes (version of 2026-02-01) is already in force and Social Security scheme cannot be changed. What happened: the classification, the Social Security framework and the schedule of a contract already applied are never rewritten …”
  • What to do: record a new version of the contract, starting on the day of the change (see How to record an employment contract).

The payslip says Social Security was not calculated​

  • Cause: the payslip has no scheme. The warning says that a return or a journal entry cannot use a payslip without contributions, and closing the batch flags it.
  • What to do: correct the scheme and calculate the payslip again. Pending validation on screen: this warning, because all contracts in the demo have a scheme.
Versions: Odoo 20.0Community and Enterprisefiscaldoo 20.0 (master 8f78854ec)ID DOC-0181
Was this page helpful?