| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Discuss (mail) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 2027 |
| Technical Name |
eh_hr_attendance_payroll_export |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Discuss (mail) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 2027 |
| Technical Name |
eh_hr_attendance_payroll_export |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
Payroll Export for Attendance
Turn captured attendance into the exact timesheet CSV your payroll system imports, with a full audit trail of every file you generate.
Why this module
Payroll Export for Attendance
Five formats, one wizard
Pick Generic, Xero, KeyPay, Employment Hero, or MYOB and the wizard writes the exact header row and column order that vendor's bulk timesheet import expects. The operator uploads the file through the vendor's own portal once per pay cycle.
See it before you commit
Dry run is on by default. Run it to see row count, employee count, total hours, and the first lines of the file without saving anything. Turn dry run off only when the numbers look right, and the file is saved and downloadable.
Every export is on the record
Each committed export becomes a run record with provider, date range, totals, who generated it and when, plus the file bytes themselves. Re-download a past file at any time. Auditors get read-only access to the full history.
Day in the life
Friday pay run, three minutes
Payroll opens Export payroll, picks Xero and the fortnight's dates, and clicks Run with dry run on. The preview shows 42 rows across 18 employees and 612.5 total hours, with the first lines of the Xero timesheet file. The numbers match the roster, so they switch dry run off, run again, and download payroll_xero_2026-06-01_to_2026-06-14.csv. They upload it through the Xero portal. The run sits in Past exports with their name and timestamp, ready to re-download if Xero rejects a line and they need the source file again.
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.
Two or three punches on the same day for one employee aggregate into a single row, with hours summed, the earliest check-in and latest check-out kept. A morning plus afternoon shift becomes one eight-hour line, not two.
Rows with no check-out are excluded by default so a half-finished shift does not skew totals. Turn on Include open attendances and elapsed hours are counted up to the date-to cutoff, never past it.
A date-to earlier than date-from is rejected by a model constraint before any file is written, so you cannot generate a backwards or empty-by-accident export.
A range with no matching attendance still emits a valid file with the header row, so the vendor import sees a well-formed file rather than an error.
The wizard scopes attendance to the selected company, and a per-company record rule fences run records so one company's payroll history is never visible to another.
A dry run computes the full file and preview but creates no run record and saves no bytes, so previewing repeatedly leaves no trace in the audit log.
What is inside
Built to do the job, end to end.
- The export wizard. Provider, date range, optional employee filter, an include-open-attendances switch, and a dry-run switch. Defaults to your company's configured provider and a sensible fortnight window. Shows row count, employee count, total hours, and a file preview after each run.
- Five exporter formats. Generic CSV carries the full neutral column set. Xero writes employee, date, hours, earnings rate, and a tracking column. KeyPay and Employment Hero write email-keyed time-bracket rows with cost centre. MYOB writes Card ID, date, pay item, hours, and job, day by day. All files are UTF-8 with a BOM for clean spreadsheet opening.
- Export run audit log. Every committed export is an eh.hr.payroll.export.run record carrying provider, date range, totals, generator, timestamp, and the file as an attachment, with mail.thread tracking on the key fields. Re-run the same range and the new run sits beside the old one rather than overwriting it.
- Settings and roles. Per-company default provider and a retention-days value live in Settings. Three roles ship: managers and admins run exports, auditors get read-only access to the run history. A retention sweep method is provided to trim runs past the horizon.
Honest about the edges
What this does not do, so nothing surprises you.
- CSV files only. The module does not maintain live API connectors to any payroll vendor. You upload each generated file through the vendor's own portal.
- Analytic and project carry-through into the file appears only when the separate attendance job-cost module is installed, which adds the analytic field to attendance records. Without it those columns are written empty.
- MYOB Card ID matches on the employee work email in this build. A dedicated per-employee external payroll reference field is not provided here, so set up your MYOB match on email or map it during the vendor import.
- Retention is configurable per company and a sweep method ships, but this build does not register a scheduled job to run it automatically. Trim past runs by invoking the sweep or deleting old runs manually.
- Hours come straight from attendance check-in and check-out durations. The module does not split ordinary versus overtime, apply award interpretation, or compute pay rates. That is the payroll system's job.
- Requires the ERP Heritage attendance base module and Odoo 17 Community hr_attendance.
payroll export Odoo 17, attendance to payroll CSV, timesheet CSV export, hr_attendance payroll export, Xero timesheet import CSV, KeyPay timesheet export, Employment Hero timesheet CSV, MYOB timesheet import, generic payroll CSV export, pay cycle attendance export, multi-company payroll export, payroll export audit trail, split shift aggregation payroll, Odoo 17 Community payroll
Please log in to comment on this module