Payroll

This page is where you manage payroll runs: calculate monthly payslips for all employees, generate PDF payslips, and export pay data to your accountant or payroll office. It covers the whole flow from creating a new run to emailing the final documents.

What can I do here?

  • Create new payroll runs for a specific year/month
  • Automatically compute payslips — this includes employees with status Active, Probation, or On Leave
  • Review computed payslips (worked hours, overtime, absence days, gross pay)
  • Generate PDF payslips and export data in various formats
  • Email a payroll run to external recipients (e.g. your tax advisor)
  • Manage recipients for email delivery
  • View the history of every payroll export email sent
  • Cancel a payroll run that is no longer needed
  • Publish a completed run's payslips to the employee portal (a standalone application for staff, in preparation), so every employee can view their own payslip there once the portal is reachable
  • Revoke portal visibility for individual payslips at any time
  • Recompute a completed run that dates from before the gross pay calculation was corrected, and review the difference per payslip
  • Reset a payroll run that got permanently stuck in "Processing" after a technical interruption
Rebuilt excerpt of the view: /hr/payroll

Step by step

  1. Create a new payroll run
    Open the "Payroll Runs" tab → "New Payroll Run" → choose year and month, optionally add notes → "Save". The run starts in "Draft" status.

  2. Compute payslips
    Click a run that is in "Draft" status to open its detail view → "Compute Payslips". The system reads each active employee's current contract salary, their approved work/overtime hours, their approved paid absences, and their approved supplements for the selected month, and calculates gross pay from that. On success the status automatically switches to "Completed". If the calculation fails, the status reverts to "Draft".

  3. Generate PDFs and export
    For a completed run: "Generate PDFs" creates the individual payslip documents; the export buttons let you download the data in the available formats (e.g. DATEV, CSV) as well.

  4. Send by email to your tax advisor/payroll office
    For a completed run, choose "Send via Email", check the active recipients you want, and confirm with "Send". The delivery is logged in the "Email Log" tab.

  5. Publish payslips to the employee portal
    For a completed run, choose "Publish to Portal". All payslips in that run are released at once to the employee portal of the employee they belong to - they become visible there once the portal is reachable (in preparation) - and every employee gets a notification. In the payslip list, the "Portal" column shows whether an individual payslip is currently "Visible" or "Hidden" - the eye icon next to it toggles visibility for that one payslip, independently of the others in the same run. A run that is not yet completed cannot be published.

  6. Recompute an older run (only when flagged)
    If a completed run still carries the old, faulty gross pay calculation, a yellow notice appears in its detail view. Choose "Review difference" there first: the system recomputes the run as a trial and shows the previous amount, the new amount and the difference for each payslip - nothing is written. Only "Apply correction" writes the new amounts onto the payslips. Inform your HR department before you send corrected PDFs or exports again afterwards - the documents already sent carry the old amounts. Every changed payslip then stays listed under "Corrections" with its previous amount, new amount and difference.

  7. Reset a stuck run
    If a run stays in "Processing" permanently (for example because the calculation was interrupted by a system restart), open its detail view and choose "Reset". The run switches back to "Draft" and can be recomputed. If the calculation is actually still running, the system rejects the action with a hint - try again shortly after.

flowchart LR
    A[Draft] -->|Compute Payslips| B[Processing]
    B -->|success| C[Completed]
    B -->|error| A
    B -->|Reset, if stuck| A
    A -->|Cancel Run| D[Cancelled]
    C -->|Cancel Run| D
    B -->|Cancel Run| D

Fields explained

Field Meaning Notes/Impact
Year Year of the pay period Required when creating a run
Month Month of the pay period Required when creating a run
Notes Free-text note about the run Optional, shown in the run list
Period Year-month of the run Displayed in the list, e.g. "2026-07"
Payslips Number of payslips contained in the run Only populated after "Compute Payslips"
Run Date Date the calculation completed Empty while the run is still in Draft
Employee Employee name on each payslip —
Department Employee's department at calculation time —
Worked Hours Sum of logged work hours for the period Only approved time entries for the month; entries still in "Draft" are ignored
Overtime Hours Sum of logged overtime hours for the period Only from approved time entries; paid at a 1.25x surcharge on the hourly rate
Absence Days Number of paid absence days in the period Only approved absences of a paid absence type count
Supplements Sum of the approved supplements paid out in this run From "Compensation" → "Supplements"; only supplements with status "Approved"
Gross Pay Calculated gross pay for the month Monthly salary (annual salary/12) + overtime surcharge + approved supplements; 0 € if no active contract salary is on file
Name (Recipient) Name of the email recipient Required
Email (Recipient) Recipient's email address Required
Company Recipient's company, e.g. tax office Optional
Role Recipient's function See "Values & status"
Export Format Format the recipient receives the data in DATEV or CSV
Active Whether the recipient should currently receive emails Inactive recipients don't appear in the send selection
Notes (Recipient) Free-text note about the recipient Optional
Portal Visibility of the payslip in the employee portal (in preparation) "Visible" or "Hidden"; toggled with the eye icon, requires the corresponding permission
Corrections Before/after trail of a recompute Appears only once a run has actually been recomputed; shows previous amount, new amount and difference per payslip

Values & status

Payroll run status

Label Plain-language meaning What happens then
Draft The run was created but not yet computed Can be computed or cancelled
Processing Calculation is currently running Brief intermediate status during computation. If a run gets stuck here, it can be brought back to "Draft" via "Reset" or cancelled directly
Completed Payslips were computed successfully PDFs, export, and email sending become available; can still be cancelled
Cancelled The run was discarded No further actions possible

Recipient role

Label Plain-language meaning What happens then
Tax Advisor External tax advisor Receives the selected export data by email
Payroll Office External payroll office Receives the selected export data by email
Accountant Internal or external accounting Receives the selected export data by email
Other Any other role not covered above Receives the selected export data by email

Email log status

Label Plain-language meaning What happens then
Queued The email was created but not yet sent Processed in the background
Sent The email was delivered successfully No further action needed
Failed Sending failed for a technical reason An error message is shown in the log
Bounced The recipient's server rejected the email An error message is shown in the log

FAQ

Why does a payslip show 0 € gross pay?
The employee has no active contract salary on file for that period. Without a contract salary no base pay can be calculated.

Can I edit a completed payroll run afterward?
Not via "Compute Payslips" - that button applies to drafts only, so a completed run cannot change unnoticed on a second click. There is exactly one exception: runs that still carry the old, faulty gross pay calculation. Those are flagged with a yellow notice in their detail view and can be recomputed there (see step 6). Otherwise only cancelling remains, and cancelling is final.

How do I know a run carries the wrong amounts?
The payslips themselves look perfectly ordinary - that is precisely the problem. Only runs that were completed before the gross pay calculation was corrected are affected. The system has identified and flagged those runs; their detail view shows the yellow notice "This run still carries the wrong amounts". No notice means the run is fine.

What exactly changes in a recompute?
The same three points that were corrected for new runs: paid absence days are no longer compensated twice, unapproved time entries no longer count, and approved supplements are added. Gross pay can therefore go down or up. The run stays completed; its status does not change.

Can a recompute pay a supplement twice?
No. A supplement that the recompute assigns to this run is bound to it and set to "Processed" in the same step. A later payroll run for a following month will not find it any more.

What happens to a payslip whose employee has been deleted?
It is skipped by the recompute and left unchanged. Without an employee record there is no contract salary to derive a new amount from - recomputing it to 0 would not be a correction but an invented claim for repayment.

What happens if the calculation fails partway through?
The run automatically reverts to "Draft" so you can retry the calculation once the cause is fixed.

Who can see the emails that were sent?
Only the active recipients you selected in the "Recipients" tab receive the email. The send history is visible to any authorized user in the "Email Log" tab.

Which absences are included in the calculation?
Only approved absences of an absence type marked "paid" that fall within the given month.

Do paid absence days increase gross pay?
No. Paid absence days are already covered by the monthly salary. The payslip only shows them as a separate "Absence Pay" line and deducts the same amount from base pay - base pay and absence pay together add up to the monthly salary again. An employee on a 60,000 € annual salary with five paid absence days therefore receives 5,000 € gross, not more.

Why is a time entry not counted?
A payroll run only includes approved time entries. Entries still in "Draft" are ignored - have them submitted and approved before you compute the run.

How does a supplement reach the payslip?
Create the supplement under "Compensation" → "Supplements" and have it approved. The next payroll run adds it to gross pay, shows it as a separate line on the payslip, and then sets it to "Processed" so it is not paid out again in a later month. Supplements with status "Pending" are ignored.

Who can see payslips published to the portal?
Each employee only ever sees their own payslips in their own portal - never a colleague's. Publishing therefore takes effect per employee, not as a shared, browsable list.

Can I hide a payslip again after publishing it?
Yes. The eye icon in the "Portal" column toggles visibility for a single payslip at any time, regardless of the run's status and without affecting the other payslips in that same run.

What do I do if a run stays stuck in "Processing" permanently?
This can happen after a technical interruption of the calculation (e.g. a restart while the run was in progress). Open the run and choose "Reset" - it switches back to "Draft" and can be recomputed. This action requires the "Edit Payroll" permission; without it, the action is not offered. If the calculation is actually still running, the system rejects the action - wait a moment and try again in that case. Alternatively, the stuck run can also be cancelled directly.