
Menu
Products
Docs
Resources
Compliance
Company
Support
Biometric device sync
Connect your fingerprint / face devices to CozyHR in a few steps, and optionally import everyone enrolled on a device to kick off onboarding.
Step 1. Download & install the app
Download the app for the computer that stays on in your office (same network as the devices):
Download for your OSBuilds for macOS, Windows and Linux (auto-detected).
Step 2. Open it the first time (security prompt)
The app isn't code-signed yet, so your OS shows a one-time “unverified developer” warning. This is expected — allow it once:
If you see “Apple could not verify… Not Opened”, click Done, then go to System Settings → Privacy & Security, scroll down, and next to the blocked app click “Open Anyway” → confirm. (On macOS 15 the old right-click → Open trick is gone — use this Settings step.)
If “Windows protected your PC” appears, click More info → Run anyway.
Make it executable (right-click → Properties → Permissions → “Allow executing”), then open it.
Step 3. Connect it to CozyHR
In the app, fill in:
- CozyHR URL — already set to your workspace.
- API key — create one in Developers → API keys with scopes
attendance.read,attendance.write,employees.write, paste it in. - IN / OUT device IPs — your two devices.
Click Save, then Test devices — you should see each device connect with its user count.
Step 4. Import your people (onboarding)
Starting fresh? Click Import users — everyone enrolled on the device (their ID + name) is created in CozyHR as draft employees. Their device User ID becomes the Employee Code, so attendance matches automatically. Finish each profile later in the workspace.
Step 5. Start syncing
Click Sync punches now for an immediate pull, then Start auto-sync to keep it running in the background (every minute). Leave the app open on that computer.
Step 6. Verify
Open Time → Attendance— punches appear there. Anything whose ID doesn't match an employee waits safely in Time → Failed push inbox.
- Device won't connect — the computer must be on the same network as the devices (ZK devices use TCP port 4370).
- Some punches skipped — that ID has no matching Employee Code. Run Import users, or map in Time → Biometric mappings.
- Key error — the API key is wrong or missing a scope (needs attendance + employees).
Running a headless server instead of a desktop? A command-line version is available here.