Skip to content
KMEESign in

Post the office payroll and pay the salaries

The accounting office sends the payroll of the month. The accountant posts it in Odoo, by spreadsheet or by the summary, with the net salary of each employee open to pay, the advance discounted, and provisions for vacation and the 13th salary. The finance team then schedules the salaries and the payroll taxes and pays the salaries by a payment order with the bank file.

Before you start

Have the payroll sent by the office: a spreadsheet with one row per entry (reference, date, journal, account, partner, label, due date, payment mode, debit and credit) or the monthly summary. The account 2.1.5.1.01 Salários is of the type Payable and reconcilable, the employees are registered as contacts with the analytic distribution by employee, and the employees have CPF and a trusted bank account for the payment file. The example is Guatambu Móveis e Utilidades Ltda, with the October 2026 payroll sent by Tiriba Contabilidade: Maria Fernanda Santos (salary R$ 6,000.00, INSS R$ 641.51, IRRF R$ 385.10 and an advance of R$ 2,400.00 on 10/20/2026), Camila Rocha Duarte (R$ 3,200.00, INSS R$ 272.60) and Bruno Teixeira Lima (R$ 4,200.00, INSS R$ 392.60). This applies in Brazil with configuration: the accounts, the employees, the entry models, the payment mode and the bank structure are set up once by the company; INSS and IRRF come calculated by the office.

Step by step

1. Post the payroll from the office spreadsheet

In Accounting, open Journal Entries, click the gear next to the title and choose Import records. Click Upload data file and choose the spreadsheet: Odoo links each column to its field. Click Test: Everything seems valid. Click Import. Open the payroll, check the employee and the cost center of each line and the total of R$ 13,400.00, and click Post. The salary expense goes to the cost center of each employee (Administrativo R$ 9,200.00 and Operações R$ 4,200.00), INSS and IRRF stay payable to the Receita Federal and the net salary of each person stays open in the account 2.1.5.1.01 Salários, with the employee on the line. In Reports, open General Ledger, fill in 10/01/2026 to 10/31/2026, the account and the employees, and click View. In Open Items, fill in 10/31/2026, the employees and Payable Accounts Only.

2. Launch the advance and discount it in the payroll

When the spreadsheet also has the advance of the 20th and the payroll with the discount, import it the same way. Post the advance, with the debit in Adiantamentos a Empregados and Maria on the line (R$ 2,400.00, 40 % of the salary). Then post the payroll: the discount of the advance is a credit in the same account, with the same employee, and the net of Maria comes out at R$ 2,573.39 (6,000.00 - 641.51 - 385.10 - 2,400.00). In Journal Items, search the account Adiantamentos a Empregados, check the two items and choose Actions, Reconcile, then click Reconcile: the advance and the discount cancel each other and the balance of the account is zero. In Open Items, only the net salary stays open. The net of Camila (2,927.40) and Bruno (3,807.40) have no advance.

3. Post the payroll from the office summary

When the office sends the summary of the month, in Invoicing open the Accounting menu, choose Create Entry from Template, choose Folha de pagamento mensal and click Next. Type the date of the last day of the month and the reference of the payroll. Type the values of the summary: salaries 6,000.00, INSS 641.51, IRRF 385.10, company contributions 1,668.00 and FGTS 480.00. Click Create Journal Entry: Odoo calculates the net of 4,973.39, the taxes to pay and the total of 8,148.00. Click Post. If the entry does not balance, a value of the summary was left blank: fill in all of them before creating.

4. Provision vacation and the 13th salary

In Invoicing, open Configuration, Journal Entry Templates and the Provisão mensal de férias e 13º. Open line 3: the INSS on vacation is calculated by the formula L1 * 0.278, and the FGTS, on line 5, uses 0.08. Click Generate Journal Entry, type 04/30/2026 and the provisions of 888.89 (vacation) and 666.67 (13th salary), for a payroll of 8,000.00. Click Create Journal Entry: the model calculates INSS, FGTS and the provisions in the liabilities. Check the total of 2,112.44 on debit and credit and click Post. The rates of the model (RAT and third parties) are the ones of the company.

5. Schedule the salaries and the payroll taxes

With the payroll posted from the summary (net of 4,973.39), in Invoicing open Vendors, Bills and click New. Choose Maria Fernanda Santos, fill in the reference of the salary, the date 10/31/2026 and the due date 11/06/2026, the Friday before the fifth business day of November. Add the line Salário líquido, in the liability account 2.1.5.1.01 Salários, of 4,973.39, and click Confirm. Open the Accounting menu, choose Payments and Due List and, in the arrow of the search, filter Payable: the salary on 11/06 and the payroll taxes on 11/19, the DARF of the DCTFWeb of 2,694.61 (INSS and IRRF) and the FGTS of 480.00. Together they add up to the 8,148.00 of the payroll. If the line goes to the expense account, use the liability account 2.1.5.1.01 Salários.

6. Pay the salaries by payment order

On 11/06/2026, open Vendors, Payment Orders, click New and choose the mode Pagamento de salários - Itaú. Click Create Payment Lines from Journal Items, fill in the due date up to 11/06/2026 and click Add All. In Payment Mode, choose Same or Empty and add again. In Journal filter, choose Operações diversas and add again. In Partner, choose the three employees and add again, so that only the salaries stay. Click Create Transactions: the order gets one line per employee, with the bank account. Click Confirm Payments and Generate Payment File. Check in the file the batch of salaries and the total of 9,308.19 (Maria 2,573.39, Camila 2,927.40 and Bruno 3,807.40). Back in the order, click File successfully sent: the order is marked as Sent. The salaries stay open until the bank return.

Expected result

The payroll is posted, with the net salary of each employee open to pay, the advance discounted and the vacation and 13th salary provisions. The salaries and the payroll taxes are scheduled in the due list, and the order of R$ 9,308.19 is confirmed, with the CNAB 240 file of Itaú generated and marked as sent.

If something goes wrong

If the test points to an account or partner not found, the account code or the employee name in the spreadsheet differs from the one in Odoo: fix the spreadsheet and test again. If Odoo refuses to post because the entry is not balanced, the debits differ from the credits: ask the office for the missing line and import again. If the Analytic column of the expenses is empty, the employee has no analytic distribution or the line has no employee. If Open Items does not show the salaries, the date is earlier than the payroll or the employee is not in the filter. If Reconcile does not accept the items, they are of different accounts or employees: check only the debit of the advance and the credit of the discount of the same employee. If the due list shows the salary without a due date, choose Payable under Filters. If the wizard does not bring the salaries, the due date of the filter is earlier than 11/06/2026 or the Payment Mode is on Same while the salaries have no payment mode: fill in the date and choose Same or Empty. If the payment file is not generated, the employee has no bank account or CPF: register the trusted bank account and the CPF and generate the file again.

Continue the process