Attendance > Shift

Clocks out a shift

Changed on

Completes an open shift by setting the current time as the clock-out. This action only applies to shifts that were previously started using clock_in. If you need to clock in directly, consider using or subscribing to the clock-in endpoint

post/api/2026-10-01/resources/attendance/shifts/clock_out

Request

  • Base URL
    https://api.factorialhr.com
  • URL
    https://api.factorialhr.com/api/2026-10-01/resources/attendance/shifts/clock_out
  • Auth
    • OAuth 2
      Authorization code: https://id.factorialhr.com/oauth/authorize
      Token URL: https://id.factorialhr.com/api/oauth/token scopes: time_tracking
    • or API key in header x-api-key

Request body

employee_idstring

Employee identifier

nowstring required

Clock out time

latitudenumber

Latitude from where user clocked in

longitudenumber

Longitude from where user clocked in

accuracynumber

Location accuracy

observationsstring

Notes on the shift record

Example request

{
  "employee_id": "1",
  "now": "2024-06-23T11:00:00.000+00:00",
  "latitude": 52.377956,
  "longitude": 4.89707,
  "accuracy": 5,
  "observations": "I clocked in 10 minutes before"
}

Response

OK

idstring required

Unique identifier for the shift

employee_idstring required

Identifier for the employee assigned to the shift

datestring required

Date of the shift

reference_datestring required

The business day this shift is attributed to; can differ from date for overnight shifts that cross midnight

clock_instring

Time when the employee clocked in

clock_outstring

Time when the employee clocked out

in_sourcestring

Source of the clock-in time

out_sourcestring

Source of the clock-out time

observationsstring

Additional observations about the shift

location_type'office' | 'business_trip' | 'work_from_home'

Type of location for the shift

half_day'beginning_of_day' | 'end_of_day'

Which half of the day the shift covers when it is a half-day — beginning_of_day or end_of_day; null for full-day shifts

in_location_latitudenumber

Latitude of the clock-in location

in_location_longitudenumber

Longitude of the clock-in location

in_location_accuracynumber

Accuracy of the clock-in location

out_location_latitudenumber

Latitude of the clock-out location

out_location_longitudenumber

Longitude of the clock-out location

out_location_accuracynumber

Accuracy of the clock-out location

workableboolean

Whether the shift counts as worked (workable) time rather than a break

created_atstring required

Timestamp when the shift record was created

workplace_idstring

Identifier for the location

time_settings_break_configuration_idstring

Identifier for the break configuration

company_idstring required

Identifier for the company

updated_atstring required

Timestamp when the shift record was updated

minutesinteger required

Number in minutes of the shift

clock_in_with_secondsstring

Clock in time with seconds

Example response

{
  "id": "1",
  "employee_id": "1",
  "date": "2023-10-01",
  "reference_date": "2023-09-30",
  "clock_in": "08:30",
  "clock_out": "12:30",
  "in_source": "automatic",
  "out_source": "automatic",
  "observations": "Employee arrived late due to traffic",
  "location_type": "office",
  "half_day": "beginning_of_day",
  "in_location_latitude": 37.7749,
  "in_location_longitude": -122.419,
  "in_location_accuracy": 5,
  "out_location_latitude": 37.7749,
  "out_location_longitude": -122.419,
  "out_location_accuracy": 5.7,
  "workable": true,
  "created_at": "2023-10-01T08:00:00.000Z",
  "workplace_id": "1",
  "time_settings_break_configuration_id": "1",
  "company_id": "1",
  "updated_at": "2023-10-01T08:00:00.000Z",
  "minutes": 240,
  "clock_in_with_seconds": "08:30:15"
}

Changes