Skip to main content

External time-clock (PDKS) integration: connection, employee matching, conflict settings and entry/exit records

Explains how to connect Patron PDKS, or another PDKS vendor through the Teamso PDKS API (Generic), on the PDKS Settings tab of Timesheet Settings; how to match employees, set discrepancy tolerances and review entry and exit records; and how the nightly…

This article explains how to bring the entry and exit data of your workplace's card reader or fingerprint terminal (an external PDKS, the Turkish term for a time and attendance system) into the Teamso timesheet. The settings are on the PDKS Settings tab of Configuration > Timesheets > Settings. There are two kinds of connection:

  • Patron PDKS: Teamso itself fetches the employee list and the entries and exits from your Patron PDKS account every night. Shifts you share are also sent to Patron.

  • Teamso PDKS API (Generic): Another PDKS vendor sends entry and exit records to Teamso with an API key you create.

A company can use only one connection at a time. This screen is separate from Teamso's own QR check-in module (PDKS).

People with the View/Edit Timesheet Settings permission see and change this screen. The Employee Matching list is shown with the same permission. Permissions are granted on the Configuration > Timesheets > Responsibilities screen (Manage Permissions).

Before you start

  • For Patron PDKS, get the API Key (Token) and Company ID values from the Patron PDKS panel. They are on the Integration & API → Settings → API Key page of the Patron panel.

  • Patron employees are matched to Teamso employees by mobile phone number. Employees' phone numbers in Teamso must be the same as in Patron.

  • Teamso PDKS API (Generic) records are matched to employees by National ID. Employees' National ID must be filled in Teamso.

  • For the timesheet to use PDKS hours, you need the Employee-Based Settings (Setting up the timesheet).

Step by step

Connecting Patron PDKS

  1. In the left menu, go to Configuration > Timesheets > Settings and open the PDKS Settings tab. The integration section is selected in the list on the left.

    PDKS Settings tab, Patron PDKS connection form
  2. In the PDKS field, select Patron PDKS.

  3. Paste the values you copied from the Patron PDKS panel into the API Key and Company ID fields. The ⓘ icon next to each field shows where the value is in the Patron panel.

  4. Click Connect. Teamso tries to connect to Patron with the details you entered. If they are wrong, the warning "PDKS connection could not be established. The API Key or Company ID you entered is invalid..." appears and nothing is saved.

  5. Once connected, the screen switches to Employee Matching. The employee list in Patron is fetched and matched right away. Connection History shows who connected and when. While a connection is active, the PDKS field is locked.

    Connected Patron PDKS, Connection History
  6. To disconnect, click Remove Connection and confirm with Yes, Remove Connection. Employee matchings are deleted. Entries and exits transferred so far are kept; no new records arrive.

Connecting another vendor with the Teamso PDKS API (Generic)

  1. On the PDKS Settings tab, select Teamso PDKS API (Generic) in the PDKS field. Send is selected under Integration Mode: your PDKS vendor sends the records to Teamso. The Fetch option shows Coming soon for now.

    Teamso PDKS API (Generic): API keys and endpoints
  2. In the API Keys section, type the vendor's name in the label field and click Generate Key.

  3. The new key is shown only once and disappears from the screen after two minutes. Copy it with the copy icon and pass it to your vendor securely. The list shows only the first characters of each key.

  4. Give your vendor the Base URL, the X-Teamso-Api-Key header and the Sample Request from the Endpoints & Sample Usage section. The vendor sends entry and exit records with POST /transitions. Each record must contain the employee's National ID (identityNumber), the time and the direction (in for entry, out for exit).

  5. When you create the first key, the integration becomes active and "Teamso PDKS API integration is active" appears. To stop a key, click the bin icon next to it (Revoke key). A revoked key stays in the list with the Revoked tag; remove it with × (Remove permanently from list). To revoke all keys at once, use Remove Connection.

With this connection, matching is done automatically by National ID, so the Employee Matching section is not shown.

Matching employees (Patron PDKS)

  1. Open Employee Matching in the list on the left. When the screen opens, the employee list in Patron is fetched again and matched by phone number. The Matched and Unmatched cards at the top show the counts. The Unmatched card appears only if someone is unmatched.

    Employee Matching, Matched list
  2. In the Matched list, each row shows the Teamso employee next to the person in PDKS, with the Connected tag. On a row matched by hand because the phone numbers differ, a × (Disconnect Match) appears in the corner. It opens the Remove Match Connection confirmation. If you confirm, records transferred so far are kept; this person's new records are not transferred until you match them again.

  3. Click the Unmatched card. Unmatched Teamso Employees are listed on the left; on the right, PDKS Employees with no counterpart in Teamso, or whose phone number belongs to more than one Teamso employee. Drag a Teamso employee onto the PDKS person on the right, or click both one after the other. The message "Employee matched successfully." appears.

    Matching unmatched employees by hand
  4. If you added employees in Patron or corrected a phone number in Teamso, click Sync Data. The list is fetched again; matches you made by hand are kept.

Entries and exits already transferred for the matched person are also linked to the Teamso employee. Manual matching does not change the Teamso employee's phone number; the match row shows the number stored in Teamso. Records of an unmatched person do not reach the timesheet.

Dispute Settings

  1. Open Dispute Settings in the list on the left. The fields become available once a PDKS connection is set up; before that they are greyed out.

    Dispute Settings
  2. Work entry and exit tolerance: enter ± minutes (0–1440). Early or late entries and exits this close to the shift start and end are not counted as discrepancies in the timesheet. The default is 5 minutes; 0 means no tolerance.

  3. Long break outside filter: enter minutes (1–1440). Time spent outside at or above this duration is not included in the break calculation. Leave the field empty (Off) to apply no filter; then all time spent outside counts as break.

  4. Save in the bar at the bottom saves both settings together; Discard changes undoes unsaved changes. Leaving the page with unsaved changes asks for confirmation first.

  5. These settings are kept on the company's PDKS settings record. Without one (possible for companies connected with an older PDKS API key) the fields stay grey and a note at the top says so: save the integration once in the PDKS Integration section. Until then the timesheet applies a 5 minute tolerance and the filter is off.

Entry & Exit Info

  1. Open Entry & Exit Info in the list on the left. All records coming from PDKS are listed, newest first.

    Entry & Exit Info
  2. The records are in one list card. Type a person's name in the Search by employee name box; narrow the list with the In / Out, Source and Status chips (the × on a chip removes that filter, Clear all removes them all). With Sort, or by clicking a column header, you order the list by Employee, Date, In / Out, Source or Status, ascending or descending, or remove the sorting; with no sort the newest movement comes first. Use the pager at the bottom of the card to reach the other records. The search, filters, sort and page stay in the address. On a narrow screen the list turns into cards.

  3. The Source column shows the connection the record came from: Patron PDKS or PDKS API. For a person who is not matched in Teamso, the record shows their name in PDKS or, if there is none, their partly masked ID No.

  4. The Status column shows how the record is used in the timesheet:

Status

Meaning

Calculated

The entry and exit were paired; the time in between was counted as working time.

Filtered

Not counted: a repeated scan in the same direction within 5 minutes, a second entry after an open entry, or an entry and exit less than 1 minute apart.

Incomplete

An entry or exit without a pair, or an entry-exit span longer than 24 hours. It is not counted as working time.

Long Session

More than 16 hours (less than 24 hours) between entry and exit; check it.

An entry that passes midnight is paired with the first exit of the next day.

Result

  • Patron PDKS: Every night at 03:00, the employee list in Patron and the entries and exits from the first day of the month to yesterday are fetched. If Patron cannot be reached, the transfer is tried at most three times in all, 10 minutes apart. So today's scans appear the next morning, and the records of the day you connect arrive on the first night. Sync Data refreshes only the employee list; it does not fetch entries and exits.

  • Teamso PDKS API (Generic): Records sent by the vendor are processed immediately and appear in Entry & Exit Info. A record sent a second time with the same record ID (externalEntryId) is skipped.

  • Reaching the timesheet: Every night at 05:00, past days are filled from entries and exits for employees whose Actual Hours Source is Working Hours Transferred from PDKS and who have Auto-Fill Actual Hour on. Days entered by hand are left alone (Setting up the timesheet, Managing the timesheet list).

  • Hours source: When the Patron connection is set up, the Actual Hours Source of every employee with employee-based settings, and later of each employee you match by hand, is set to Working Hours Transferred from PDKS. If you use the Teamso PDKS API (Generic), the integration is switched on when you create the first API key and the same setting is applied; for employees added later, check the Employee-Based Settings tab.

  • Sending shifts (Patron only): When you share a shift in Time and attendance > Shift schedule with Share, or in bulk with Actions > Share, the shared shifts and the approved leaves on those dates are sent to Patron PDKS in the background as a weekly plan (Planning and sharing shifts). There is no separate result window for this. If sending fails, the shift sharing is not undone. Shifts of employees without a phone number are not sent. With the Teamso PDKS API (Generic) connection, shifts are not sent.

  • No e-mail or notification is sent for the actions on this screen.

Common problems

Symptom: "PDKS connection could not be established. The API Key or Company ID you entered is invalid..." warning.
​Cause: The API Key or Company ID was copied wrongly or incompletely.
​Solution: Copy the values again from the API Key page of the Patron PDKS panel.

Symptom: The PDKS field is locked with "Only one integration can be used at a time".
​Cause: The other kind of connection is active.
​Solution: When moving away from Patron, use Remove Connection first. When moving away from the Teamso PDKS API (Generic), revoke all API keys.

Symptom: Employee Matching, Dispute Settings and Entry & Exit Info are greyed out.
​Cause: No PDKS connection has been set up yet.
​Solution: Set up the connection in the integration section first.

Symptom: An employee stays in the Unmatched list.
​Cause: The phone number differs or is missing in Teamso or Patron, or the same number belongs to more than one Teamso employee.
​Solution: Correct the number and click Sync Data, or match the person by hand.

Symptom: Entries and exits are in the list but do not reach the timesheet.
​Cause: The employee's Actual Hours Source is Planned Working Hours, Auto-Fill Actual Hour is off, the record is Incomplete, or the person is not matched.
​Solution: Fix the Employee-Based Settings, complete the missing scan by hand in the timesheet, and match the person.

Symptom: A Teamso PDKS API (Generic) record shows a partly masked ID No instead of a name.
​Cause: The National ID sent did not match any employee in Teamso.
​Solution: Check the employee's National ID in Teamso and make sure the vendor sends the correct number.

Related articles

Did this answer your question?