ZKTeco Biometric Attendance Integration with Odoo
Connect your ZKTeco fingerprint and facial-recognition devices to Odoo HR, Attendance, and Payroll. Punches sync in real time over ZKTeco's push protocol, overtime is calculated against Saudi Labour Law, and your employee roster pushes back to the device — so GOSI, WPS, and payroll all run on one verified attendance record. Other brands such as Suprema, Hikvision, and eSSL connect the same way.
Key Highlights
Core Features
- Real-Time ZKTeco Push (ADMS Protocol)
- Standalone-SDK Pull Sync for Any Network
- Employee & Shift Push Back to the Device
- Saudi Labour Law Overtime Engine
ZKTeco Devices, Wired Straight Into Odoo Payroll
ZKTeco is the most widely deployed biometric attendance brand in Saudi Arabia — its fingerprint and facial-recognition terminals sit at the entrance of factories, construction sites, clinics, hotels, and offices across the Kingdom. The problem is that most of those devices run in isolation: the HR team pulls a report out of the device's own software, reshapes it in a spreadsheet, calculates late arrivals and overtime by hand, and re-keys the totals into Odoo Payroll every month. In Saudi Arabia an attendance error does not stop at payroll — it flows straight into GOSI contributions and the WPS salary file the business is legally required to submit.
The integration removes that manual bridge by connecting the ZKTeco device directly to Odoo. ZKTeco terminals support a real-time push protocol (ADMS): each fingerprint, face, or card punch is sent to Odoo Attendance the moment it happens, where Odoo HR matches it to the correct employee record. Where a site's network does not allow push, iWesabe uses ZKTeco's standalone SDK to pull the device logs on a schedule instead — either way the data lands in Odoo without an export. Worked hours and overtime feed straight into the Odoo Payroll run, Odoo Leaves reconciles approved time off against the same log, and the sync is bidirectional: when HR hires, transfers, or offboards someone in Odoo, the updated roster and shift schedule push back to the ZKTeco device automatically. The connector works across the common ZKTeco terminals used in KSA — the iClock, SenseFP, MB, EFace, and FaceDepot series among them.
For a Saudi employer this matters because the compliance chain depends on accurate time data. GOSI monthly contributions are calculated on declared earnings that must match actual worked time and overtime; the Wage Protection System requires the salary file submitted to the bank to reconcile with payroll; and Saudi Labour Law caps overtime and sets the premium it must be paid at. Pushing the ZKTeco record straight into Odoo gives the business a single, timestamped, auditable trail from the punch on the device to the GOSI declaration and the WPS file — the evidence those obligations depend on.
A contracting company in Dammam running roughly 240 employees across three site offices and a central workshop used to pull punch exports from four ZKTeco terminals every month, merge them in Excel, calculate overtime by hand against the Labour Law caps, and type the totals into payroll — a two-day exercise that still produced disputes on almost every run. After iWesabe connected the ZKTeco devices to Odoo over the push protocol, punches now post in real time into the correct Odoo company, overtime calculates automatically at the statutory premium, and the monthly payroll batch closes from data employees can see in their own Odoo self-service portal. The two-day reconciliation became a same-morning review of exceptions only.
What the ZKTeco–Odoo Connector Delivers
Real-Time ZKTeco Push (ADMS Protocol)
ZKTeco terminals push every check-in and check-out — fingerprint, face, or card — to Odoo Attendance the moment it happens, over the device's native ADMS push protocol. Each punch carries the employee ID, device ID, timestamp, and verification mode, and is matched to the correct Odoo employee record automatically — no batch upload, no CSV export.
Standalone-SDK Pull Sync for Any Network
Where a site's network or firewall does not allow the device to push, iWesabe connects through ZKTeco's standalone SDK and pulls the attendance logs on a configurable schedule instead. The same data reaches Odoo Attendance either way, so even offline-leaning sites stay in sync without manual exports.
Employee & Shift Push Back to the Device
When HR adds, transfers, or offboards an employee in Odoo, or changes a shift pattern, the updated roster pushes back to the ZKTeco device automatically. The hardware never carries a stale list, and a departed employee can no longer punch in on a terminal nobody remembered to update.
Saudi Labour Law Overtime Engine
Worked hours flow into Odoo Payroll where overtime is calculated against the Saudi Labour Law caps — an 8-hour standard day, a 10-hour daily limit, and a 48-hour week — and paid at the statutory premium. The rule lives in Odoo, so every payroll run applies the same compliant calculation without anyone re-checking it by hand.
GOSI-Ready Attendance Data
GOSI monthly contributions require verified working-day counts and overtime hours. The connector supplies that data — actual working days, absence days, and overtime — straight from the ZKTeco device into Odoo Payroll, so contribution figures reconcile with the attendance record rather than a manually typed count.
One Connector Across Your Whole Device Fleet
A single Odoo connector manages multiple ZKTeco terminals across branches, sites, and company entities, mapping each device to the correct Odoo company and GOSI establishment. Mixed fleets are supported too: Suprema, Hikvision, eSSL, and any device exposing the ADMS push protocol or a standard SDK connect through the same Odoo workflow.
Why Saudi Businesses Need ZKTeco on Odoo
- GOSI contribution accuracy — ZKTeco punches feeding Odoo Payroll keep declared earnings reconciled with verified working-day and overtime data, removing the manual count errors that trigger GOSI discrepancies
- WPS (Wage Protection System) alignment — when attendance, overtime, and payroll run on one Odoo dataset, the salary file submitted to the bank matches what was actually worked, with a traceable link from punch to payroll
- Saudi Labour Law overtime caps enforced automatically — the 10-hour daily and 48-hour weekly limits and the statutory premium are applied inside Odoo Payroll, not left to a spreadsheet
- Hajj, Eid, and Saudi national holidays handled — the KSA holiday calendar is configured in Odoo Leaves and respected in overtime, so the correct regular, overtime, or holiday rate is applied automatically
- Arabic names and Iqama data preserved — employee Arabic names, national IDs, and Iqama numbers sync between the ZKTeco device and Odoo HR in their native script, with no transliteration or re-entry after enrollment
Supported Markets
Saudi Arabia
SAR • ZATCA compliant
United Arab Emirates
AED
Bahrain
BHD
+ Kuwait, Oman, Qatar & more
Business Outcomes After Go-Live
Payroll runs without attendance reconciliation
The export-merge-calculate-rekey cycle that consumes a day or two before every payroll run disappears. ZKTeco punches are already in Odoo when the payroll batch runs, so closing becomes a review of exceptions, not a rebuild of the month.
Payroll disputes stop at the source
When employees see their own punches and calculated overtime in the Odoo self-service portal, the end-of-month argument over hours largely disappears. Every figure traces back to a timestamped ZKTeco record anyone can check.
GOSI and WPS stay defensible
Because attendance, overtime, and payroll share one Odoo dataset, the numbers behind GOSI contributions and the WPS salary file reconcile by construction — an auditor sees one consistent chain from device punch to payslip to bank file.
New employees enrolled once
Adding a hire in Odoo HR pushes the employee record to the ZKTeco device automatically. One entry point, no duplicate enrollment in separate device software — and a leaver is removed from the device the moment they are offboarded in Odoo.
Accurate records across every branch
Attendance from every ZKTeco terminal — head office, branch, factory, warehouse — flows into the correct Odoo company. Managers get a consolidated view without pulling a separate report from each site.
Absence patterns visible before month-end
Late arrivals and absence patterns surface in Odoo HR reports in real time rather than during payroll review, so HR can act on attendance issues during the month instead of after the run has closed.
ZKTeco Integration Steps with iWesabe
Prerequisite check — confirm the ZKTeco models, firmware, and communication mode (ADMS push or standalone SDK), the network and firewall access, and that the Odoo HR, Attendance, and Payroll modules are active on your Odoo version
Deploy the Odoo connector — install and configure the ZKTeco attendance connector in Odoo so it can receive push events or pull device logs, and push roster updates back to the device
Configure devices — register each ZKTeco terminal, set its IP and the ADMS server endpoint (or SDK connection), and map every device to the correct Odoo company and GOSI establishment for multi-branch setups
Map employees & rules — link ZKTeco user IDs to Odoo employee records, run the initial roster sync, and configure the Saudi Labour Law overtime caps, premium rates, and shift patterns in Odoo Payroll
Test the sync — run live test check-ins and check-outs, verify they appear in Odoo Attendance, confirm overtime and leave reconciliation against expected values, and check that shift changes in Odoo push back to the device
Go live with monitoring — switch to production and run iWesabe's first-cycle monitoring across the first full payroll run, confirming GOSI totals and the WPS file output before handover
Saudi Industries Running ZKTeco Devices
Why iWesabe for ZKTeco–Odoo Integration
Years Experience
Since 2012
Odoo Gold Partner
Certified by Odoo SA
Implementations
Across KSA & GCC
Delivery Locations
KSA · UAE · Bahrain · India
- Odoo Gold Partner with delivered ZKTeco-on-Odoo integrations across Saudi Arabia — push and SDK sync on Odoo 16, 17, and 18, Community and Enterprise
- Saudi Labour Law and GOSI compliance built into the Odoo configuration — overtime caps, GOSI field mapping, and WPS-aligned payroll output configured from day one
- Mixed-fleet capable — ZKTeco as the primary brand, with Suprema, Hikvision, and eSSL terminals connected through the same Odoo workflow where sites run more than one make
- Bilingual delivery and post-go-live support across the first payroll cycles — iWesabe confirms GOSI totals, the WPS file, and attendance accuracy before stepping back
iWesabe has connected ZKTeco devices to Odoo for manufacturers, contractors, hospitals, and retail chains across Saudi Arabia. Every integration includes GOSI field verification, Saudi Labour Law overtime configuration, and a first-payroll-cycle review — so HR and finance sign off on a full live run before iWesabe steps back.
ZKTeco–Odoo Questions from Saudi Employers
The integration works across the ZKTeco terminals commonly deployed in Saudi Arabia — including the iClock, SenseFP, MB, EFace, and FaceDepot series — covering fingerprint, facial-recognition, and card punches. Any ZKTeco device that supports the ADMS push protocol or connects through ZKTeco's standalone SDK can be used. During the prerequisite check, iWesabe confirms your specific models and firmware are supported.
Both are supported. The preferred method is ZKTeco's real-time push protocol (ADMS): the device sends each punch to Odoo Attendance as it happens, typically within seconds. Where a site's network or firewall does not allow the device to push, iWesabe connects through ZKTeco's standalone SDK and pulls the attendance logs on a scheduled basis instead. The result reaches Odoo the same way; only the transport differs.
Yes. ZKTeco is the primary and most common brand in Saudi Arabia, but the same Odoo workflow connects Suprema, Hikvision, and eSSL devices, plus any terminal that exposes the ADMS push protocol or a standard SDK/REST interface. A site running a mixed fleet can feed several brands into one Odoo Attendance and Payroll setup. iWesabe deploys and configures the appropriate Odoo connector for your devices as part of the project — confirm your models at project start.
The integration supports Odoo 16, 17, and 18, in both Community and Enterprise editions, with the HR, Attendance, and Payroll modules active. Some payroll features — GOSI handling and payslip customisation — are more developed on Enterprise, which iWesabe will advise on during the prerequisite check based on your requirements.
GOSI contributions are based on declared earnings that must reconcile with actual worked time and overtime, and the WPS salary file submitted to the bank must reconcile with payroll. When ZKTeco attendance, overtime, and payroll all run on one Odoo dataset, those figures match by construction — giving you a single timestamped, auditable chain from the device punch to the GOSI declaration and the WPS file.
With push, punches are queued on the device and delivered when it reconnects; with scheduled SDK pull, the next sync collects everything since the last run — so a temporary network drop does not lose attendance data. Missed punches, duplicate scans, and unmatched device IDs are flagged as exceptions for HR to review rather than silently affecting the payroll run, and every synced event is logged with a timestamp and device reference for audit.
A single-site deployment on one device brand typically takes a few working days with iWesabe. Multi-branch or mixed-fleet deployments with full GOSI and WPS payroll configuration usually take one to two weeks. iWesabe runs the first full payroll cycle jointly with your HR team to confirm GOSI totals and the WPS file output before handover.
Explore More Solutions
Discover our full suite of industry-leading ERP tools built for every business sector.
Jisr HR Integration with Odoo
Bidirectional sync between Jisr — Saudi Arabia's Labour Law HR platform — and Odoo ERP. Employee records, leave approvals, attendance data, and payroll inputs move between both systems automatically, so your HR team works in Jisr and your finance team works in Odoo without duplicate data entry.
ExploreSalla Integration for Odoo
Connect your Salla store to Odoo so every online order, customer, and stock movement flows straight into your back office. Orders become Odoo sales orders with ZATCA-aligned invoices, inventory syncs both ways to stop overselling, and fulfilment status flows back to Salla — one operation across storefront and ERP, with no manual re-entry.
ExploreFoodics Integration for Odoo
Connect your Foodics POS to Odoo so every sale, inventory movement, and payment posts to your accounts automatically. Daily F&B sales become ZATCA-aligned Odoo journals, recipe-based stock consumption flows to Odoo Inventory, and menu and pricing sync back to Foodics — giving you real-time food cost and profitability without a single manual journal entry.
ExploreQuickBooks Integration for Odoo
Keep QuickBooks and Odoo in step so your accounting data moves between them without re-entry. Customers, invoices, bills, payments, tax codes, and journal entries sync both ways — and Odoo adds ZATCA Phase-2 e-invoicing, inventory, and operations around the books you already keep, with one consistent set of figures across both systems.
ExploreTally Integration for Odoo
Keep Tally and Odoo on one consistent set of figures. Ledgers, vouchers, stock items, parties, and tax data sync both ways — and Odoo adds ZATCA Phase-2 e-invoicing, Arabic invoices, and the inventory and operations layer around the books your accountants already keep in Tally.
ExploreSalesforce Integration for Odoo
Keep Salesforce as your CRM and Odoo as the system that delivers, invoices, and reports. Leads, accounts, opportunities, products, and quotes sync both ways — and a won deal in Salesforce becomes a sales order in Odoo automatically, with delivery and payment status flowing back to the deal so sales and operations work from the same record.
ExploreReady to Sync Your ZKTeco Devices with Odoo Payroll?
Talk to iWesabe about connecting your ZKTeco attendance devices to Odoo HR, Attendance, and Payroll — with real-time push sync, Saudi Labour Law overtime, GOSI compliance, and WPS payroll output configured from the start.