Reconciliation¶
When the payroll calculation is done by an external provider, the figures that leave Odoo and the figures that come back have to agree. Reconciliation imports the provider’s statement, matches every line to a salary sheet line, and reports what differs.
Import a statement¶
Open the salary period and click Import Statement. In the dialog:
Provider: the name of the payroll provider the file comes from.
File: the CSV file returned by the provider.
Delimiter and First Row Is a Header: how to read the file.
Employee Column, Component Column and Amount Column: the position of each value in a row, counted from
0.Match Immediately: run the matching right after the import.
The import creates an external statement with one line per row. The file itself is stored on the statement together with its hash, so it is always possible to show which file a figure came from.
- menu
- Salary ‣ Salary ‣ Salary Periods ‣ (open a period) ‣ Import Statement
- shows
- The Import Statement dialog with the Provider, File, Delimiter, header checkbox and the three column numbers filled in.
- highlight
- The column mapping fields (red frame).
- data
- Provider "Bérszámfejtő Kft.", file "2026-03-payroll.csv", semicolon delimiter.
- module
- hr_salary_sheet
- notes
- English UI, light theme, 1440px width. Use a throw-away sample file.
Matching¶
Click Match on the statement. Each line is matched by:
the Raw Employee Reference against the External Reference of an engagement, or against the employee;
the Raw Component Code against the external codes of a salary component.
Every line ends up in one of the matching states: Unmatched, Automatically Matched, Manually Matched, or Ignored, with the reason in the Matching Note. The Unmatched counter on the statement shows how many still need attention. Fix an unmatched line by filling in the missing external reference or external code — or by selecting the employee, engagement and component on the statement line itself — and run Match again. The full result of the run is kept in the Import Log tab.
Click Post to write the matched amounts onto the salary sheet lines as External Amount.
Note
When a corrected file arrives, import it as a new statement and click Supersede on the old one. The superseded statement stays in the database, linked to its replacement, so the history of what was received stays complete.
Deviations¶
Once external amounts are posted, every sheet line compares its own amount with the external one:
Deviation: the difference between the two.
The line is within tolerance when the difference stays under the Tolerance Amount and Tolerance (%) of its component, or under the company default when the component sets neither.
A line outside tolerance takes the Deviation Severity of its component: Information, Warning, or Blocking.
External State says whether the line was Matched, is Not Imported, or exists Only External — a figure the provider reports that has no counterpart in Odoo.
Every deviating line starts with the Deviation Status Open, and the lines that are waiting for a decision carry two buttons — on the Lines tab of the salary sheet and in :
(Accept the external figure): the provider’s figure is the correct one, and the status becomes Accepted.
(Waive the deviation): the difference is known and does not need to be followed up; the status becomes Waived.
A line whose deviation stays inside the tolerance shows no buttons, so what is left on screen is what genuinely needs a decision. Use (Reopen the deviation) to put a decision back to Open.
Open the line itself to enter a Deviation Note explaining the decision; the handling user is recorded in Deviation Handled By.
Important
A Blocking deviation may only be waived by a user with the Salary Approver right.
The sheet’s Reconciliation status summarizes the result: Not Imported, Matched, Deviation, or Waived. The period shows the number of Open Deviations, and by default a period with a blocking deviation cannot be closed.
- menu
- Salary ‣ Reporting ‣ Salary Analysis
- shows
- The salary line list filtered to lines with a deviation, showing Employee, Component, Amount, External Amount, Deviation, the deviation status and the accept, waive and reopen buttons at the end of the row.
- highlight
- The accept and waive buttons on an open deviation (red frame).
- data
- Period "2026-03"; two deviating lines, one accepted and one still open.
- module
- hr_salary_sheet
- notes
- English UI, light theme, 1440px width.
Reporting¶
opens all salary sheet lines, which can be grouped and pivoted by period, employee, component and nature, with the With a Deviation, Open Deviation and Only in the External File filters, in list, pivot and graph view.
See also