Octibiz
Demo

Durchsucht Website und Dokumentation gemeinsam. Enter zeigt alle Treffer, Esc schließt.

Payroll export

Payroll export screen in Octibiz

Overview

HR → Payroll Export is the one way payroll data leaves the company: hours, working time account, absences and master data per month (or custom period) and brand — as an overview, as a DATEV LODAS file or as a wage type CSV for the payroll office. Every export is logged: who, when, which period, which brand, which file.

What this page explicitly does not do is calculate. No payslip is produced, no tax and no social security computation. The system supplies the figures; the payroll office does the calculation. That line is drawn on purpose and is not meant as a gap.

The figures come from the Working time module (approved attendance days, working time account) and from Absences. Without the Working time module the export stays blocked — the page says so at the top.

Core tasks

Choose month and brand. Month sets the whole calendar month; From and To can also be chosen freely. Brand narrows the export to one brand — empty means all brands you are allowed to run the payroll export for. From the team view of Working time, Go to payroll export leads here with the month selected there.

Check the status. Below the fields you see whether the period is locked for payroll and how many attendance days are not approved yet. Both are checked again whenever period or brand change.

Create the export. If everything is closed, the export is created straight away. If the period is not locked or days are open, a dialog lists the warnings first — only Export anyway creates the file. Open days are missing from the export (only approved days count), and an unlocked month may still change afterwards.

Get the file. The result shows the overview per employee; above it is the download of the file in the chosen format — under exactly the name recorded in the log. For the DATEV and wage type formats, the overview can also be downloaded as CSV.

Look it up in the log. Every run — from this page, via the API/MCP or as the monthly run — is in the log, including the checksum of the file. That lets you prove later which file the payroll office received.

Fields in detail

The form has five inputs. Everything else comes from Working time, Absences and the employee records. The grey name after the label is the API field.

Export period

FieldRequiredValues / formatWhat it does
From fromyesDateFirst day of the payroll period. Month fills it with the first of the month.
To toyesDateLast day, inclusive. It must not be before From, and the period may span at most 366 days — anything longer is no longer a payroll run.
Brand brandIdnoBrandOnly employees and bookings of this brand. Empty = all brands in which you hold the hr.payroll.export permission. A brand without that permission is rejected as if it did not exist.
Format formatnocsv overview · datev DATEV LODAS · wage-types wage types (CSV)Which file is produced. Defaults to csv. datev and wage-types apply per payroll month — the period must lie within one calendar month. With datev the result states explicitly that the format must be finalised with the payroll office.
Export anyway confirmWarningsnoyes/noConfirms the warnings (unlocked period, open days). Without confirmation an export with warnings answers with a conflict and produces nothing. The user interface sets it via the dialog.

What the files contain

Overview (CSV) — per employee employed during the period, even if they left during the year: personnel number, name, type, contract, weekly hours, attendance (hours of approved days), account (change of the working time account), vacation, paid special leave, sick, time off in lieu, unpaid and home office in days.

DATEV LODAS — movement data per personnel number and wage type (industrial hours with decimal comma, days in half steps). Hourly workers get the attendance hours, salaried employees only the change of the working time account, plus paid absences per type.

Wage types (CSV) — the same wage type lines as in the DATEV file, as a table with semicolons, decimal comma and UTF-8 with BOM: personnel number, name, month, wage type, key, value, unit. This is the immediately usable route while the DATEV file has not been agreed with the payroll office.

Freelancers are in none of the files. Home office is working time, not a payroll absence. Working days according to the work schedule and public holidays are counted, not calendar days. The wage type numbers are Working time settings.

Internal sales commission appears as its own wage type line in the wage type CSV and the DATEV file (key affiliate_commission, unit euro, wage type from affiliate.payroll_wage_type, default 300): for employees linked as an internal partner in the partner programme, in the month in which the settlement run was paid — each commission exactly once.

Log

Every export is logged; the log has no input fields, it is the evidence:

ColumnFieldWhat it shows
Run atcreatedAtWhen the export ran.
Periodfrom, toWhich period was handed over.
FormatformatWhich file; on a DATEV run the note externalApprovalPending ("DATEV approval pending").
BrandbrandId, brandScopeThe filtered brand, or all brands of the run.
RowsrowCountHow many employee rows the overview had.
FilefileName, fileChecksumFile name and SHA-256 checksum — so a file at the payroll office can be matched to this run unambiguously.
Warningswarnings, warningsConfirmed, lockedWhich warnings applied at export time and whether someone confirmed "Export anyway". The monthly run only logs them.
Run bycreatedByNameWho exported; for the monthly run it says "Monthly run".

A second run over the same period is not a silent replacement but a second entry.

Monthly run

On the 1st of every month a run prepares the closed previous month — across all brands and exactly once per month. It produces the overview, logs it with file and warnings and notifies everyone holding hr.payroll.export. It sends nothing outside; you fetch the file here as usual.

Settings & permissions

  • Module module.hr, plus the Working time module (module.workforce) — that is where the

calculation happens.

  • Permission hr.payroll.export — export and log. It is cut per brand: whoever holds it in one

brand only exports and sees that brand only (and their own runs). The former Working time export permission has been merged into it; whoever held it now holds this one.

(workforce.period_lock.manage) — which also links here.

  • Sick days and vacation days follow the absence types, see HR settings.

FAQ & troubleshooting

A dialog with warnings appears when exporting. The period is not locked or there are attendance days without approval. Cleanest route: approve the days and lock the month in the team view, then export. If it has to happen earlier, confirm with Export anyway — the log records the confirmation.

The hours look too low. Only approved attendance days count. The number of open days is shown below the fields.

A brand cannot be exported ("not found"). You do not hold the hr.payroll.export permission in that brand.

DATEV or wage types report "per payroll month". Both formats apply to exactly one calendar month. Choose the month or a period within one month.

An employee is missing from the export. Check period and brand: included is whoever was employed during it and belongs to the brand. Freelancers are deliberately not included.

A row shows a long letter code instead of the personnel number. Then no personnel number is stored on the employee. Add it, otherwise the payroll office cannot match the row.

Can we produce the payslips directly? No. The module supplies the figures; the calculation stays with the payroll office.

hr.payroll · Available from version 0.5.0