Skip to main content
Pending validationOdoo 20.0Community and Enterprise

How to apply the collective agreement (tables, minimums and seniority payments)

What is it for?​

A collective agreement can give the employee more than the law: a minimum per category, seniority payments (diuturnidades) or other pecuniary clauses. fiscaldoo stores each instrument with its publication, compares the payslip's pay with the minimum that applies and does not let you validate below it. This article shows how to record the instrument, link the employee, pay the seniority payments and check the result.

fiscaldoo does not ship the content of any collective agreement. The company loads it, from the Boletim do Trabalho e Emprego (BTE). A wrongly loaded value gives a wrong payslip.

When to use it?​

  • The company or an employee becomes covered by an instrument.
  • A revision of the salary table is published in the BTE.
  • The instrument provides for seniority payments that are not yet being paid.
  • You received a notification to correct discriminatory clauses.

Do not use these steps for an individual pay rise: that is the article How to change an employee's salary.

Where to find it?​

  • Instruments and tables: Payroll › Prepare › Workers and contracts › Collective agreements
  • Linking the employee: Payroll › Prepare › Workers and contracts › Contracts › open the line › Work tab, Contract block
  • Minimums: Payroll › Configure › Law and calendars › Category minimums
  • Seniority payments: Payroll › Configure › Pay item setup › Rules of diuturnidades

Before you start​

  • Your profile is Payroll Administrator: this profile records instruments, minimums and rules, links the employee and posts the batch. The Payroll Processor can also calculate and validate, but not post.
  • Have the instrument's publication at hand: BTE number, publication date and the date it comes into force.
  • The employee record must have a Professional category, because it chooses the table line, and a Usual Work Location, without which the contract cannot be saved.
  • Know which is the first month without validated payslips. The link is made from that month (see step 2).

How to use it​

1. Record the instrument and the table​

  1. Open Collective agreements and click New.
  2. Fill in Instrument, Code and Kind of instrument: Company agreement (acordo de empresa), Group agreement (acordo coletivo), Collective contract (contrato coletivo) or Working-conditions ordinance (portaria de condições de trabalho).
  3. Fill in Sector or scope, Publication (BTE), Posted at and In force since. Two instruments with the same sector count as competing (see “Common problems”).
  4. In the Salary table tab, click Add a line: Professional category, Level, Monthly value (€) and Valid from.
  5. Save. Status today becomes In force, and Deadlines (alerts) shows the end date of the current period.

Pecuniary clauses are recorded in the Pecuniary clauses tab. The types are Meal allowance, Transport allowance, Shift allowance, Seniority payment, Dias de compensação por ano (compensation days per year), Dias de aviso prévio (notice days) and Other pecuniary clause.

2. Link the employee to the instrument​

A contract with validated or paid payslips no longer accepts the instrument, because those payslips were calculated without it. So, if the employee already has payslips, the link is made in a new version of the contract, from the first open month.

  1. Open Payroll › Prepare › Workers and contracts › Contracts and the employee's line.
  2. If Usual Work Location is marked in red, choose it and save. The save button stays inactive while that field is empty.
  3. If the employee already has validated payslips, click the + button next to the dates, at the top of the form, and choose the first day of the open month, for example 01/01/2027. The new version is selected at the top.
  4. In the Work tab, Contract block, choose Collective agreement (registry) and type the Level in the salary table, the same as the table line. Applicable collective agreement (IRCT) fills in by itself.
  5. Save (the cloud icon, next to the name).

3. Check the minimums​

The instrument's table already counts as the category minimum: do not repeat it in Category minimums. That list is for a minimum that does not come from the recorded instrument.

  1. Open Category minimums and click New.
  2. Choose Salary category and Source: Legal rule (parameter × multiplier), Collective agreement (IRCT) table or Contract.
  3. With the Contract source, choose the employee. Fill in Minimum (€ / month), Legal reference and Valid from.
  4. Save.

The minimum most favourable to the employee applies. In the test, with the instrument's table at €1,000.00 and a contract minimum of €1,100.00, the €1,000.00 payslip was refused: €100.00 was missing.

What happens below the instrument's minimum is chosen in Payroll › Configure › Company › Payroll settings › Floor of the collective agreement: Block the validation (the default) or alert only. The national minimum wage always blocks. With the alert option, the payslip was validated with no message on screen. Without a check of your own, the difference goes unnoticed, so leave Block the validation.

4. Pay the seniority payments​

The Seniority payments (diuturnidades) pay item (code DIUT) already comes with the source Seniority steps (diuturnidades) (in the demo, from 01/11/2026), with DMR code A and Social Security remuneration code P. The rule is missing.

  1. Open Rules of diuturnidades and click New. In Set by, choose Applicable collective agreement (IRCT).
  2. In Collective agreement (registry) (in the Portuguese interface this label still appears in English), choose the instrument from the registry. Collective agreement or policy fills in by itself with the name. The rule serves those who have that instrument on their contract. Without an instrument, it applies to the whole company.
  3. Fill in Years per step, Maximum steps, Value of a step, Amount per step, Clause that sets it and From. An empty Professional category applies to all.
  4. Save.
  5. Confirm in Posting templates that the pay item has a template (see How to post payroll to accounting). In the demo, it already has one.
  6. Create the month's payslips and click Calculate. The Seniority payments (diuturnidades) line goes onto the payslip of each employee the rule applies to by itself; you do not need to add it.

5. Record revisions and the equality deadline​

  1. Open the instrument, Revisions tab, and click Add a line: Publication (BTE), Posted at, Takes effect on and Nature of the change (Pecuniary (pay) or Non-pecuniary).
  2. A pecuniary revision taking effect before its publication is flagged as Retroactive. The line does not change closed payslips: the differences for months already validated are corrected with corrective payslips (see How to correct a payroll run).
  3. If the company is notified to correct discriminatory clauses, open the Equality review tab and type the date in Notified to amend on. Amend until shows the end of the 60 days: notification on 01/06/2026, deadline 31/07/2026.

After the deadline has passed, the instrument form shows at the top the warning Verificar este instrumento: (Check this instrument), for example: “CCT do comércio (exemplo): The 60 days to amend the discriminatory clauses ended on 31/07/2026 (art. 479.º/3). What happens now: the competent service sends the case to the Public Prosecutor within 15 days (art. 479.º/4). How to fix it: check the amendment and the declaration of nullity before applying those clauses.” The same warning tells you when the equality review is missing: “No review of equality and non-discrimination is registered (art. 24.º-25.º).” fiscaldoo does not change any payslip because of these warnings.

Pending validation by a certified accountant: the IRS and Social Security treatment of seniority payments, the DMR code and the remuneration code to use, the classification of the accounts and the reading of arts. 3, 129, 262, 478, 479 and 482 of the Labour Code (Código do Trabalho).

Expected result​

Example. An employee in the Qualified professionals (level 5) category, level B (minimum €1,000.00), with seniority since 01/06/2023 (Seniority dates block, in the contract's Work tab). In November 2026 they have 3 full years, so 1 seniority payment of €25.00. The payslip looks like this:

Payslip lineAmount
Base remuneration€1,000.00
Seniority payments (quantity 1)€25.00
Meal allowance (21 days)€129.15
Gross€1,154.15
Social Security (employee): 11% of €1,025.00€112.75
IRS withheld€23.00
Net to pay€1,018.40

In How was it calculated?, the Seniority payments (diuturnidades) line shows the source (“Seniority steps (diuturnidades)”), the quantity, the pay item version and the clause.

When the batch is posted, the journal entry (checked in the ledger, with the demo's posting templates) has these lines:

AccountDebitCredit
632 Remunerações do pessoal1,154.15
231290 Remunerações em processamento1,154.15
231290 Remunerações em processamento1,154.15
2312 Ao pessoal1,018.40
242 Retenção de impostos sobre rendimentos23.00
245 Contribuições para a Segurança Social112.75
635 Encargos sobre remunerações243.44
245 Contribuições para a Segurança Social243.44

The seniority payments go into 632 without a line of their own, and the company's charges (€243.44) are 23.75% of €1,025.00. 2312 is the net pay account in the demo's templates. Confirm with the certified accountant the account to use in your templates. The batch has a single journal entry, which adds up the payslips of all employees: the lines above are this employee's share.

Important notes​

  • The level must match the table. Without a match between category, level and date, the instrument gives no minimum and the payslip is not compared with it.
  • The minimum is compared with what counts for the minimum wage. Base remuneration and seniority payments count; the meal allowance does not.
  • A line without a rule triggers a warning. If a payslip has the Seniority payments (diuturnidades) line and no rule serves the employee, the payslip and the batch show: “No seniority payment rule serves Eva Cristina Rocha on 30/11/2026, so nothing is paid (collective agreement of the contract: none; professional category: Qualified professionals (level 5)). …”. The message points to Law and calendars, but the rules are in Payroll › Configure › Pay item setup › Rules of diuturnidades.
  • Validity. Keep Denounced on, Survival until and Expired on up to date: they decide the Status today and whether the instrument still counts on the payslip date. Confirm these dates in the BTE.
  • Anyone not linked to the instrument does not get that instrument's rule and is not subject to its table.
  • Equality. fiscaldoo does not check whether the clauses are discriminatory: Equality reviewed on only records that someone did.
  • Enterprise edition. In a Portuguese company, payroll is this one and the Enterprise payroll menu is hidden. In a company of another country it is the other way round: payslips are the Enterprise ones, no Portuguese rule runs and these menus only appear to the system administrator. Pending validation on screen: differences in the Enterprise edition.

Common problems​

“Collective agreement (registry)… cannot be set directly”​

  • Message: “Collective agreement (registry), Applicable collective agreement (IRCT) cannot be set directly. What happened: the record is closed (or the field is derived from another record) and what was registered, paid or approved is never rewritten; no field can be changed. […]”
  • Cause: this version of the contract covers a month with a validated or paid payslip. The message talks about corrective payslips and holidays, but that is not what solves it here.
  • What to do: click Discard and create a new version from the first open month (step 2).

The contract's save button does not respond​

  • Cause: a required field is missing. Usually it is Usual Work Location, marked in red.
  • What to do: choose the location and save. The Payroll Administrator chooses from the existing locations; creating a new one is up to Human Resources.

“The version of 01/01/2027 was not created”​

  • Message: “The version of 01/01/2027 was not created. What happened: the contract of … has no Usual Work Location, and a new version copies it. […]”
  • What to do: fill in the location on the contract, save and only then click +.

“…is covered by the instrument… but has no professional category”​

  • Cause: the contract has an instrument in force and the category is empty. It also happens when you delete the category of someone already linked.
  • What to do: fill in Professional category on the employee record or remove the instrument from the contract.

“Two instruments cover the same sector”​

  • Message: “Two instruments cover the same sector (…). What happened: “…” was chosen for the employee without a reason and the law does not let the product choose (arts. 482 and 3). […]”
  • What to do: fill in Why this instrument (adhesion, employee's choice, higher level) on the contract. With the choice justified, the contract saves.
Pending validation by a certified accountant: which of the competing instruments applies in each case.

“The pay of … is below the minimum wage that applies to the employee”​

  • Message: “The pay of … (960.0) is below the minimum wage that applies to the employee (1000.0) by 40.0. […]”
  • Cause: the pay that counts is below the category minimum.
  • What to do: raise the salary in a version of the contract or review the category and level. Calculate does not pick up the new salary on a payslip that already exists: on the calculated batch, use Delete batch, give the reason and create it again.

“Pay item(s) DIUT have an amount and no DMR code”​

  • Cause: the pay item version has no DMR code. The batch does not validate.
  • What to do: since the version has already started, close it with Valid until and create another starting the next day, with the codes.

“Posting blocked: 1 pay item(s) with an amount have no posting template”​

  • What to do: create the template in Payroll › Configure › Pay item setup › Posting templates and post again.

“There is already a rule of diuturnidades for this instrument and category in that period”​

  • Cause: a change of the instrument is a new rule from its date, not a second rule over the same days.
  • What to do: end the previous rule the day before, in Up to, and create the new one.

“The revision … cannot take effect on…, before its publication”​

  • Message: “The revision “BTE n.º 20/2026” cannot take effect on 01/05/2026, before its publication on 01/06/2026. […]”
  • Cause: only a pecuniary change can take effect before publication.
  • What to do: correct Takes effect on or, if the change really is about amounts, choose Pecuniary (pay).
Versions: Odoo 20.0Community and Enterprisefiscaldoo 20.0 (master 8f78854ec)ID DOC-0180
Was this page helpful?