How to implement QR Code-based Employee Check-in / Check-out in ERPNext?

Hi everyone,

I’m looking to implement a QR Code-based attendance system for employee check-in and check-out using ERPNext (v16, HRMS module). I want to understand the proper approach before building it.

What I want to achieve:

  • Each employee gets a unique QR code

  • When scanned, it automatically logs an Employee Checkin record with IN or OUT log type

  • Ideally works from a mobile device or a wall-mounted tablet

Questions:

  1. Does ERPNext / Frappe HRMS have any built-in support for QR code check-in, or does it need to be custom built?

  2. If custom, what is the recommended approach?

    • Generate a QR code per employee (encoding employee_id or a token)

    • Build a public/guest page that reads the QR scan and calls a whitelisted API to create Employee Checkin

    • Handle IN / OUT toggle logic (alternate on each scan, or time-based)

  3. What API endpoint should be called to create an Employee Checkin record programmatically? Is frappe.client.insert the right method or is there a dedicated HRMS API?

  4. How should authentication be handled for the scan page — since the person scanning may not be logged in?

  5. Are there any existing apps or GitHub repos in the Frappe ecosystem that already solve this?

Setup:

  • ERPNext: v16

  • HRMS: v16

  • Frappe: v16

  • Self-hosted

Nice idea.

Here’re my views:

  1. Mount a camera/scanner on wall.
  2. Use/Modify Frappe HR PWA to place a QR generator for checkin. QR must be generated based on time and day and other randomization to eliminate possibility of fake QRs being presented. Each QR must be a time sensitive QR active only for a few seconds so that you can avoid misuse. This also solves authentication issue as user is using frappe hr app.
  3. User places their mobile screen infront of scanner which will call required apis. I suggest use HRMS apis.
  4. Only drawback is the scanner must be integrated or connected to one device.

I would still like to learn why you want to use QR based approach. Why not use simple checkin button already built in Frappe HR PWA ?

We switched from biometric attendance to PWA based attendance and we geo-fenced it. This solves the complex integration issue which existed with biometric system.

If you still want to use QR based system, another better approach would be to create QR in wall mounted device and use/extend Frappe HR app to add a QR scanner and call HRMS Api to create checkin records.

See we have already geofenced that , but the issue is that in our company there is friday off and sunday is wfh so now i am confused how can i do this in frappe hr , as 2 shift is not allowed so how can we do it , this is the real reason i was asking for qr , manually changing roster is not the efficient way as there are many employess how can we solve this?