Skip to main content
Biometric Attendance Device Integration (ZKTeco) — Connect ZKTeco fingerprint/face devices to Odoo HR Attendance with automat — 1/1Illustrative preview

Connect ZKTeco fingerprint/face devices to Odoo HR Attendance with automatic employee sync and real-time punch download.

What is Biometric Attendance Device Integration (ZKTeco)?

Connect ZKTeco fingerprint/face devices to Odoo HR Attendance with automatic employee sync and real-time punch download. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Direct ZKTeco device connection over TCP/IP using the pyzk protocol (SpeedFace, MB, iClock, K-series and compatible terminals)
Automatic scheduled punch download via a configurable ir.cron automated action — pull every 5, 15 or 60 minutes with no manual export
Raw device logs converted into native hr.attendance check-in/check-out records so every standard Odoo attendance and payroll feature keeps working
Employee-to-device sync: push Odoo employees onto terminals by device user ID, so new hires are enrolled automatically on record creation
Configurable device-user-ID to Odoo employee mapping for cases where badge numbers don't match Odoo's internal IDs
Multi-device support: manage any number of terminals from a single Odoo Devices menu, each with its own IP, port and status
Multi-location, multi-time-zone support — each device carries its own tz so punches map to the correct UTC instant regardless of site
Duplicate-punch de-duplication and check-in/check-out pairing computed with @api.depends logic to prevent double or dangling records
Offline-device resilience: failed pulls are logged and retried on the next cron cycle; already-synced punches are never re-imported
Per-device connection test and live status indicator (online / offline / last-sync timestamp) surfaced in the Odoo UI
Security via ir.model.access.csv and record rules — HR admins manage devices; employees never see device credentials or config
Encrypted storage of device connection details and optional comm-key, kept out of standard logs
QWeb reports for attendance summaries and punch-exception logs (missing check-out, duplicate, unmapped user) — printable or emailable
Sync activity log with per-run counts and error detail for auditing and troubleshooting
Optional two-way enrollment: create or update an employee in Odoo and have them provisioned across selected terminals via the ORM/XML-RPC
Compatible with Odoo 17, 18 and 19 on both Community and Enterprise; Timesheets/Payroll wiring available on Enterprise

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Your ZKTeco fingerprint and face-recognition terminals already capture every clock-in and clock-out at the door — but that data is stranded on the device while your team re-keys hours into Odoo or reconciles a CSV export at month-end. This build-to-order module closes that gap. ECOSIRE designs, builds, installs and supports a custom Odoo add-on that talks directly to your ZKTeco hardware over TCP/IP (using the proven pyzk protocol), syncs your Odoo employees onto the devices, and pulls raw punches into Odoo HR Attendance automatically — no manual export, no spreadsheet, no double entry.

This is not a generic apps.odoo.com download. We build the connector around your exact device models, network topology, employee-numbering scheme and shift rules, then install it on your Odoo 17, 18 or 19 instance and hand it over with documentation, training and a support window. Punches land as native hr.attendance records, so every downstream feature you already rely on — attendance dashboards, worked-hours reports, and Timesheets or Payroll integration on Enterprise — keeps working exactly as designed.

Under the hood the module follows Odoo conventions end to end: device connections are modelled as models.Model records with encrypted credential fields; a scheduled automated action (ir.cron) polls each terminal on the interval you choose and downloads new attendance logs; check-in/check-out pairing is computed with @api.depends-driven logic that respects each site's time zone so a punch at a device in Dubai and one in Karachi both map to the correct UTC instant in Odoo. Access is locked down through ir.model.access.csv and record rules so HR admins see device config while regular employees never do. Views are delivered in standard XML/OWL, and you get QWeb-based attendance and exception reports you can print or email.

Because we build it to order, the connector handles the real-world messiness that off-the-shelf modules ignore: multiple devices at one location, multiple locations across time zones, employees enrolled on more than one terminal, duplicate-punch de-duplication, offline-device retry, and mapping a device's internal user ID back to the right Odoo employee even when your badge numbers don't match Odoo's default IDs. Where you need to push data the other way — enrolling a new hire on every terminal the moment they're created in Odoo — we wire that through Odoo's ORM and, where the network requires it, XML-RPC/JSON-RPC. The result is a single source of truth: what the door records is what Odoo pays.

What you get

  • Custom Odoo module source code (fully commented) with a valid __manifest__.py declaring dependencies (hr, hr_attendance) and a documented external Python dependency on pyzk
  • Installation and configuration on your Odoo 17, 18 or 19 instance, including device IP/port setup, cron interval tuning and time-zone mapping for each location
  • Employee-to-device mapping configured against your actual numbering scheme and a verified first end-to-end sync from a live terminal
  • Admin & HR user guide (PDF) plus a short screen-recorded walkthrough covering device setup, re-sync, and reading the punch-exception report
  • A live training/handover session for your HR and IT team, run over screen-share, covering day-to-day operation and troubleshooting
  • Post-launch support window (bug fixes and adjustments) with an agreed SLA, plus a documented upgrade path for future Odoo versions
  • Source in a Git repository you own, with a README covering server/network prerequisites (TCP reachability to each device, port 4370) and rollback steps

Who this is for

HR Administrator with existing ZKTeco hardware

Already runs fingerprint/face terminals at the door and is tired of exporting CSVs and re-keying hours into Odoo each pay period. Wants punches to land in Odoo HR Attendance automatically so month-end payroll reconciliation is a review, not a re-entry job.

Operations manager across multiple sites

Oversees several branches or warehouses — often in different time zones — each with its own device. Needs one Odoo view of who clocked in where, with punches mapped to the correct local time and consolidated into a single attendance record set.

IT / systems administrator

Owns the Odoo server and the office network. Cares about a clean, upgrade-safe module that follows Odoo conventions, stores device credentials securely, and won't break on the next Odoo version. Wants the connection modelled properly with cron scheduling and record-rule security rather than a fragile script.

How Biometric Attendance Device Integration (ZKTeco) Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Direct pull from your specific ZKTeco device modelsIncludedPartial supportPartial supportNot included
Automatic scheduled punch download (ir.cron), no CSV exportIncludedPartial supportPartial supportNot included
Multi-device, multi-location, time-zone-aware punch mappingIncludedPartial supportNot includedNot included
Device-user-ID to Odoo employee mapping for mismatched badge numbersIncludedPartial supportNot includedNot included
Two-way employee enrollment onto terminals from OdooIncludedPartial supportNot includedNot included
Built, installed and configured for you on Odoo 17/18/19IncludedNot includedNot includedNot included
Post-launch support window with SLA and documented upgrade pathIncludedNot includedPartial supportNot included
Source code in a Git repo you own (no lock-in)IncludedIncludedNot includedNot included

Frequently Asked Questions about Biometric Attendance Device Integration

How long does delivery take, and what happens after I buy?

This is a build-to-order module, not an instant download. Typical lead time is one working week from purchase, depending on how many device models, sites and time zones are involved. After you order, we schedule a short scoping call to confirm your ZKTeco models, network setup, employee numbering and target Odoo version (17, 18 or 19). We then build the module, install it on your instance, run a verified end-to-end sync from a live terminal, and hand over with docs and training. You'll get milestone updates throughout.

What support and updates do I get after go-live?

Every build includes a post-launch support window with an agreed SLA for bug fixes and adjustments after handover. You receive the full source in a Git repo you own, so there's no lock-in. When you later upgrade Odoo (for example 18 to 19), we provide a documented upgrade path and can quote a small migration pass if the ORM or device libraries change. Ongoing support and enhancement retainers are available if you'd like us to keep maintaining it.

Which ZKTeco devices and connection methods are supported?

We support ZKTeco terminals reachable over TCP/IP that speak the standard protocol used by the pyzk library — this covers most SpeedFace, MB, iClock, F-series and K-series fingerprint and face devices (default port 4370). During scoping we confirm your exact models and firmware. The Odoo server needs network reachability to each device; for remote sites we'll advise on VPN or a local relay so punches sync reliably.

Will this work with my existing Odoo Attendance, Timesheets and Payroll?

Yes. Downloaded punches are written as native hr.attendance records, so the standard Odoo Attendances app, worked-hours computations and dashboards work unchanged. On Odoo Enterprise we can wire the attendance data into Timesheets and Payroll so approved hours flow through to pay. The module depends only on the standard hr and hr_attendance apps, keeping it upgrade-friendly.

How does it handle multiple devices, locations and time zones?

Each device is its own configuration record with its own IP, port and time zone. A scheduled automated action polls every device on your chosen interval and imports only new punches. A device punch is interpreted in that device's local time zone and stored at the correct UTC instant in Odoo, so a terminal in Dubai and one in Karachi reconcile cleanly. Employees enrolled on more than one terminal are de-duplicated so you never get double check-ins.

My badge numbers don't match Odoo's employee IDs — is that a problem?

No. The module keeps an explicit mapping between each device's internal user ID and the corresponding Odoo employee, which we configure against your real numbering scheme during setup. Punches from an unmapped device user are logged as exceptions in a QWeb report rather than silently dropped, so you can spot and fix enrollment gaps quickly.

Request a quote

Biometric Attendance Device Integration

Connect ZKTeco fingerprint/face devices to Odoo HR Attendance with automatic employee sync and real-time punch download.

  • Direct ZKTeco device connection over TCP/IP using the pyzk protocol (SpeedFace, MB, iClock, K-series and compatible terminals)
  • Automatic scheduled punch download via a configurable ir.cron automated action — pull every 5, 15 or 60 minutes with no manual export
  • Raw device logs converted into native hr.attendance check-in/check-out records so every standard Odoo attendance and payroll feature keeps working
  • Employee-to-device sync: push Odoo employees onto terminals by device user ID, so new hires are enrolled automatically on record creation

Request a Quotation

Tell us about your Biometric Attendance Device Integration requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.