v16.20.0

frappe/hrmsv16.20.0Sep 23, 2026by frappe-pr-bot

Upgrading?

AI Summary

This release introduces liability accounting for employer contributions in salary components and refines Holiday List Assignment logic for leave, payroll, and attendance. It addresses several bug fixes related to mobile attendance, leave application access, and report accuracy, while restricting goal updates to specific roles.

Key Highlights

  • Employer contribution components now include a Liability Account field, recording expenses and payables in separate Journal Entries.
  • Holiday List Assignment records now use the earliest assignment for dates before a specific assignment starts.
  • Users with read access to a Leave Application can now access its linked Employee record, even if restricted from others.
  • The 'Salary Register' report now includes an optional filter for employer contributions.

New Features

  • Liability Account field added to Employer contribution components.
  • Optional filter for employer contributions in the Salary Register report.

Full Release Notes

## Features
* Employer contribution components in **Salary Component** now include a _Liability Account_ field, and payroll submission records their expense and payable in a separate **Journal Entry**. When employee-based payroll accounting is enabled, the payable is recorded for each employee. (https://github.com/frappe/hrms/pull/5274)

## Bug Fixes
* Uses **Holiday List Assignment** records to select holiday lists for leave, payroll, and attendance dates, using the earliest assignment for dates before any assignment starts. (https://github.com/frappe/hrms/pull/5284)
* Keeps the latest attendance record available while the mobile app refreshes, so an employee’s first check-out attempt is less likely to be recorded as a check-in. (https://github.com/frappe/hrms/pull/5282)
* Allows users who can read a specific **Leave Application** to access its linked **Employee** record, even when their access to other employees is restricted. (https://github.com/frappe/hrms/pull/5281)
* Adds an optional filter to include employer contributions in the "Salary Register" report. (https://github.com/frappe/hrms/pull/5299)
* Delays closing half-day **Attendance** until the shift has ended and check-ins have synced, so recorded work can update the attendance instead of being marked absent early. (https://github.com/frappe/hrms/pull/5304)
* Creating a **Payment Entry** from an **Employee Advance** without a bank or cash account now shows an error pointing to _Mode of Payment_ or the **Company** account settings, instead of crashing. (https://github.com/frappe/hrms/pull/5305)
* Restricts updates to **Goal** progress and status to the assigned employee and users with HR or System Manager roles. (https://github.com/frappe/hrms/pull/5307)
* The "Employee Leave Balance" report uses recorded leave days for **Leave Application** entries within the selected period, so _Leave(s) Taken_ matches the ledger even if the holiday list changes afterward. (https://github.com/frappe/hrms/pull/5309)

**Authors**: @deepeshgarg007, @iamkhanraheel, @asmitahase
**Reviewers**: @deepeshgarg007, @iamkhanraheel

<details>
<summary>AI content</summary>

 For these release notes, we used an LLM (OpenAI gpt-6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). 

Changes with the following labels were excluded:
- skip-release-notes

Changes with the following types were excluded:
- style
 - ci
 - test
 - build
 - chore
 - refactor
 - docs

</details>

Related Repositories