Skip to main content
Required permission: hr.attendances Recorded attendance feeds payroll: when you generate it, the manager reviews the absences and overtime detected and decides which ones to apply.

Send clock-ins

Records up to 500 clock-ins per request. Each record is one employee on one day.
Each record supports one of these time formats: Behavior
  • Idempotent: if a record already exists for the employee on that date, it is updated. Resending the same batch does not create duplicates.
  • You can send the check-in first and the check-out of the same day later: omitted fields keep their previous value.
  • Each record is processed separately: an error does not stop the rest of the batch.
  • If you send check_in_at/check_out_at or punches, they take priority over check_in/check_out. date is the day the shift starts.
  • With punches, the day’s check-in is the first in punch and the check-out is the last out; gaps between an out and the next in count as break time. Punches are stored individually and resending them does not duplicate them.
  • Each clock-in recalculates the day’s result (tardiness, overtime, etc.).
200 response
index corresponds to the position of the record in records. If all records fail, the response has code 422.

Query attendance

check_in_at and check_out_at are null on older records that only have a time. For night shifts, check_out_at shows the actual check-out date. For schedule compliance and the classified hours of each day, see Attendance results.