---
title: "Create Time Punch"
method: POST
path: "/v2/company/{company_id}/time_punches"
tags: ["Time Punches"]
---

# Create Time Punch

`POST /v2/company/{company_id}/time_punches`

## Request

- Base URL: `https://api.7shifts.com`
- URL: `https://api.7shifts.com/v2/company/{company_id}/time_punches`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://app.7shifts.com/oauth2/authorize`
    - Client credentials
    - Password
    - Token URL: `https://app.7shifts.com/oauth2/token`
  - API key in cookie `7session`

## Path parameters

- `company_id` integer, required

## Headers

- `x-api-version` string: An API version
- `x-company-guid` string, uuid

## Request body

- object
  - `location_id` integer, required: Location ID.
  - `department_id` integer: Department ID. Defaults to 0 if not defined. Required if location has departments setup.
  - `user_id` integer, required: The 7shifts ID of the user who is clocking in.
  - `role_id` integer: The ID of the role that the user is clocking in to work for. Defaults to 0 if not defined.
  - `clocked_in` string, date-time, required: The start date and time when the user clocked in. Formatted as ISO8601 datetime in UTC timezone.
  - `clocked_out` string, date-time: The start date and time when the user clocked out. Formatted as ISO8601 datetime in UTC timezone.
  - `notes` string: Additional notes for a shift.
  - `tips` integer, nullable: Tips declared for the shift in cents
  - `breaks` object[]
    - `paid` boolean, required: Specifies whether the break is paid or unpaid. Default true when no existing setting is found.
    - `in` string, date-time, required: The start date and time of the break. Formatted as ISO8601 datetime in UTC timezone.
    - `out` string, date-time: The end date and time of the break. Formatted as ISO8601 datetime in UTC timezone.
    - `custom_break_id` integer, nullable: The custom break id belonging to the break if the break is a custom break.

## Response `201`

Created

- object
  - `object` 'time_punch', required
  - `data` object, required
    - `id` integer, required: Time punch ID
    - `shift_id` integer, required: Shift ID. Can be unassigned
    - `user_id` integer, required: The 7shifts ID of the user who is clocking in.
    - `editable_punch` boolean, required: If true the time punch can be edited by a manager. Set to false via POS integrations
    - `role_id` integer, required: Role ID
    - `company_id` integer, required: Company ID
    - `location_id` integer, required: Location ID
    - `department_id` integer, nullable: Department ID. Defaults to 0 if not defined.
    - `hourly_wage` integer, required: Calculated hourly wage. Use the users_wages endpoint value for accuracy
    - `approved` boolean, required: If true the time punch is approved
    - `clocked_in` string, date-time, required: The start date and time when the user clocked in. Formatted as ISO8601 datetime in UTC timezone.
    - `clocked_out` string, date-time, nullable, required: The start date and time when the user clocked out. Formatted as ISO8601 datetime in UTC timezone.
    - `notes` string, required: Additional notes for a shift
    - `auto_clocked_out` boolean, required: If true the time punch was auto clocked out
    - `clocked_in_offline` boolean, required: If true the time punch was clocked in offline
    - `clocked_out_offline` boolean, required: If true the time punch was clocked out offline
    - `tips` integer, required: Tips declared for the shift in cents
    - `pos_type` string, nullable: The source of the time punch. 7shift apps will be web
    - `breaks` object[]
      - `id` integer, required
      - `user_id` integer, required
      - `custom_break_id` integer, required
      - `paid` boolean, required
      - `in` string, date-time, required
      - `out` string, date-time, nullable, required
    - `created` string, date-time, nullable, required: The date and time when created. Formatted as ISO8601 datetime in UTC timezone.
    - `modified` string, date-time, nullable, required: The date and time when last modified. Formatted as ISO8601 datetime in UTC timezone.
    - `deleted` boolean: If true the time punch is deleted

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `422`: Unprocessable Entity
- `500`: Server Error

---

[API](https://skmtc.dev/7shifts/apis/7shifts-api.md) - [All operations](https://skmtc.dev/7shifts/apis/7shifts-api/llms.txt) - [OpenAPI document](https://skmtc.dev/7shifts/apis/7shifts-api/revisions/40e0ef40dfcd?raw)
