Connect ZKTeco fingerprint/face devices to Odoo HR Attendance with automatic employee sync and real-time punch download. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Connect ZKTeco fingerprint/face devices to Odoo HR Attendance with automatic employee sync and real-time punch download.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
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.
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
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.
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.
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.
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.
Buy the license on ecosire.com and download the Biometric Attendance Device Integration (ZKTeco) module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Biometric Attendance Device Integration (ZKTeco), and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Direct pull from your specific ZKTeco device models | ||||
| Automatic scheduled punch download (ir.cron), no CSV export | ||||
| Multi-device, multi-location, time-zone-aware punch mapping | ||||
| Device-user-ID to Odoo employee mapping for mismatched badge numbers | ||||
| Two-way employee enrollment onto terminals from Odoo | ||||
| Built, installed and configured for you on Odoo 17/18/19 | ||||
| Post-launch support window with SLA and documented upgrade path | ||||
| Source code in a Git repo you own (no lock-in) |
This is a build-to-order module, not an instant download. Typical lead time is 2 to 4 weeks 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.
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.
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.
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.
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.
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.
Connect ZKTeco fingerprint/face devices to Odoo HR Attendance with automatic employee sync and real-time punch download.