Time & Attendance
Timesheets

Create a contractor timesheet

Changed on

Creates a timesheet on behalf of a contractor employment.

The timesheet is created as an open draft, matching a timesheet the contractor creates themselves: the contractor can still edit the hours, and the customer approves them through the contractor's invoice rather than the timesheet. Contractor timesheets can't be submitted or approved through the API.

The 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.

Authentication

This endpoint accepts any one of the following token types:

  • Company-scoped access token (OAuth2AuthorizationCode) — obtained through the Authorization Code flow or the Refresh Token flow. See Authentication for partners.
  • Customer API token (CustomerAPIToken) — generated by the customer on their Integration Settings page. See Authorization for customers.

Scopes

CategoryRead only ScopeWrite only Scope (read access implicit)
Manage timeoffs (time_and_attendance)-Manage timesheets (timesheet:write)
post/v1/contractors/employments/{employment_id}/timesheets

Request

  • Base URL: https://gateway.remote.com
  • URL: https://gateway.remote.com/v1/contractors/employments/{employment_id}/timesheets
  • Auth: HTTP bearer and OAuth 2 (authorization code, authorization URL /auth/oauth2/authorize, token URL /auth/oauth2/token, scopes: https://gateway.remote.com/company.manage, timesheet:write, time_and_attendance, all:write)

Path parameters

employment_idstring required

Contractor employment ID

Request body

end_datestring date required

UTC date in ISO 8601 format

start_datestring date required

UTC date in ISO 8601 format

Example request

{
  "end_date": "2021-07-01",
  "start_date": "2021-07-01",
  "time_trackings": [
    {
      "clock_in": "2021-07-15T18:18:17Z",
      "clock_out": "2021-07-15T18:18:17Z",
      "notes": "Project Alpha",
      "timezone": "Etc/UTC",
      "type": "regular_hours"
    }
  ]
}

Response

Success

Example response

{
  "data": {
    "timesheet": {
      "break_hours": {
        "hours": 35,
        "minutes": 13
      },
      "country_code": "PRT",
      "employment_id": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
      "end_date": "2021-07-01",
      "id": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
      "notes": null,
      "on_call_hours": {
        "hours": 35,
        "minutes": 13
      },
      "regular_hours": {
        "hours": 35,
        "minutes": 13
      },
      "start_date": "2021-07-01",
      "status": "open",
      "submitted_at": null,
      "time_trackings": [
        {
          "clock_in": "2021-07-15T18:18:17Z",
          "clock_out": "2021-07-15T18:18:17Z",
          "notes": "Project Alpha",
          "timezone": "Etc/UTC",
          "total_hours": {
            "hours": 35,
            "minutes": 13
          },
          "type": "regular_hours"
        }
      ],
      "total_hours": {
        "hours": 35,
        "minutes": 13
      }
    }
  }
}

Changes

    • info

      added the required property // to the response with the status

    • breaking

      the response's body type changed from object to no type for status

    • info

      added to the response body anyOf list for the response status

    • info

      removed subschema #1 subschema #2 from the response body anyOf list for the response status