Authenticate using the QuickBooks Time OAuth 2.0 flow and obtain a Bearer access token.
Retrieve the list of users (GET /users) and jobcodes (GET /jobcodes) to map external employee IDs and job codes to their TSheets internal IDs.
Construct timesheet records in the format required by the API: each record specifies user_id, jobcode_id, start time, end time, and type (regular, break, etc.).
POST to /timesheets with an array of timesheet objects (up to the documented batch size limit) to create records in bulk.
Parse the response for any failed records returned in the supplemental_data or _status_message fields; correct and resubmit failures.
Retrieve the imported timesheets using GET /timesheets filtered by date and user to verify accuracy before payroll processing.
Known gotchas
TSheets distinguishes between manual timesheets (with explicit start/end) and punch timesheets (clock-in/out); the API object type must match the account's timesheet type setting or records may be rejected.
Overlapping timesheets for the same user are rejected; validate for gaps and overlaps in your import pipeline before submitting to the API.
The rate limit of 300 calls per 5-minute window applies to bulk imports; a single large import split into many small batches can exhaust the quota—use the maximum allowed batch size per request.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp