Overview
The timesheets endpoint allows you to retrieve attendance data from HRIS systems and convert them into a unified data model. Each timesheet represents work time tracking for a single employee, delivered in a consistent data structure regardless of the underlying HRIS system.Key Use Cases
- Monitor employee attendance and working hours
- Verify if employees worked their expected hours
- Process payroll data with approved timesheets
- Track break times and compliance
- Generate attendance reports
Prerequisites
Important: Timesheets are employee-centric, so you must includeemployees in your integration scope to properly sync timesheet data.
- Default sync period: The Last 2 months of timesheets get synced
- Employee filtering: When employee filters are applied, only filtered employees’ timesheets are synced
For the full API data model and all query/filter options, see the
GET timesheets endpoint.
Understanding Timesheet Data Structure
Complete vs Incomplete Timesheets
Timesheets can exist in various states of completion depending on the employee’s clocking behavior and system reliability: Complete Timesheet (Ideal scenario)- Open timesheet: Missing end time, could indicate ongoing work or system issues
- Start time only: Employee clocked in but hasn’t clocked out (may still be working)
- End time only: Clock-in wasn’t registered, only clock-out recorded
- Sync updates: Incomplete timesheets are often updated and completed during the next sync cycle once the employee clocks out
Timesheet Overlap Validation
Important rule: timesheets cannot overlap for the same employee.- ❌ Invalid: Timesheet from 09:00–17:00 and another from 16:00–19:00 has a 1-hour overlap
- ✅ Valid: Timesheet from 09:00–12:00 and another from 13:00–17:00 with no overlap
- Sync continues but generates warnings
- We won’t upsert the overlapping timesheet
- This can indicate a issue or wrong timesheet in the HRIS
Open Timesheet Validation
- An open timesheet, without an end time, cannot exist within the time range of a closed timesheet
- Multiple consecutive open timesheets are allowed since they do not have defined end boundaries
Time Zones and Time Handling
All timesheet times are provided in UTC format for consistency, along with the local timezone offset:Timezone awareness is essential for accurate approvals and schedule comparisons:
- Always show the employee’s local time alongside UTC when reviewing/approving.
- The
timezonefield is an ISO‑8601 offset (e.g.,-04:00) captured for that shift. Use it to reconstruct the shift’s local time historically. Do not recompute using your current local offset — DST changes between then and now can happen. - When comparing scheduled vs. received times, convert both into the same local timezone (either the schedule’s zone or the record’s offset) before comparing.
- Respect local day boundaries. If a shift crosses midnight, compare by local day if your policies are day-based.
Payable Hours Logic
Grace Periods
Payable hours may differ from calculated work time due to grace periods:- Employee starts 5 minutes late, for example 07:05 instead of 07:00
- Grace period allows full pay despite late start
payable_hoursreflects the grace period adjustment- If
payable_hoursis null, the HRIS does not support this feature
Fallback Calculation
Whenpayable_hours is null, meaning the HRIS doesn’t support this feature, you can calculate payable hours using: end_time - start_time - unpaid_break_minutes. This provides a reasonable approximation for payroll purposes when grace period data is not available.
Approval Workflow
Approval Status
- Payroll processing: Only process approved timesheets
- Manager oversight: Identify pending approvals
- Compliance: Track approval timestamps for audit trails
Break Time Implementation Patterns
Break handling varies significantly across HRIS systems. Check the coverage grid for system-specific support levels. Break data rules:- Only complete breaks, with both start and end times, are included
- Open breaks are never accepted and won’t be upserted, but we will show a warning.
unpaid_break_minutesis calculated from unpaid breaks or provided directly by the HRIS
- Detailed break tracking
- Break minutes only
- Split timesheets
- Split timesheets + standalone breaks
Detailed Break Tracking
API Usage Examples
Basic Timesheet Retrieval
Date Range Filtering
Implementation Best Practices
- Handle multiple break patterns
- Parse detailed break arrays when available
- Fall back to break minutes calculation
- Detect break periods from split timesheets
- Timezone considerations
- Always store times in UTC
- Use timezone offsets for display purposes
- Consider employee location for compliance reporting
- Error handling
- Handle cases where
payable_hoursis null - Account for missing break data
- Plan for partial timesheet data
- Handle cases where
- Filtering and performance
- Use date range filters to limit data volume
- Implement pagination for large datasets
- Filter by specific employees when possible
Common Integration Scenarios
Payroll Processing
- Filter timesheets by approval status, for example
APPROVED - Use
payable_hourswhen available, otherwise calculate from time ranges - Factor in
unpaid_break_minutesfor accurate pay calculations - Verify approval timestamps meet payroll cutoff requirements
Attendance Monitoring
- Check for incomplete timesheets that are missing start or end times
- Monitor for unusual patterns such as very short or very long shifts
- Track break compliance based on company policies
- Generate alerts for timesheet anomalies