---
title: "Create a contractor timesheet"
method: POST
path: "/v1/contractors/employments/{employment_id}/timesheets"
tags: ["Timesheets"]
---

# Create a contractor timesheet

`POST /v1/contractors/employments/{employment_id}/timesheets`

Creates a timesheet on behalf of a contractor employment.

The submitted hours are immediately available to the contractor in the Remote UI for
self-serve invoice creation (Invoices → Create invoice → "Use Time Tracking").

This endpoint is restricted to contractor employments. Calls against EOR or Global Payroll
employments are rejected with `422`.


## Scopes

| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timesheets (`timesheet:write`) |

## Path parameters

- `employment_id` string, required

## Request body

- ContractorCreateTimesheetParams — Parameters for creating a timesheet on behalf of a contractor employment. The target employment is taken from the URL path, not the request body. Allowed `time_trackings.type` values are restricted to the contractor subset: `regular_hours`, `on_call`, `break`.
  - `end_date` string, date, required — UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
  - `start_date` string, date, required — UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
  - `time_trackings` ContractorTimeTrackingParams[], required — One or more time tracking entries to include in the timesheet.
    - `clock_in` string, date-time, required — UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
    - `clock_out` string, date-time, required — UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
    - `notes` string, nullable — Optional free-text notes about this time entry, such as project or task details.
    - `timezone` string, required — [TZ identifier](https://www.iana.org/time-zones)
    - `type` 'regular_hours' | 'on_call' | 'break', required — The category of time being tracked. Contractors are restricted to `regular_hours`, `on_call`, or `break`.

## Response `200`

Success

- ContractorTimesheetResponse — Response returned after creating a contractor timesheet.
  - `data` object
    - `timesheet` ContractorTimesheet, required — A contractor timesheet, returned by the contractor create endpoint. Only contains fields relevant to the contractor flow — EOR-only fields (overtime, night/weekend/holiday hours, approval flag) are not included.
      - `break_hours` HoursAndMinutes, required — A duration expressed as hours and minutes.
        - `hours` integer — The number of whole hours.
        - `minutes` integer — The number of remaining minutes (0-59).
      - `country_code` string, required — Country code according to ISO 3166-1 3-digit alphabetic codes.
      - `employment_id` string, uuid, required — Identifier of the employment being terminated.
      - `end_date` string, date, required — UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
      - `id` string, uuid, required — Identifier of the employment being terminated.
      - `notes` string, nullable, required — Optional notes attached to the timesheet.
      - `on_call_hours` HoursAndMinutes, required — A duration expressed as hours and minutes.
        - `hours` integer — The number of whole hours.
        - `minutes` integer — The number of remaining minutes (0-59).
      - `regular_hours` HoursAndMinutes, required — A duration expressed as hours and minutes.
        - `hours` integer — The number of whole hours.
        - `minutes` integer — The number of remaining minutes (0-59).
      - `start_date` string, date, required — UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
      - `submitted_at` string, datetime, nullable, required — The timestamp the timesheet was submitted.
      - `time_trackings` ContractorTimeTracking[], required — The individual time tracking entries that make up this timesheet.
        - `clock_in` string, date-time, required — UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
        - `clock_out` string, date-time, required — UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
        - `notes` string, nullable, required — Optional notes about this entry.
        - `timezone` string, required — [TZ identifier](https://www.iana.org/time-zones)
        - `total_hours` HoursAndMinutes, required — A duration expressed as hours and minutes.
          - `hours` integer — The number of whole hours.
          - `minutes` integer — The number of remaining minutes (0-59).
        - `type` 'regular_hours' | 'on_call' | 'break', required — The category of time being tracked. One of `regular_hours`, `on_call`, `break`.
      - `total_hours` HoursAndMinutes, required — A duration expressed as hours and minutes.
        - `hours` integer — The number of whole hours.
        - `minutes` integer — The number of remaining minutes (0-59).

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Entity

---

[API](https://skmtc.net/remote-com/apis/remote.md) · [All operations](https://skmtc.net/remote-com/apis/remote/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/remote-com/remote/revisions/7e6a0c61ac82/schema)
