Skip to main content
Pending validationOdoo 20.0Community and Enterprise

How to record an employment contract

What is it for?​

The contract tells fiscaldoo how to pay and declare the employee: the contract type (permanent, fixed-term, others), the start date, the base pay and the schedule. Payslips take the salary from here, the hiring communication to Social Security takes the contract type from here and the trial period counts its days from here.

Recording the contract does not generate journal entries or communicate anything to Social Security or the Tax and Customs Authority (AT).

When to use it?​

  • You have just created a new employee's record (How to create an employee record) and the contract is missing before the first payslip.
  • You are going to hire someone on a fixed-term contract and want fiscaldoo to check the justification and dates.

Do not use this procedure to change the salary of a contract that already has payslips: see How to change an employee's salary.

Where to find it?​

The contract is recorded on the employee record: Payroll › Prepare › Worker files › open the employee. The HR manager profile opens the same record in People › Workers › Workers, without the Payroll tab.

  • Work tab, PORTUGUESE CONTRACT group: type, dates, term justification and working time.
  • Payroll tab, RESUMO DO CONTRATO (contract summary) and PLAN groups: salary and schedule.
  • The trial period has its own list: People › Contracts and departures › Trial periods.

The list of all contracts is in People › Contracts and departures › Contracts.

Before you start​

  • You have Payroll Administrator access: the steps were done with a user with only that access.
  • The other profiles, each tested with a user with only that profile:
    • the HR manager has the Work, Personal, Resume, Training and Life line tabs, without Payroll (salary and schedule). The Date From is read-only. The Contract type can still be changed on the day the contract was recorded; on a contract recorded on an earlier day, saving shows the refusal “… is already in force and Contract type cannot be changed…” (see “Common problems”);
    • the Salary processor sees Work and Payroll and the fields look editable, but saving gives a refusal (see “Common problems”).
  • The employee record already exists (How to create an employee record). In the example, the record of Inês Rodrigues Costa, who starts work on 02/11/2026.
  • If the contract is fixed-term, have to hand the specific reason stated in the written contract: fiscaldoo asks for it.

How to use it​

  1. Open Payroll › Prepare › Worker files and open the employee's record (in the example, Inês Rodrigues Costa).
  2. In the Work tab, scroll down to PORTUGUESE CONTRACT. In Contract type, choose one of the options: Indeterminate (sem termo), Fixed term, certain (termo certo), Fixed term, uncertain (termo incerto), Very short duration (muito curta duração), Intermittent (intermitente), Commission of service (comissão de serviço), Temporary work agency, fixed term (trabalho temporário) or Temporary work agency, open-ended (cedência temporária por tempo indeterminado). In the example, Indeterminate (sem termo).
  3. In Date From, type the first working day, for example 02/11/2026. Leave Term end date empty for a permanent contract.
  4. If the company applies a collective agreement, choose it in Collective agreement (IRCT) (the Collective agreement (registry) field, just below, is the one from the official registry).
  5. In the WORK TIME group, check Schedule regime (Regular, Adaptability (average), Hours bank or Concentrated schedule (art. 209.º)). For part-time, also fill in Full-time weekly hours (comparable) and Days of part-time work.
  6. Click the save icon (the cloud next to New).
  7. Open the Payroll tab. In RESUMO DO CONTRATO, the Contract line already shows the start date (“02/11/2026 to Undefined”). In Wage, type the monthly base pay, for example 1000. If it is below the guaranteed minimum monthly wage (RMMG), a warning appears straight away below the salary (see “Common problems”).
  8. In PLAN, in the Working Hours field, choose the schedule. In the demo there are 40 horas/semana, PT 40.0h/8.0h (demonstração) and PT 20.0h/4.0h (demonstração); in the example, PT 40.0h/8.0h (demonstração).
  9. Save again.

If the contract is fixed-term​

  1. In step 2, choose Fixed term, certain (termo certo) (or Fixed term, uncertain (termo incerto)). More fields appear: The end date is a fixed term, Justification code, Justification, Post or professional activity and, in the communications group, Expiry date communicated, Fixed term communicated on, Communicate the celebration until, End of the term communicated on, Communicate the end until, Preference in admission until and Preference not respected.
  2. Type the Term end date (mandatory for a certain fixed term).
  3. In Justification code, choose the reason from the list (article 140 of the Labour Code (Código do Trabalho)). Each option shows the code and the reason, for example 140/2-f - Exceptional increase of the activity of the company. In Justification, type the specific facts stated in the written contract.
  4. Save. If the Date From was already saved, the Fim de contrato? (end of contract?) window opens, asking “Porque alterou a data de fim do contrato?” (why did you change the contract end date?). Choose Correção das condições do contrato (correction of the contract terms) and click Correct terms. The other two options, Fim da colaboração (end of the collaboration) and Start a new contract, are for other situations.

Without a justification, the contract is not saved (see “Common problems”).

The list is the same for both types. For Fixed term, uncertain (termo incerto), the reasons 140/2-d, 140/4-a and 140/4-b are refused on saving (see “Common problems”).

Record the trial period​

The trial period has its own record, linked to the contract version. Once it is created, fiscaldoo calculates the legal duration and the last day.

  1. Open People › Contracts and departures › Trial periods and click New.
  2. In Worker, choose the employee. The Contract version and the Start of the execution fill in by themselves with the contract in force. If the employee has more than one version, the Contract version list only shows theirs.
  3. In Type, choose: Without term: general (art. 112.º/1-a), Without term: 180 days (art. 112.º/1-b), Without term: management or senior staff (art. 112.º/1-c), Fixed term (art. 112.º/2) or Service commission (art. 112.º/3).
  4. If the period was reduced by agreement or by a previous contract, fill in Days agreed (reduction), Days of the previous contract or Days of training.
  5. Save. After saving, the Worker can no longer be changed: another person's trial period is made on a new record.

The HR manager also has the New button in this list. The Salary processor opens it without New.

The result below is that of Inês Rodrigues Costa's trial period: with the type Without term: general (art. 112.º/1-a) and start on 02/11/2026, the Legal duration (days) is 90 and the Last day of the trial period is 30/01/2027. The explanation says: “Legal duration: 90 days. Counted from 02/11/2026; 0 days do not count (absences, leaves, suspension, training above half): ends on 30/01/2027 (art. 113.º).”

Expected result​

  • In Payroll, the RESUMO DO CONTRATO shows the contract from 02/11/2026 and the Wage of €1,000.00. This is the pay the first payslip uses.
  • The People › Contracts and departures › Contracts list now shows the contract.
  • In the Trial periods list, the employee's line shows the Type, the Start of the execution, the Duration applied (days) and the Last day of the trial period (in the example, 90 and 30/01/2027).

The next step is communicating the hiring to Social Security: How to communicate hiring, termination or changes to Social Security.

Important notes​

  • The meal allowance is not written in the contract. It comes from the Meal allowance pay item (code MEAL), in Payroll › Configure › Pay item setup › Salary rules, at €6.15 per day in version 2026.1 (since 01/01/2026, origin Company rule). The payslip multiplies this amount by the month's entitled days. If the company pays a different amount, a new version of the pay item is recorded; the existing one is not changed. The €6.15 is the 2026 daily tax-exempt limit in cash that the product provides as the default: anything above the limit is taxed under Personal Income Tax (IRS) and enters the Social Security base. Pending validation by a certified accountant: 2026 exempt limit in cash and on a meal card.
  • Trial period: the product counts the days by law. As a rule, 90 days for a permanent contract, 180 for the cases of art. 112.º/1-b and 240 for management or senior staff; for fixed-term contracts, 30 or 15 days depending on the duration. Absences, leaves and suspensions do not count and extend the period. Pending validation by a certified accountant: how training days and suspensions are counted in the trial period.
  • A fixed-term contract must have its reason written. Without it, the law treats the contract as permanent (art. 147.º/1-c of the Labour Code); fiscaldoo does not reclassify it by itself and refuses to save.
  • Changing the contract once there are payslips is done with a new version of the contract, from the date of the change, not by altering the old one (How to change an employee's salary).
  • Duty to inform. The record of what was given to the employee in writing about the contract is in Payroll › Prepare › Information to the worker; it is not part of this procedure.

Common problems​

The fixed-term contract does not save and mentions “SEM TERMO por lei” (permanent by law)​

  • Symptom: when saving a Fixed term, certain (termo certo) contract with the dates filled in, the Validation Error window: “Art. 147.º/1-c): a “Termo certo” contract with no justification code or text is considered PERMANENT (SEM TERMO) by law — this product never reclassifies it silently. Fill in “Justification code” and “Justification” (art. 141.º/3: the specific facts, expressly related to the term), or change the type to “Sem termo”.”
  • Cause: the Justification code and the Justification are missing.
  • What to do: choose the code and type the facts stated in the written contract. If the contract has no term, change the Contract type to Indeterminate (sem termo).

The certain fixed-term contract asks for the term end date​

  • Symptom: when saving: “Art. 141.º/1-e): “Termo certo” requires a term end date. Fill in “Term end date”, or change the type.”
  • Cause: the Contract type is Fixed term, certain (termo certo) and the Term end date is empty.
  • What to do: type the date the contract ends, or choose another type.

The reason is refused on an uncertain fixed-term contract​

  • Symptom: when saving: “The motive “Replacement of a full-time worker who moves to part-time for a fixed period” does not admit an uncertain term (CT art. 140.º/3). How to fix it: choose a motive that does, or a certain term.”
  • Cause: the list shows the same reasons for both types, but 140/2-d, 140/4-a and 140/4-b are not valid for Fixed term, uncertain (termo incerto).
  • What to do: choose another reason or change the Contract type to Fixed term, certain (termo certo).

A warning appears below the salary​

  • Symptom: below Wage: “The salary (€800.00) is below the guaranteed minimum monthly wage that applies to this employee (€920.00, in force on 02/11/2026). What happened: paying less than the minimum wage is not allowed (art. 273.º of the Labour Code) and payslip validation also checks it. The minimum already takes into account the territory of the workplace, the RMMG reductions recorded for the employee and the part-time proportion. How to fix it: increase the salary or record the RMMG reduction that applies (trainee or reduced work capacity).”
  • Cause: the salary is below the minimum that applies to this employee on the contract date.
  • What to do: correct the salary or record the reduction that applies. The warning does not prevent saving the contract, but payslip validation also checks the minimum.

A yellow warning about the bank account appears​

  • Symptom: at the top of the record: “Paid by bank transfer, but the bank account is missing or the IBAN is not valid. Fill in a valid IBAN in “Bank accounts” (tab Personal) before the payment file.”
  • Cause: the record does not yet have the IBAN. The warning does not prevent saving the contract.
  • What to do: record the IBAN as in How to create an employee record, before the first payment.

I do not see the Payroll tab​

  • Symptom: the record only has Work, Personal, Resume, Training and Life line.
  • Cause: your profile is HR manager, which does not see the salary or the schedule.
  • What to do: ask someone with Payroll Administrator access for the salary, the schedule, the type and the start date. On a contract in force, the HR manager cannot change the Date From, and can only correct the Contract type on the day the contract was recorded.

“… is already in force and Contract type cannot be changed”​

  • Symptom: on a contract recorded on an earlier day, after changing the Contract type and clicking the save icon (seen with the HR manager, on a contract of 01/01/2026), the Invalid Operation window says: “The contract of … (version of …) is already in force and Contract type cannot be changed. What happened: the classification, the Social Security framework and the schedule of a contract already applied are never rewritten (CT art. 147.º/3: a change keeps seniority and is auditable). How to fix it: record a NEW version of the contract, starting on the day the change takes effect.”
  • Cause: the contract is already part of the history. On the day it was recorded, it can still be corrected.
  • What to do: close the window and discard the change. The change is recorded in a new version of the contract, from the day it takes effect: see How to change an employee's salary.

“The Salary processor only reads the contract”​

  • Symptom: with the Salary processor profile, after changing the Wage and clicking the save icon, the Invalid Operation window says: “The Salary processor only reads the contract (Wage). What happened: the employee's contract is changed by Human Resources or the Payroll administrator, never by whoever processes payroll with it. How to fix it: ask Human Resources to record the change as a new version of the contract.”
  • What to do: close the window, discard the change and ask someone with Payroll Administrator access to make it.
Versions: Odoo 20.0Community and Enterprisefiscaldoo 20.0 (master d83bdf7ae)ID DOC-0241
Was this page helpful?