The topology
Terminals speak raw TCP
An F500-class device opens a persistent TCP connection to a configured IP and port and streams null-terminated XML. It has no HTTPS, no certificates and no notion of a REST API.
The connector translates
A small stateless service you run on the same network. It terminates those TCP sessions and forwards each message to OnTime over HTTPS.
Why the connector exists
Three reasons, in order of importance:- Terminals cannot speak HTTPS. There is no way to point one at a cloud endpoint.
- They need a listener on the local network. The device connects outward to an IP and port you configure on it — so something has to be listening there.
- It keeps no state. The connector holds nothing, has no queue and no database. Restarting it mid-session loses nothing, which is what lets it be deployed like any other service.
The no-data-loss contract
The device re-sends any unacknowledged record roughly every 60 seconds and holds the rest of its queue behind it. Combined with OnTime’s deduplication, that produces at-least-once delivery with exactly-once storage — a punch cannot be missed, and cannot be counted twice.Two things that are not obvious
An unmapped punch parks — it never drops
An unmapped punch parks — it never drops
A terminal identifies people by its own numeric user ID. Until that ID is linked to an OnTime employee, the punch is held rather than discarded. Creating the mapping replays everything parked.So “punches aren’t appearing” is almost never lost data. See Map terminal users.
One connector serves every organization
One connector serves every organization
The connector authenticates with a platform-level secret rather than an organization API key. Which organization a punch belongs to is resolved on the OnTime side, from the device’s serial number.Practically: you configure the connector once, and registering a device is what assigns it to your organization.
Setting up
1
Install the connector
On a machine that can reach both your terminals and the internet. See Install the connector.
2
Point the terminals at it
Set each device’s LogServer IP and port to the connector’s host.
3
Register the devices
They appear by serial once they first connect. See Register a terminal.
4
Map terminal users to employees
Otherwise every punch parks. See Map terminal users.
5
Verify without hardware
A fake-device script replays a realistic session. See Test with a fake device.
Where the connector runs
The connector is a Docker image that runs anywhere with a raw TCP port reachable from your terminals.It cannot run on Render, which OnTime otherwise deploys to — Render web services accept only public HTTP(S), and this needs a raw TCP listener. Run it on your own network, or on a host that supports raw TCP.