Skip to Content

Two solutions for one BrightPay file — between them, Odoo 19 and 20, Community and Enterprise.

BrightPay payroll into Odoo

BrightPay runs the payroll; Odoo gets the accounting from the same CSV file — no retyping of wages, PAYE and National Insurance.

See prices All case studies

The problem

Many UK small businesses run payroll in BrightPay and keep their books in Odoo. Every month someone types the payroll into Odoo by hand: gross wages, PAYE and National Insurance, employer NIC and net pay for each employee. It takes time, and one wrong figure means the HMRC balance no longer matches.

What we built

BrightPay exports each pay run as an “Other Journal” CSV file. We built two solutions that read that same file. Which one fits depends on your Odoo:

Journal entryPayslips
What it doesThe file becomes one payroll journal entry: HMRC as the partner on PAYE and NI, net pay per employee, and the Employment Allowance as a separate pair of lines. The same file cannot be imported twice.The file fills the payslips of a Pay Run in Odoo Payroll and checks each employee’s net pay against BrightPay; then the usual Payroll journal entries follow.
Odoo versionOdoo 19Odoo 20; for Odoo 19 — built on request
EditionCommunity and Enterprise, on your own server or Odoo.shEnterprise with Payroll, including Odoo Online
Not available onOdoo Online — it is a Python moduleOdoo Community — Payroll is part of Enterprise

Journal entry

Upload the CSV and check the summary — lines, employees, totals per account and the balance — and enter the month’s Employment Allowance if you claim it. The entry is created as a draft unless you choose to post it straight away, and the CSV is attached to it.

The import window: totals per account, the balance and the Employment Allowance pair, before anything is created.
The import window: totals per account, the balance and the Employment Allowance pair, before anything is created.
One draft journal entry: wages, PAYE and NI, net pay and employer NIC per employee, plus the Employment Allowance pair.
One draft journal entry: wages, PAYE and NI, net pay and employer NIC per employee, plus the Employment Allowance pair.

Payslips

Attach the CSV to the Pay Run and choose Fill from BrightPay CSV. One payslip per employee is created or updated with gross pay, PAYE and employee NI, employer NIC and net pay. If Odoo’s net pay differs from BrightPay’s, nothing is saved. Then validate the Pay Run as usual.

Fill from BrightPay CSV in the Actions menu of the payslips.
Fill from BrightPay CSV in the Actions menu of the payslips.
The Pay Run filled from the BrightPay file, noted in the chatter.
The Pay Run filled from the BrightPay file, noted in the chatter.
A payslip: gross pay, PAYE and employee NI, employer NIC and net pay — the same figures as in BrightPay.
A payslip: gross pay, PAYE and employee NI, employer NIC and net pay — the same figures as in BrightPay.
The journal entry Odoo Payroll creates from the payslip.
The journal entry Odoo Payroll creates from the payslip.

Screenshots use demo employees and amounts.

Technology

Both solutions read BrightPay’s standard Other Journal export. Nothing connects to BrightPay or sends data anywhere, and the payroll figures stay in your own Odoo. BrightPay still does the payroll calculations — Odoo does not recalculate tax.

In this file PAYE and employee NI come as one line, so the payslip shows them as one deduction.

For technical readers: journal entry — a Python module for Odoo 19 that depends only on Accounting, with automated tests; payslips — a data module for Odoo 20 (a salary structure with four input-value rules and one server action) that installs on Odoo Online through Import Module.

Result and status

Ready for clients. Tested on our own September 2026 payroll: both solutions match BrightPay to the penny. Loading the same file again is refused by the journal entry module, and the payslip action simply replaces the inputs, without duplicates. Journal entry: version 1.0.3 for Odoo 19, tested on our Odoo Community test server. Payslips: version 1.0.2 for Odoo 20 Enterprise, tested on an Odoo Online database.

Get it for your business

  • Licence for one database: £295 one-off.
  • Installation and set-up: £195.
  • Updates and changes: Odoo Care £195 a month, or £85 an hour.

All our module prices

No VAT is charged — we are not VAT-registered. If we become VAT-registered, VAT at the applicable rate will be added from that date.

Get it for your business