When to use Excel import

  • Migrating from a legacy system or spreadsheet-based attendance register
  • Back-filling attendance for a period before Octal HR was deployed
  • Processing a month's attendance for a remote branch with no device connectivity

The Excel import loads processed daily attendance — one row per employee per day, each with a status. It accepts .xlsx and .xls files only (not CSV). To import a raw punch log straight from a device, use the device import under Attendance → Devices instead — that is a separate feature.

Download the template

1
Go to Attendance → Import.
2
Click Download Template to get the attendance_import_template.xlsx file.
3
Open it in Excel. Do not rename or reorder the column headers — the importer matches by column position and expects them unchanged. The Status column has a built-in dropdown of the valid values.

Column reference

ColumnRequired?Format / notes
Employee NameOptionalFor your reference only; the importer matches on Employee Code.
Employee CodeRequiredMust match the employee's code in Octal HR exactly (e.g., EMP-001).
Date (YYYY-MM-DD)RequiredYYYY-MM-DD format (e.g., 2026-05-01). Excel date cells are also accepted.
StatusRequiredOne of: present, absent, half_day, late, holiday, on_leave. Chosen from the dropdown.
Check In (HH:MM)OptionalHH:MM (24-hour). Leave blank if not applicable.
Check Out (HH:MM)OptionalHH:MM (24-hour). Leave blank if not applicable.
OT HoursOptionalOvertime hours for the day (e.g., 1.5). Defaults to 0.
NotesOptionalFree text note stored with the record.

Filling the file

Example rows in the template:

Employee Name,Employee Code,Date,Status,Check In,Check Out,OT Hours,Notes
John Doe,EMP-001,2026-05-01,present,09:03,18:22,0,
Jane Smith,EMP-002,2026-05-01,late,09:45,18:00,0,
Ali Raza,EMP-003,2026-05-01,absent,,,0,
Sara Khan,EMP-004,2026-05-01,half_day,09:00,13:00,0,
Bilal Ahmed,EMP-005,2026-05-01,on_leave,,,0,Sick leave approved
Zoya Malik,EMP-006,2026-05-01,holiday,,,0,Labour Day

Key rules:

  • Every row must have an Employee Code, a Date, and a Status. Rows missing any of these are skipped and listed in the import report.
  • The Status you enter is kept as-is — the Excel import does not auto-recompute status from the times. Choose the status you want the record to have.
  • One row per employee per day. If a record already exists for that employee and date, it is skipped unless you enable Override on upload, which updates it.
  • Date must be YYYY-MM-DD, or a real Excel date cell. Text like "1-May-26" is rejected.

Upload and import

1
Go to Attendance → Import.
2
Select your filled .xlsx (or .xls) file. Optionally tick Override existing records to update days that already have attendance.
3
Click Import. Octal HR reads each row and validates the employee code, date, and status.
4
A summary shows how many records were created and updated. Any rows that could not be imported are listed with the reason (unknown code, invalid date, invalid status, or an existing record when Override is off).
5
Fix the listed rows in the file and re-upload if needed.

Common import errors

  • Employee code not found — The code in the file doesn't match any active employee. Check for leading zeros or typos.
  • Invalid date — Use YYYY-MM-DD or a real Excel date cell. Text strings like "1-May-26" are rejected.
  • Invalid status — Use exactly one of: present, absent, half_day, late, holiday, on_leave.
  • Record already exists — A record for that employee and date is already present. Enable Override to update it, otherwise the row is skipped.