Skip to main content
quickbooks-time icon

QuickBooks Time Connector

SourceAPI DocsAPI ChangelogConnector Changelog

Description​

QuickBooks Time is an employee time tracking solution from Intuit. The QuickBooks Time component supports managing users, job codes, job code assignments, and timesheets.

API Documentation​

This component was built using the QuickBooks Time (TSheets) REST API.

Connections​

OAuth 2.0​

key: oauth

QuickBooks Time uses OAuth 2.0 Authorization Code authentication. An OAuth application must be created in the QuickBooks Time developer portal before configuring this connection.

Prerequisites​

  • A QuickBooks Time (TSheets) account with administrator access
  • An OAuth application registered in the QuickBooks Time developer portal

Setup Steps​

  1. Navigate to the QuickBooks Time developer portal and create a new OAuth application
  2. Configure the application:
    • Redirect URI: https://oauth2.prismatic.io/callback
  3. Copy the Client ID and Client Secret from the application settings

Configure the Connection​

  • Client ID: Enter the Client ID from the OAuth application
  • Client Secret: Enter the Client Secret from the OAuth application
InputNotesExample
Authorize URL

The OAuth 2.0 Authorization URL for Quickbooks Time

https://rest.tsheets.com/api/v1/authorize
Client ID

Client Identifier of your app for Quickbooks Time

Client Secret

Client Secret of your app for Quickbooks Time

Scopes

Space separated OAuth 2.0 permission scopes for Quickbooks Time

Token URL

The OAuth 2.0 Token URL for Quickbooks Time

https://rest.tsheets.com/api/v1/grant

Triggers​

New Records​

Retrieves existing and ongoing records for a specified QuickBooks Time resource type. Load history once, check for changes on a schedule, or both. | key: pollChangesTrigger

InputNotesExample
Connection
Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record created (for timesheets, dated) on or after this date once, ignoring the visibility filters.

2026-01-01
Resource Type

The type of resource to poll for new records.

Show New Records

Include newly created records in trigger results.

true

This trigger polls the QuickBooks Time API for new records on a scheduled basis.

How It Works​

  1. The trigger runs on the configured schedule
  2. It fetches records from QuickBooks Time for the selected resource type. For Timesheets, a start_date parameter derived from the last poll time is passed as an optimization to limit the result set
  3. New records are identified by comparing returned IDs against the set of known IDs from previous polls
  4. The trigger updates its internal state after each poll

Initial Sync

An initial sync seeds a complete starting state rather than a change feed, so an input that narrows which changes are reported would leave gaps in it: Show New Records is ignored while it runs, and is the only input it ignores. It begins on the first recurrence when a Look-back Date (YYYY-MM-DD) is set, and seeds each record exactly once: Timesheets whose work date is on or after that date, and Users or Job Codes whose created timestamp is on or after 00:00 UTC of that date. Left empty, there is no sync: the first Users or Job Codes recurrence only records a baseline and returns nothing, and the first Timesheets recurrence reports the timesheets dated on or after the current UTC date.

The sync has no fixed upper bound and finishes in one recurrence with batching on or off, because the trigger fetches every page before it returns. It then stores the IDs it received as its position (for Timesheets, together with that recurrence's date), and the next recurrence reports only records whose IDs are not in that set, so no seeded record is reported twice. Nothing in the payload marks the handoff.

Resource Type still applies throughout. The trigger has no page-size or field-selection input, so nothing else is suppressed.

Batching

Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to QuickBooks Time, which limits requests to 300 per 5 minutes per access token.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.

With batching off a downstream step reads body.data.created (body.data.updated is always empty). With batching on those fields do not exist: each execution receives one { "changeType": ..., "record": ... } item, or an array of them when the batch size is greater than 1. Any step reading the older shape must be updated before batching is enabled. Because batching is enabled per flow, that change is scoped to the flow rather than to the component or to other flows using the same trigger.

Returned Data​

With batching off, the trigger returns an object with a created array containing new records detected since the last poll, and an updated array that is always empty because this trigger detects additions only. Fields shown are representative. The full response object includes additional properties.

Example Response
{
"data": {
"created": [
{
"id": 135288482,
"user_id": 317046,
"jobcode_id": 18080900,
"start": "2024-01-16T08:00:00-06:00",
"end": "2024-01-16T17:00:00-06:00",
"duration": 32400,
"date": "2024-01-16",
"tz": -6,
"type": "regular",
"on_the_clock": false,
"created": "2024-01-16T17:01:12-06:00",
"last_modified": "2024-01-16T17:01:12-06:00"
}
],
"updated": []
}
}

With batching on, each execution receives one record tagged with how it changed, or an array of such items when the batch size is greater than 1. changeType is always created. The created and updated arrays are not part of this shape.

Batched Item
{
"changeType": "created",
"record": {
"id": 135288482,
"user_id": 317046,
"jobcode_id": 18080900,
"date": "2024-01-16",
"type": "regular",
"created": "2024-01-16T17:01:12-06:00",
"last_modified": "2024-01-16T17:01:12-06:00"
}
}

Notes​

  • For Timesheets, each recurrence queries from the date of the previous recurrence, so a timesheet added later with an earlier work date is not reported
  • For Timesheets, the start_date filter is applied as a query optimization, but change detection still relies on ID comparison rather than timestamps
  • Update detection is not supported for any resource type. Only new records are returned
  • Refer to the QuickBooks Time API documentation for details on available fields per resource type

Data Sources​

Select Job Code​

Select a job code from a list of job codes. | key: selectJobCode | type: picklist

InputNotesExample
Connection
Example Payload for Select Job Code⤓
Loading…

Select Job Code Assignment​

Select a job code assignment from a list of job code assignments. | key: selectJobCodeAssignment | type: picklist

InputNotesExample
Connection
Example Payload for Select Job Code Assignment⤓
Loading…

Select Time Sheet​

Select a timesheet from a list of timesheets. | key: selectTimeSheet | type: picklist

InputNotesExample
Connection
Example Payload for Select Time Sheet⤓
Loading…

Select User​

Select a user from a list of users. | key: selectUser | type: picklist

InputNotesExample
Connection
Example Payload for Select User⤓
Loading…

Actions​

Create Timesheet​

Creates a Timesheet | key: createTimesheet

InputNotesExample
Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
End Date

End time of the timesheet, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). Time should reflect the user's local time.

YYYY-MM-DDThh:mm:ss±hh:mm
User ID

The Id of the record to modify

Jobcode ID

The Jobcode Id

Start Date

Start time of the timesheet, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). Time should reflect the user's local time.

YYYY-MM-DDThh:mm:ss±hh:mm

Create User​

Creates a User from the provided data | key: createUser

InputNotesExample
Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
First Name

First name of the user

Last Name

Last name of the user

Username

Username of the user


Delete Timesheet​

Deletes a Timesheet | key: deleteTimeSheet

InputNotesExample
Connection
Job Code IDs

A comma separated list of Job Code Ids

123,456,789

Get Job Code Assignments​

Gets a list of Job Codes and their associated Users | key: getJobCodeAssignments

InputNotesExample
Active

'yes', 'no', or 'both'. Default is 'yes'

Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
Page

Represents the page of results you'd like to retrieve. Default is 1.

Per Page

Represents how many results you'd like to retrieve per request (page). Default is 50. Max is 50

User IDs

A comma separated list of User Ids to filter on

123,456,789

Get Job Codes​

Gets a list of Job Codes | key: getJobCodes

InputNotesExample
Active

'yes', 'no', or 'both'. Default is 'yes'

Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
Page

Represents the page of results you'd like to retrieve. Default is 1.

Per Page

Represents how many results you'd like to retrieve per request (page). Default is 50. Max is 50


Get Time Sheets​

Gets a list of Time Sheets | key: getTimeSheets

InputNotesExample
Active

'yes', 'no', or 'both'. Default is 'yes'

Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
End Date

YYYY-MM-DD formatted date

Job Code IDs

A comma separated list of Job Code Ids to filter on

123,456,789
Page

Represents the page of results you'd like to retrieve. Default is 1.

Per Page

Represents how many results you'd like to retrieve per request (page). Default is 50. Max is 50

Start Date

YYYY-MM-DD formatted date

User IDs

A comma separated list of User Ids to filter on

123,456,789

Get Users​

Gets a list of Users with optional filters | key: getUsers

InputNotesExample
Active

'yes', 'no', or 'both'. Default is 'yes'

Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
Page

Represents the page of results you'd like to retrieve. Default is 1.

Per Page

Represents how many results you'd like to retrieve per request (page). Default is 50. Max is 50


Update Timesheet​

Updates a Timesheet | key: updateTimesheet

InputNotesExample
Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
End Date

End time of the timesheet, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). Time should reflect the user's local time.

Jobcode ID

The Jobcode Id

Start Date

Start time of the timesheet, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). Time should reflect the user's local time.

Timesheet ID

The Id of the record to modify


Update User​

Updates a specified User | key: updateUser

InputNotesExample
Additional Query Parameters

Additional query parameters to be provided for use in filtering result sets. For example, when filtering users it is possible to provide 'usernames' as the key and a comma separated list of one or more usernames to filter on.

Connection
ID

The Id of the record to modify

Username

Username of the user


Changelog​

2026-10-13​

Added batching and initial sync support to the New Records trigger:

  • Fixed the New Records trigger, which never reported new timesheets, users, or job codes
  • Added opt-in batching to the New Records trigger, dispatching each new record individually or in configured batches; enabling it changes the shape a downstream step receives
  • Added an optional Look-back Date input to the New Records trigger for performing an initial sync of records. The initial sync begins on the first recurrence and backfills every record from the specified date onward, seeding each once and ignoring the trigger's visibility filter; later recurrences are unaffected. Leave it empty to start from the first recurrence with no backfill

2026-04-30​

Updated spectral version

2026-04-21​

Added New Records polling trigger that checks for new timesheets, users, or job codes in QuickBooks Time on a configured schedule

2026-04-07​

Added global debug support across all actions for improved troubleshooting

2026-02-26​

Added inline data sources for users, job codes, job code assignments, and timesheets to enable dynamic dropdown selection