---
title: "QuickBooks Time (TSheets) Integration"
description: "QuickBooks Time, formerly TSheets, is Intuit's time tracking and scheduling platform. Agents create and edit timesheets, clock users in and out, manage jobcodes, projects, and schedules, handle time off, work with geofences and locations, and pull the reports payroll needs."
url: https://flowrunner.ai/integrations/tsheets
date_modified: 2026-09-04T14:52:04-07:00
---

# QuickBooks Time (TSheets)

[Productivity](https://flowrunner.ai/integrations/category/project-management-productivity)

QuickBooks Time, formerly TSheets, is Intuit's time tracking and scheduling platform. Agents create and edit timesheets, clock users in and out, manage jobcodes, projects, and schedules, handle time off, work with geofences and locations, and pull the reports payroll needs.

[Verified](https://flowrunner.ai/integrations/verified "What does verified mean?") · 85 actions · OAuth · available

[QuickBooks Time (TSheets) website](https://quickbooks.intuit.com/) · [Platform Documentation](https://tsheetsteam.github.io/api_docs/) · Capability data verified 2026-08-24

1.  Next week's schedule is due and the planning run opens
2.  List Time Off Requests and List Schedule Events read approved leave and the shifts already placed
3.  List Jobcode Assignments confirms who is actually cleared to work each job
4.  Create Schedule Events writes the whole week as drafts, so nobody is told anything yet
5.  Agent finds the uncovered slots and the people scheduled past their expected hours
6.  The draft week and its gaps post to the scheduling manager with the conflicts named
7.  The manager publishes the week, which is the act that sends the shift notifications

## What This Integration Enables

QuickBooks Time is not a productivity tracker that happens to record hours. It is Intuit's clock, and the hours in it become money in a pay run. The API's design says so plainly: jobcodes archive rather than delete, users archive rather than delete, a project is deactivated rather than removed, and a timesheet that has already been exported or invoiced is locked against editing by the vendor itself. Payroll history is treated as something that must survive, and the connector inherits that posture.

FlowRunner agents work the whole surface:

-   creating and correcting timesheets, and clocking people in and out
-   maintaining jobcodes and the assignments that decide who may track against them
-   building schedules and moving time off requests through approval
-   managing users, groups, projects, estimates, custom fields and locations
-   pulling the six reports that answer what a period cost

They also handle the incremental discipline the vendor asks for, reading the last-modified timestamps rather than re-polling every endpoint. Every one of these operations is built and verified against the QuickBooks Time official API. Two capability groups deserve a deliberate decision rather than a default: geolocations record the position of identified employees, and the reports that feed payroll change what people are paid. Neither should run unattended because it is convenient.

### Without FlowRunner

**Scheduling around stale leave data**: Next week is drafted from memory, and an approved absence surfaces after the shift is announced

**Payroll assembled by export**: Hours are pulled to a spreadsheet, adjusted by hand, and reconciled against the tracker afterwards

**Corrections chase announcements**: A published shift is corrected by messaging people individually, and some of them miss it

### With FlowRunner

**Leave read before the draft exists**: Approved time off, holidays and jobcode eligibility are inputs to the schedule, not corrections to it

**Payroll totals read from the source**: Regular, overtime, double time and paid time off come from the payroll report itself

**Nothing is announced by accident**: Shifts are built as drafts, and publishing is a deliberate act by a named person

## Use Case Scenarios

### A pay period that closes on the data instead of on a spreadsheet

At period end an agent calls Get Payroll Report for the pay period and Get Payroll By Jobcode Report for job costing, with the overtime setting chosen deliberately rather than left at its default. It compares each person's totals against their scheduled hours and flags the outliers: a shift with no clock-out, a day with double the expected hours, an unassigned jobcode carrying real time. Only the exceptions reach a human. The clean totals move on to the payroll run, and a summary lands in [Slack](https://flowrunner.ai/integrations/slack) with the flagged people named so the controller knows exactly what is still open.

### Job costing that a project manager can read

Get Project Report groups tracked time by jobcode, user and custom field, and Get Project Estimate Report puts it beside what was planned. An agent runs both weekly, writes the variance into [Google Sheets](https://flowrunner.ai/integrations/google-sheets) alongside the estimate lines from List Estimate Items, and posts the projects burning through their estimate early. Nobody exports anything. The estimate lives in QuickBooks Time, the report reads it, and the conversation happens over a number both sides can trace.

### Clock hygiene handled before it becomes a payroll problem

Get Current Totals Report answers who is on the clock right now. An agent watching it can spot a shift that has run past midnight, a person still clocked in on a day they requested off, or a jobcode nobody is assigned to. Where the fix is mechanical, Update Timesheets sets the end time and clocks the person out. Where it is not, the agent raises it with the crew lead through Create Notifications inside the QuickBooks Time app itself, so the person who can answer sees it where they already are.

## Human-in-Loop Highlight

Every write in this connector can be corrected except one, and it is not a delete. Turning the draft flag off on a schedule event publishes the shift and notifies the people assigned to it. Their phones buzz, and they arrange childcare, transport and second jobs around what they were just told. Nothing in the API unsends that, and a corrected shift published an hour later is a second notification, not a retraction of the first.

So a FlowRunner scheduling agent builds the entire week as drafts. It reads approved leave, checks jobcode eligibility, balances hours against each person's expected total, and leaves every event unpublished. Then it stops and asks the scheduling manager: "Next week is drafted. Two Saturday slots are uncovered, Priya is 6 hours over her usual week, and Marcus has approved leave on Thursday that the previous draft ignored. Publish as drafted, or fix these first?" The manager decides, and publishing is their action. The agent did the assembly. The person did the thing that reaches into somebody's week. That division is what [human-in-the-loop](https://flowrunner.ai/concepts/human-in-the-loop) orchestration means in practice, and it is the reason this integration is safe to run on a schedule.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via preferred channel

Human decides

Agent resumes with decision

## Agent Capabilities

85 actions

### Account and Sync

4

-   **Get Current User** Returns the user the token belongs to, with their permissions. The cheapest way to check a connection is alive and to learn what the token may do.
-   **Get Effective Settings** Returns the settings that actually apply to a person once company, group and personal settings are combined. It answers what the app will do rather than what was configured where.
-   **Get Last Modified Timestamps** Returns when each endpoint's data last changed. The vendor asks integrations to poll this rather than every endpoint, so one small call decides what is worth re-reading.
-   **List Managed Clients** Returns the other QuickBooks Time accounts this one may manage. It is what a bookkeeper or a franchise integration uses to find its client accounts.

### Timesheets and the Clock

5

-   **List Timesheets** Reads timesheets for a period. People currently on the clock are excluded by default, so a live view has to ask for them.
-   **Create Timesheets** Records time, either as a clocked shift with a start and an end or as a manual day and duration. Leaving the end empty clocks the person in and leaves the timer running.
-   **Update Timesheets** Changes existing timesheets, including setting an end time to clock somebody out. A timesheet that has already been exported or invoiced is locked by the vendor and cannot be edited.
-   **Delete Timesheets** Permanently deletes timesheets. QuickBooks Time deletes rather than archives here, so the tracked time is gone.
-   **List Deleted Timesheets** Returns the timesheets that were deleted, which is the only way to reconcile a report against hours that have since disappeared.

### Jobcodes

6

-   **List Jobcodes** Reads the jobcodes time is tracked against: a customer, a job, a task or a paid time off bucket. Regular jobcodes come back by default, so time off buckets have to be asked for.
-   **Create Jobcodes** Creates jobcodes, optionally opening one to everybody rather than assigning it person by person.
-   **Update Jobcodes** Changes jobcodes. Deactivating one archives it, and every jobcode underneath it is archived at the same time.
-   **List Jobcode Assignments** Reads which people may track against which jobcodes. A jobcode open to everyone needs no assignment, so an empty result does not mean nobody can use it.
-   **Create Jobcode Assignments** Lets a person track time against a jobcode.
-   **Delete Jobcode Assignments** Takes away a person's access to a jobcode. Time already tracked against it stays.

### Users

4

-   **List Users** Reads the account's users with their groups, rates and permissions. Archived people are excluded unless asked for.
-   **Create Users** Creates users. Each one consumes a seat on the subscription, which makes bulk creation a billing decision as well as an access one.
-   **Update Users** Changes users, including deactivating somebody, which archives them, frees their seat and stops them tracking.
-   **Invite Users** Sends an invitation so the person sets their own password rather than having credentials created for them.

### Groups

3

-   **List Groups** Reads the account's groups with the people who manage each. Groups are how visibility is scoped for managers.
-   **Create Groups** Creates groups and names their managers.
-   **Update Groups** Renames groups, changes who manages them, or archives them. The manager list is replaced rather than added to.

### Projects

12

-   **List Projects** Reads projects, each backed by the jobcode its time is recorded against.
-   **Create Projects** Creates projects. The jobcode is fixed at creation and cannot be changed afterwards, so it is worth resolving before the call.
-   **Update Projects** Changes projects, including deactivating one. The jobcode and its tracked time survive that.
-   **List Project Activities** Reads a project's activity feed: the status changes, notes and events recorded against it.
-   **List Project Activity Replies** Reads the replies under one project activity entry.
-   **Create Project Activity Replies** Adds a reply to a project activity entry, which is how a flow answers inside the thread people are already reading.
-   **Update Project Activity Replies** Edits or removes replies on a project activity entry.
-   **List Project Activity Read Times** Reads how far each person has read into each project's feed, which is what an unread badge is built from.
-   **Update Project Activity Read Times** Marks a project's activity feed as read up to a point for the connected user.
-   **List Project Notes** Reads the notes attached to a project.
-   **Create Project Notes** Adds notes to a project.
-   **Update Project Notes** Edits or removes project notes.

### Schedules

4

-   **List Schedule Calendars** Reads the schedule calendars. Every schedule event belongs to one, so this is the read that runs first.
-   **List Schedule Events** Reads scheduled shifts. Draft shifts are excluded by default, which is what keeps an unpublished week out of a published view.
-   **Create Schedule Events** Creates scheduled shifts. Saving one as published sends the shift notifications, and leaving the assignees empty creates an open shift.
-   **Update Schedule Events** Changes scheduled shifts. Turning the draft flag off publishes the shift and notifies its assignees, which is the operation this page's human gate exists for.

### Time Off

6

-   **List Time Off Requests** Reads time off requests. Reading somebody else's needs administrator or group manager rights.
-   **Create Time Off Requests** Creates the request container. The individual days and hours are separate entries pointed back at it.
-   **Update Time Off Requests** Approves, denies or cancels requests. Approving is what turns the entries into real time off on the schedule.
-   **List Time Off Request Entries** Reads the individual days inside requests. Each names its own jobcode, which decides whether the day is paid.
-   **Create Time Off Request Entries** Adds a day of time off to a request, against the bucket it comes out of.
-   **Update Time Off Request Entries** Changes the days inside a request, including approving or denying a single day on its own.

### Reports

6

-   **Get Current Totals Report** Returns a live snapshot of who is on the clock, for how long today, and against what. The read behind a working-now board.
-   **Get Payroll Report** Returns totals per person for a pay period: regular, overtime, double time and paid time off. The overtime setting changes the arithmetic, so a payroll flow chooses it deliberately.
-   **Get Payroll By Jobcode Report** Returns payroll totals broken down per person and per jobcode, which is what job costing needs rather than one total each.
-   **Get Project Report** Returns time totals grouped by jobcode, user and custom field, filterable on the values recorded on the timesheets themselves.
-   **Get Project Estimate Report** Returns planned against actual per project: what was estimated, what has been used, and what is left.
-   **Get Project Estimate Detail Report** Returns the same comparison broken down to each estimate line rather than one total per project.

### Estimates

6

-   **List Estimates** Reads project estimates, which are the planned effort a project report is measured against.
-   **Create Estimates** Creates project estimates.
-   **Update Estimates** Changes project estimates.
-   **List Estimate Items** Reads the individual lines inside project estimates.
-   **Create Estimate Items** Adds lines to a project estimate.
-   **Update Estimate Items** Changes the lines inside a project estimate.

### Custom Fields

11

-   **List Custom Fields** Reads the account's custom fields. Timesheet fields come back by default, and at most six can be active at once.
-   **Create Custom Fields** Creates a custom field. A seventh active field is refused rather than queued, so a flow checks the count first.
-   **Update Custom Fields** Changes custom fields, including deactivating one to free a slot.
-   **List Custom Field Items** Reads the choices belonging to one managed-list custom field.
-   **Create Custom Field Items** Adds choices to a managed-list custom field.
-   **Update Custom Field Items** Renames or retires choices. Retiring one stops it being offered without disturbing the timesheets that already carry it.
-   **List Custom Field Item Filters** Reads which choices are offered to which people, groups and jobcodes. This is what keeps a long list usable on a crew's phone.
-   **Create Custom Field Item Filters** Offers a custom field choice to a person, group or jobcode.
-   **Update Custom Field Item Filters** Changes or removes the filters that decide who is offered which choice.
-   **List Custom Field Item Jobcode Filters** Reads which choices are tied to which jobcodes, from the jobcode side.
-   **List Custom Field Item User Filters** Reads which choices are tied to which people and groups, from the user side.

### Locations and Geofences

7

-   **List Locations** Reads the saved locations with their addresses and geocoding state. A location that has not finished geocoding has no coordinates yet, so geofencing against it will not work.
-   **Create Locations** Creates saved locations. Geocoding happens afterwards, so the record comes back with a status rather than coordinates.
-   **Update Locations** Changes saved locations. Changing an address sends it back through geocoding.
-   **List Locations Maps** Reads which saved locations are mapped to which jobcodes. It is the join between a place and the work done there.
-   **List Geofence Configs** Reads the geofences: which locations or jobcodes have a boundary, how large it is and whether it is switched on.
-   **List Geolocations** Reads recorded GPS positions for named people. This is location data about identified employees, and it should be read only for a purpose the workforce has been told about.
-   **Create Geolocations** Records GPS positions against a person. It writes location history about a named individual, so it belongs only in workflows the workforce knows about.

### Files

5

-   **List Files** Reads the files stored on the account, such as photos attached to timesheets.
-   **Upload File** Uploads a file from FlowRunner file storage and returns its record, whose id is what attaches it to a timesheet.
-   **Update Files** Changes a file's record, which is also how it is attached to or detached from a timesheet.
-   **Download File** Downloads a stored file into FlowRunner file storage and returns its URL.
-   **Delete Files** Permanently deletes stored files, including photo evidence attached to a timesheet.

### Reminders and Notifications

6

-   **List Reminders** Reads clock-in and clock-out reminders, either for named people or for the company-wide set.
-   **Create Reminders** Creates clock-in or clock-out reminders. A company-wide reminder applies to everybody, so the scope is worth checking before the call.
-   **Update Reminders** Changes clock-in and clock-out reminders, including switching one off.
-   **List Notifications** Reads notifications scheduled or delivered to people.
-   **Create Notifications** Sends a notification into a person's QuickBooks Time app, with a tracking id so the same message can be found again later.
-   **Delete Notifications** Permanently deletes notifications. Deleting one that has not been delivered yet cancels it.

## Frequently Asked Questions

### What can FlowRunner do with QuickBooks Time (TSheets)?

FlowRunner agents can run Get Current User, Get Effective Settings, and Get Last Modified Timestamps in QuickBooks Time (TSheets), plus 82 more actions.

### Does connecting QuickBooks Time (TSheets) to FlowRunner require OAuth?

Yes. QuickBooks Time (TSheets) connects to FlowRunner with OAuth 2.0, so agents authenticate without handling raw credentials.

### Can QuickBooks Time (TSheets) trigger a FlowRunner workflow automatically?

QuickBooks Time (TSheets) doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

**Work at QuickBooks Time (TSheets)?** This integration exposes QuickBooks Time (TSheets) to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/tsheets. Site index: https://flowrunner.ai/llms.txt
