- Home
- Apps
- SaaS Tools
- Biometric Attendance Device Integration (ZKTeco)
Illustrative previewConnect 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
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 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
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Direct pull from your specific ZKTeco device models | Included | Partial support | Partial support | Not included |
| Automatic scheduled punch download (ir.cron), no CSV export | Included | Partial support | Partial support | Not included |
| Multi-device, multi-location, time-zone-aware punch mapping | Included | Partial support | Not included | Not included |
| Device-user-ID to Odoo employee mapping for mismatched badge numbers | Included | Partial support | Not included | Not included |
| Two-way employee enrollment onto terminals from Odoo | Included | Partial support | Not included | Not included |
| Built, installed and configured for you on Odoo 17/18/19 | Included | Not included | Not included | Not included |
| Post-launch support window with SLA and documented upgrade path | Included | Not included | Partial support | Not included |
| Source code in a Git repo you own (no lock-in) | Included | Included | Not included | Not 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.
Related Modules

Bike Shop Retail Configuration
A made-to-order Odoo business-configuration package for a bicycle retail shop — point of sale, workshop repairs, and stock, pre-wired and tailored to how you actually operate. ECOSIRE scopes, builds, installs, and supports it; this is not an off-the-shelf download.

BPMN Workflow Designer
A build-to-order visual BPMN 2.0 workflow builder for Odoo that lets your team design multi-level approvals and conditional routing without writing XML or Python. ECOSIRE scopes, builds, installs, and supports it on your Odoo 17, 18, or 19 database.

Braintree (PayPal) Gateway for Odoo
A Braintree payment acquirer for Odoo that puts cards, PayPal, Venmo and Apple/Google Pay behind a single Drop-in UI, with 3DS2/SCA, vault tokenization and webhook reconciliation. ECOSIRE builds, installs and supports it for your Odoo 17, 18 or 19.
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
