Build-to-order Bahrain payroll for Odoo: GOSI/SIO contributions, LMRA permit tracking, end-of-service settlement and WPS bank file export. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Build-to-order Bahrain payroll for Odoo: GOSI/SIO contributions, LMRA permit tracking, end-of-service settlement and WPS bank file export.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Bahrain Payroll (GOSI, LMRA) is a build-to-order Odoo localization that ECOSIRE designs, builds, installs and supports for your company — not an instant download from apps.odoo.com. After purchase we scope your entity, configure it, and hand over a working module on your Odoo 17, 18 or 19 database within a typical 2–4 week lead time.
GOSI/SIO social insurance calculation with separate Bahraini and expatriate contribution bases and rates, implemented as parameterized Odoo salary rules so employer and employee shares post automatically on each payslip
Nationality-aware payroll: hr.employee is extended with a BH nationality flag and computed fields (@api.depends) that route each employee to the correct social-insurance scheme and ceiling
LMRA work-permit tracking on the employee/contract record — permit number, category, issue and expiry dates — with automated actions that flag upcoming expiries before they lapse
End-of-service (leaving indemnity) engine that accrues entitlement by service length and BHD basic wage, computed per Bahrain labour rules and produced as a settlement statement on termination
BHD-denominated salary structures and structure types (basic, allowances, deductions) pre-built for Bahrain, with company currency and rounding configured for BHD
WPS-compliant salary bank file export (Wage Protection System) generating the fixed-format file your Bahraini bank requires for salary transfers
Standard Odoo Payroll ships with no Bahrain (BH) localization: GOSI/SIO contribution rules, LMRA work-permit fields, Bahraini-vs-expat social-insurance splits, BHD-denominated salary structures, end-of-service leaving indemnity and WPS bank files simply are not there. Teams end up bolting on spreadsheets or hand-editing salary rules on every run — error-prone and impossible to audit.
We solve that at the framework level. The module is a proper Odoo addon with its own __manifest__.py declaring dependencies on hr and hr_payroll (Community-compatible where possible; Enterprise features flagged during scoping). Contribution logic lives in Python salary rules and models.Model extensions of hr.employee, hr.contract and hr.payslip, with computed fields using @api.depends so GOSI/SIO deductions and end-of-service accruals recalculate automatically. Nationality-aware records (Bahraini vs expat) drive the correct social-insurance base and rate. Access is governed by ir.model.access.csv plus record rules so HR and finance see only what their role permits, and payslips, the GOSI contribution schedule and end-of-service statements render as branded QWeb PDF reports.
Everything is delivered configured to your CR, establishments and pay calendar, tested against your real employee data, and documented. You get the source code (yours to keep), an admin/HR runbook, a training session, and a post-go-live support window. Because it is a versioned Odoo addon, it upgrades cleanly across 17 → 18 → 19 and integrates with the rest of Odoo — Accounting journal entries, Time Off, Attendance and Contracts — and can be automated or connected to your bank via automated actions and the XML-RPC/JSON-RPC API.
Runs monthly payroll and owns GOSI/SIO and LMRA compliance. Needs contributions, permit tracking and end-of-service to be calculated correctly and automatically inside Odoo, without maintaining side spreadsheets or recomputing salary rules by hand each cycle.
Prepares the WPS bank file and reconciles payroll to the general ledger. Wants a compliant salary-transfer file, a clean GOSI contribution report and payroll journal entries that post automatically to the right accounts in Odoo Accounting.
Owns the Odoo instance and its upgrade roadmap. Wants a properly built addon — real models, ir.model.access.csv security, QWeb reports, API access — that installs cleanly, is maintainable, and survives upgrades across Odoo 17, 18 and 19 rather than a fragile hack.
Buy the license on ecosire.com and download the Bahrain Payroll (GOSI, LMRA) module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Bahrain Payroll (GOSI, LMRA), and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Bahrain GOSI/SIO with Bahraini vs expat contribution rules | Built in as parameterized salary rules, applied automatically by nationality | Possible but you build and maintain every rule yourself | Rarely covers Bahrain-specific splits; often GCC-generic | |
| LMRA work-permit tracking and expiry alerts | Permit fields on employee/contract plus automated-action expiry alerts | Requires custom fields and automation you design from scratch | Occasionally present, quality and fields vary widely | |
| End-of-service (leaving indemnity) settlement | Accrues by service and BHD basic wage; produces a QWeb settlement statement | Hand-coded accrual logic and report you must validate | ||
| WPS salary bank-file export for your Bahraini bank | Configured and tested to your specific bank's WPS format | You reverse-engineer and build the fixed-format exporter | ||
| BHD salary structures and accounting journal integration | Pre-built BHD structures posting to your chart of accounts | Configure structures and mappings entirely yourself | ||
| Delivery model and ownership | Built, installed and supported by ECOSIRE; full source code is yours | You own it but carry all build time, risk and QA | Vendor-owned code; you depend on their roadmap and fixes | |
| Upgrade safety across Odoo 17/18/19 | Versioned addon with a documented 17→18→19 upgrade note | Every upgrade is your maintenance burden | ||
| Role-based security and audit (ir.model.access.csv + record rules) | Configured so HR, payroll and finance see only permitted data | You must design and test the access model |
No. This is a build-to-order localization that ECOSIRE builds, configures and installs for you — it is not an existing apps.odoo.com download. After purchase we scope your entity and hand over a working, tested module on your database. You do receive the full source code to keep once delivered.
Typical lead time is 2–4 weeks from the kickoff call, depending on the number of establishments/CRs, your bank's WPS file format and how much of your existing employee and contract data needs mapping. We install to a staging database first, validate against your real data, then go live on production.
Delivery includes a post-go-live support window covering questions, fixes and adjustments during your first live payroll cycles. Because the module is a versioned Odoo addon, we also provide an upgrade note for Odoo 17 → 18 → 19; extended support and future upgrade work can be arranged as an ongoing plan.
Odoo 17, 18 and 19 are supported. The module is built on the standard hr and hr_payroll framework and is Community-compatible wherever possible; any feature that depends on Odoo Enterprise Payroll is identified during scoping so you know exactly what your edition needs before we build.
Yes. Employees are flagged by nationality, and computed salary rules (@api.depends) apply the correct social-insurance base and rate for Bahrainis versus expatriates. LMRA work-permit details are tracked on the employee/contract record with expiry alerts, and end-of-service leaving indemnity accrues automatically by service length and BHD basic wage, producing a settlement statement on termination.
Yes. The module exports a Wage Protection System (WPS) salary file in the fixed format your Bahraini bank requires, and payroll runs post journal entries to your Odoo Accounting chart of accounts (salaries, GOSI liability, net-pay clearing) so payroll and finance stay reconciled.
Yes. It is delivered as a proper versioned addon with its own __manifest__.py, so it upgrades cleanly across 17/18/19, and it integrates with Contracts, Time Off, Attendance and Accounting. It also exposes data via Odoo's XML-RPC/JSON-RPC API and automated actions for downstream systems or scheduled submissions.
Build-to-order Bahrain payroll for Odoo: GOSI/SIO contributions, LMRA permit tracking, end-of-service settlement and WPS bank file export.