Skip to main content
Retrieve the authenticated employee’s timesheet — their time entries for a date range, plus computed totals, current pay period, and clock status.
GET /api/v1/employee/timesheet
Authentication: requires an employee JWT (Authorization: Bearer <token>). The employee is identified from the token’s userId — there is no employee-id path/query parameter.

Query parameters

startDate
string
ISO date string. Defaults to the start of the current week (Sunday, 00:00:00) if omitted.
endDate
string
ISO date string. Defaults to the end of the current week (Saturday, 23:59:59) if omitted.
payPeriodId
string
Optional. Filter entries to a single pay period.
Returns 400 Invalid date format for unparseable dates, or 400 Invalid date range if startDate is after endDate. Time entries are matched on clockIn falling within the range.

Response

data.employee
object
id, firstName, lastName, employeeNumber, jobTitle, payRate, payType.
data.company
object
The employee’s company, including payPeriodType and the bookkeeper org’s overtimeThreshold, overtimeMultiplier, and timezone.
data.timeEntries
array
Time entries within the range (newest first). Each entry includes its payPeriod summary (id, startDate, endDate, status, locked).
data.currentPayPeriod
object | null
The pay period covering “now” for this company, or null if none.
data.totals
object
totalHours, regularHours, overtimeHours, pendingEntries (count with status PENDING), approvedEntries (count where approved is true).
data.clockStatus
object
isClockedIn (boolean) and openTimeEntry ({ id, clockIn } or null).
data.dateRange
object
The resolved startDate and endDate used for the query.

Examples

curl "https://app.paypunch.io/api/v1/employee/timesheet?startDate=2026-06-15&endDate=2026-06-21" \
  -H "Authorization: Bearer <employee-token>"
Returns 401 if the token is missing/invalid, 404 Employee not found if the token’s user no longer exists.