Employment Hero Payroll Bridge
Post finalised Employment Hero pay runs straight into your Odoo general ledger, once and balanced.
Store price is USD 157 all-in: installing this also pulls the 2 paid ERP Heritage modules it depends on.
Why this module
Employment Hero Payroll Bridge
One balanced entry per pay run
The importer checks debits against credits on the figures Odoo actually stores and refuses to post an entry that does not balance. A sub cent rounding drift is absorbed on a rounding account you nominate, a real imbalance is rejected loudly, so the general ledger always ties out to the finalised pay run.
Idempotent by design, three deep
Each entry is stamped with its pay run id. A pre scan filters runs already imported, a per run re check guards concurrent jobs, and a database unique constraint on company and pay run id is the last line. A manual click, a re run and the weekly cron all land on exactly one entry.
Maps your codes, not ours
Pay run journal items resolve to Odoo accounts by their Employment Hero account code, falling back to the native Odoo code when none is set. Tax codes attach the matching tax report tags so BAS and VAT reporting stays intact, without generating extra tax lines that would unbalance the entry.
Day in the life
Friday pay run, Monday ledger, zero typing
Payroll finalises the weekly run on Friday afternoon. Over the weekend the scheduled job pulls every finalised run paid after your cut off date, matches each journal line to the right account and tax tag, and posts one balanced entry per run into the general journal you chose. Monday morning the ledger already reflects wages, PAYG and superannuation. Re running the job, or clicking import by hand, changes nothing, because the pay run is already stamped and will not import a second time. A run with an unmapped account or a non numeric amount is skipped on its own and logged, the rest of the batch still posts.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
Re importing is safe. A pre scan on the pay run id, a per run re check, and a database unique constraint on company plus pay run id mean a manual click, a re run and the cron all converge on one entry.
One bad pay run never aborts the batch. An unmapped account, a non numeric amount or a locked period rolls back inside a savepoint and is logged, then the importer moves on and the valid runs still post.
A non numeric or non ASCII amount raises rather than silently zeroing a payroll line, so a wrong but balanced looking entry can never be posted. An empty value stays a legitimate zero line.
Debits and credits are checked on the rounded figures Odoo stores. A sub cent drift is absorbed on your nominated rounding account, a genuine imbalance beyond the rounding bound is refused.
A pay run in a foreign currency posts as a multi currency move, converted to company currency for debit and credit and carrying the original figure as amount currency, with both the company and foreign sides checked to balance.
The shared connection retries transient failures and rate limit responses with exponential backoff and jitter, honours a Retry-After header, and refreshes the OAuth token before it expires, so a flaky API call or a 429 does not lose the run.
Pay run lists are paginated through the shared client, which walks every page so a large history of finalised runs is read in full, not just the first page.
Each bridge belongs to one company, posts into that company's journal, and resolves accounts and taxes scoped to it, with record rules enforcing the company boundary on connections and journals.
An optional cut off date leaves historical runs untouched, so only pay runs paid after the date you set are ever imported.
When an account carries no Employment Hero code, the importer falls back to matching the native Odoo account code, so a clean chart of accounts often needs little extra mapping.
What is inside
Built to do the job, end to end.
- Pay run bridge. A per company record naming the payroll connection to pull from, the general journal to post into, an optional cut off date and a rounding account. It tracks how many entries it has imported and opens them in one click.
- Account, tax and stamp fields. An Employment Hero account code on the account, an Employment Hero tax code on the tax, and a pay run id stamp on the journal entry. The eh_hero prefix keeps these distinct from Enterprise localisation fields so both can coexist.
- Journal importer service. The import flow lives in a plain service, not the model, so it is fully unit tested against a scripted payload. It paginates pay runs, keeps the finalised and not yet imported ones, resolves each line and builds one balanced posted move per run.
- Scheduled job. A weekly scheduled action imports finalised pay run journals for every configured bridge, per company, isolating each bridge so one failure does not stop the rest.
- Payslip detail records. An optional employee level payslip pull stores gross, tax, deductions, superannuation and net with an earnings and deductions breakdown for reference and reporting, separate from the accounting entry. Mapping source paths are tunable for your payload.
- Shared connection engine. The bridge sits on the suite connection layer, which provides retry with backoff, rate limit and Retry-After handling, OAuth token refresh and pagination, so the import inherits resilient transport for free.
Honest about the edges
What this does not do, so nothing surprises you.
- This is a one direction import. It reads finalised pay runs from Employment Hero and posts the accounting side into Odoo. It does not write anything back to the payroll platform and does not run payroll inside Odoo.
- Import is pull based on a schedule and on demand. There is no inbound webhook listener, so a new finalised pay run is picked up on the next scheduled run or manual import, not the instant it is finalised in the payroll platform.
- The default scheduled job runs weekly. Change the interval on the scheduled action if you need pay runs pulled more often.
- Accounts and taxes must exist in Odoo and carry the matching Employment Hero code, or a native account code the importer can fall back to. An unmapped account or an unmatched tax code skips that pay run with a clear error rather than guessing.
- Only finalised pay runs are imported. A draft or in progress run is ignored until it is finalised in the payroll platform.
- A pay run that does not balance in its own currency beyond a small rounding tolerance is refused, not forced. A genuine imbalance is a source data issue to fix in the payroll platform.
- The employee level payslip pull ships with mapping source paths aligned to a typical payload. Confirm or adjust the field paths against your own account before relying on the payslip detail records.
Employment Hero Odoo integration, KeyPay Odoo accounting, import pay run journal Odoo, Odoo payroll journal entry, Employment Hero payroll bridge, Odoo 17 payroll accounting, post pay run to general ledger, wages PAYG superannuation journal Odoo, idempotent payroll import, multi company payroll import Odoo, account and tax code mapping payroll, Odoo Community payroll bridge no Enterprise
Need this fitted to the way you work?
ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.
We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.
Languages
Available in 19 languages
The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
Real-time fiscalisation of customer invoices and credit notes with the Mauritius Revenue Authority e-Invoicing (E...
The Canada country pack for the ERP Heritage Employment Hero integration
A dependency free asynchronous job queue that runs long running and fan out work out of band of the request that...
Post Irish payslips to the general ledger on the Irish chart of accounts
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 4370 |
| Technical Name |
eh_hero_payroll_bridge |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module