Timesheets

Timesheets ensure that workers are paid appropriately. They also help project managers invoice clients and track overall project costs and expenses over time. Timesheets are used in both Projects and Time & Expenses. A subscription to Projects is required to approve timesheets and save timesheets as drafts.

Each time a timesheet entry is submitted, a timesheet approval history object is created for tracking purposes. Many settings that impact required timesheet information are configured in Projects. See Configure Projects in the Sage Intacct Help Center for more information.

List timesheets

get/objects/time/timesheet

Returns up to 100 object references from the collection with a key, ID, and link for each timesheet. This operation is mostly for use in testing; use query to find timesheets that meet certain criteria and to specify properties that are returned.

Permissions and other requirements
SubscriptionTime & Expenses
User typeBusiness, Project Manager, or Employee
PermissionsList Timesheets
SecurityOAuth2
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": [
    • {
      • "key": "101",
      • "id": "101",
      • "href": "/objects/time/timesheet/101"
      },
    • {
      • "key": "102",
      • "id": "102",
      • "href": "/objects/time/timesheet/102"
      },
    • {
      • "key": "103",
      • "id": "103",
      • "href": "/objects/time/timesheet/103"
      }
    ],
  • "ia::meta": {
    • "totalCount": 3,
    • "start": 1,
    • "pageSize": 100,
    • "next": 0,
    • "previous": 0
    }
}

Create a timesheet

post/objects/time/timesheet

Creates a new timesheet.

Permissions and other requirements
SubscriptionTime & Expenses
User typeBusiness, Project Manager, or Employee
PermissionsAdd timesheets
SecurityOAuth2
Request
Request Body schema: application/json

timesheet

beginDate
required
string <date>

Begin date of the work period.

Example: "2024-01-01"
postingDate
string <date>

Defaults to timesheet endDate. If endDate falls within a closed GL period, then postingDate automatically defaults to the first day of the next open GL period.

Example: "2024-01-01"
state
string
Default: "draft"

State of the timesheet in the approval cycle, such as approved or declined.

Enum: "approved" "declined" "draft" "partiallyApproved" "partiallyDeclined" "saved" "submitted"
Example: "submitted"
description
string

Timesheet description.

Example: "Week of 2024-01-01 to cover help desk"
object

The employee who performed the work and whose time is being tracked.

key
string

Unique key for the employee.

Example: "973"
id
string

Unique identifier for the employee.

Example: "E-001"
object

Supporting documentation for the timesheet.

key
string

Unique key for the attachment.

Example: "8420"
id
string

Unique identifier for the attachment.

Example: "Attach-01"
Array of objects

Time entries

Array
object

The timesheet to which the line belongs.

entryDate
string <date>

Date of the timesheet line entry.

Example: "2024-04-01"
quantity
number

Number of hours or quantity.

Example: 6
description
string or null

Description of the individual timesheet line.

Example: "04/01/24: work on Project Z."
notes
string or null

Notes about the timesheet line.

Example: "Talked to client regarding project"
object

Categorizes the time. Each company's time types can differ and can include salary, contract hours, overtime, vacation, travel time, and so on.

isBillable
boolean
Default: false

Indicates whether the line can be billed. Set to true if the line can be billed to a customer.

Example: true
object

External payroll details, such as information from Sage Intacct Construction Payroll.

object
Responses
201

Created

400

Bad Request

Request samples
application/json
{
  • "beginDate": "2024-01-01",
  • "state": "submitted",
  • "description": "Week of 01/01/24",
  • "employee": {
    • "key": "973"
    },
  • "attachment": {
    • "key": "8420"
    },
  • "lines": [
    • {
      • "dimensions": {
        },
      • "entryDate": "2024-04-01",
      • "quantity": 6,
      • "description": "Week of 04/01/24",
      • "notes": "Talked to client regarding project",
      • "timeType": {
        },
      • "isBillable": true
      }
    ]
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "40",
    • "id": "40",
    • "href": "/objects/time/timesheet/40"
    },
  • "ia::meta": {
    • "totalCount": 1
    }
}

Get a timesheet

get/objects/time/timesheet/{key}

Returns detailed information for a specified timesheet.

Permissions and other requirements
SubscriptionTime & Expenses
User typeBusiness, Project Manager, or Employee
PermissionsList Timesheets
SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned unique key for the timesheet.

Example: 54
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "key": "23",
    • "id": "23",
    • "href": "/objects/time/timesheet/23",
    • "beginDate": "2024-01-01",
    • "endDate": "2024-12-31",
    • "postingDate": "2024-01-01",
    • "state": "submitted",
    • "unitOfMeasure": "Hours",
    • "hoursInDay": 8,
    • "description": "Week of 01/01/24",
    • "calculationMethod": "hourly",
    • "postActualLaborCost": false,
    • "employee": {
      • "key": "973",
      • "id": "E-001",
      • "href": "/objects/company-config/employee/973"
      },
    • "employeeContact": {
      • "key": "977",
      • "id": "John Smith",
      • "firstName": "John",
      • "lastName": "Smith",
      • "href": "/objects/company-config/contact/977"
      },
    • "attachment": {
      • "key": "8420",
      • "id": "Attach-01",
      • "href": "/objects/company-config/attachment/973"
      },
    • "employeeClassId": "EMP_CLS_001",
    • "employeeDepartmentId": "DEP-11",
    • "employeeLocation": {
      • "key": "22",
      • "id": "LOC-22",
      • "href": "/objects/company-config/location/22"
      },
    • "employeePositionId": "MGR",
    • "lines": [
      • {
        }
      ],
    • "audit": {
      • "createdDateTime": "2022-04-20T16:20:00Z",
      • "modifiedDateTime": "2022-04-20T16:20:00Z",
      • "createdBy": "1",
      • "modifiedBy": "95"
      }
    },
  • "ia::meta": {
    • "totalCount": 3
    }
}

Update a timesheet

patch/objects/time/timesheet/{key}

Updates an existing timesheet by setting field values. Any fields not provided remain unchanged.

Permissions and other requirements
SubscriptionTime & Expenses
User typeBusiness, Project Manager, or Employee
PermissionsUpdate Timesheets
SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned unique key for the timesheet.

Example: 54
Request Body schema: application/json
beginDate
string <date>

Begin date of the work period.

Example: "2024-01-01"
postingDate
string <date>

Defaults to timesheet endDate. If endDate falls within a closed GL period, then postingDate automatically defaults to the first day of the next open GL period.

Example: "2024-01-01"
state
string
Default: "draft"

State of the timesheet in the approval cycle, such as approved or declined.

Enum: "approved" "declined" "draft" "partiallyApproved" "partiallyDeclined" "saved" "submitted"
Example: "submitted"
description
string

Timesheet description.

Example: "Week of 2024-01-01 to cover help desk"
object

The employee who performed the work and whose time is being tracked.

key
string

Unique key for the employee.

Example: "973"
id
string

Unique identifier for the employee.

Example: "E-001"
object

Supporting documentation for the timesheet.

key
string

Unique key for the attachment.

Example: "8420"
id
string

Unique identifier for the attachment.

Example: "Attach-01"
Array of objects

Time entries

Array
object

The timesheet to which the line belongs.

entryDate
string <date>

Date of the timesheet line entry.

Example: "2024-04-01"
quantity
number

Number of hours or quantity.

Example: 6
description
string or null

Description of the individual timesheet line.

Example: "04/01/24: work on Project Z."
notes
string or null

Notes about the timesheet line.

Example: "Talked to client regarding project"
object

Categorizes the time. Each company's time types can differ and can include salary, contract hours, overtime, vacation, travel time, and so on.

isBillable
boolean
Default: false

Indicates whether the line can be billed. Set to true if the line can be billed to a customer.

Example: true
object

External payroll details, such as information from Sage Intacct Construction Payroll.

object
Responses
200

OK

400

Bad Request

Request samples
application/json
{
  • "state": "submitted",
  • "description": "Week of 01/01/24"
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "40",
    • "id": "40",
    • "href": "/objects/time/timesheet/40"
    },
  • "ia::meta": {
    • "totalCount": 1
    }
}

Delete a timesheet

delete/objects/time/timesheet/{key}

Deletes a timesheet.

Permissions and other requirements
SubscriptionTime & Expenses
User typeBusiness, Project Manager, or Employee
PermissionsDelete Timesheets
SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned unique key for the timesheet.

Example: 54
Responses
204

No Content

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "ia::error": {
      • "code": "invalidRequest",
      • "message": "A POST request requires a payload",
      • "errorId": "REST-1028",
      • "additionalInfo": {
        },
      • "supportId": "Kxi78%7EZuyXBDEGVHD2UmO1phYXDQAAAAo"
      }
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 0,
    • "totalError": 1
    }
}

Query timesheets

post/services/core/query

Use the query service to find timesheets that meet certain criteria and to specify the properties that are returned.

SecurityOAuth2
Responses
200

OK

Request samples