TEMPLATE

Employee Attendance Sheet with In and Out Time (Excel Template)

A daily attendance log for Excel that records in time, out time and break minutes, then calculates worked hours, late minutes and overtime automatically, with a per-employee monthly summary sheet.

Employee attendance sheet in Excel showing in time, out time and worked hours columns

What this in-out time attendance sheet is for

A status-only sheet tells you who came; this one tells you when they came, when they left, and how long they actually worked. It is meant for businesses where hours drive pay or discipline: a restaurant paying kitchen staff for extra hours, a clinic with staggered shifts, a small factory that must track a 9-hour day under the Factories Act, or an office with a late-coming policy that deducts after three late marks.

The design is a daily log rather than a grid. Every row is one employee on one date. That structure is what lets Excel calculate hours with simple formulas and then summarise by employee with SUMIF. It is also the shape that payroll software and the working hours calculator expect if you later need to import or check the data.

It works for up to a few hundred rows a month (say 20 employees x 26 days = 520 rows) without slowing down. Above that, filtering and manual entry become the bottleneck rather than Excel itself.

What is inside: the Daily Log and Summary sheets

Sheet one is Daily Log. Its columns, left to right, are Date, Emp ID, Name, Shift Start, Shift End, In Time, Out Time, Break (mins), Worked Hours, Late By (mins), Overtime Hours and Remarks. Shift Start and Shift End are the scheduled times for that employee that day (for example 09:30 and 18:30). In Time and Out Time are what actually happened. Break is entered in minutes because most Indian workplaces give a fixed 30 or 45-minute lunch and it is easier to type 30 than 00:30.

Worked Hours is calculated: =IF(OR(In="",Out=""),"",MOD(Out-In,1)*24-Break/60). The MOD(...,1) wrapper handles shifts that cross midnight, so an In of 21:00 and an Out of 06:00 correctly returns 9 hours rather than a negative number. Multiplying by 24 converts Excel's fractional-day time into decimal hours, and the IF guard keeps the cell blank until both punches exist. Late By is =IF(In>ShiftStart,(In-ShiftStart)*1440,0), giving minutes. Overtime Hours is worked hours beyond the scheduled shift length: =MAX(0,WorkedHours-(MOD(ShiftEnd-ShiftStart,1)*24-Break/60)).

Sheet two is Summary. It has one row per employee with Emp ID, Name, Days Logged, Total Worked Hours, Total Late Minutes, Late Count and Total Overtime Hours. Each uses SUMIF or COUNTIF against the Daily Log, for example =SUMIF(DailyLog!B:B,A5,DailyLog!I:I) for total worked hours where column B holds Emp ID and column I holds Worked Hours. Late Count is =COUNTIFS(DailyLog!B:B,A5,DailyLog!J:J,">0").

  • All time cells are formatted hh:mm so you can type 9:35 and Excel stores it correctly
  • Worked Hours and Overtime Hours are decimal (8.50 not 8:30) because payroll multiplies them by a rate
  • Remarks is free text for OD, half day, missed punch and similar notes

How to use it day by day

Enter one row per employee per working day. The fastest method is to pre-fill the Date, Emp ID, Name, Shift Start and Shift End for the whole month on day one (26 rows per employee), sort by date, and then only type In, Out and Break as the month progresses. Pre-filling also makes missed punches visible: any row with a Date in the past and a blank In Time is a missed punch to chase.

For a missed out-punch, do not guess the time. Put the shift end time in Out Time and write MP in Remarks, or leave it blank so Worked Hours stays empty and payroll treats it under your missed-punch rule. The guide on handling missed punches in payroll explains the common rules.

At month end, the Summary sheet is ready without any extra work. Check that Days Logged matches expected working days for each employee, then read Total Overtime Hours into your overtime sheet and Late Count into your late-coming policy. Print the Summary for signatures; the Daily Log is usually kept as the backup file.

  • Turn on the filter on the Daily Log header row to view a single employee or a single date
  • Sort by Late By descending on the last working day to see the month's habitual late-comers
  • Use Ctrl+Shift+; to enter the current time when marking a live punch at a reception desk

How to customise grace, shifts and rounding

Almost every company allows a grace period. To add a 10-minute grace, change Late By to =IF(In>ShiftStart+TIME(0,10,0),(In-ShiftStart)*1440,0). The late mark and grace period entries in the glossary cover how companies usually set these, including the three-lates-equals-half-day rule that many Indian offices use.

If your team has fixed shifts, put the shift times in a small lookup table on the Summary sheet and use VLOOKUP on a Shift Code column so that typing G, M or N fills Shift Start and Shift End automatically. For rotating rosters, the shift code will differ by date, so keep the manual Shift Start and Shift End columns and fill them from your roster.

For overtime rounding, wrap the Overtime Hours formula in FLOOR(...,0.5) to pay in half-hour blocks, or ROUND(...,2) for exact minutes. Check your state's rules and any settlement with workers before rounding down; the safe default is exact minutes. For payroll, the Excel hours-for-payroll guide shows how the Summary feeds a salary sheet.

  • Add an Early Exit (mins) column with =IF(AND(Out<>"",Out<ShiftEnd),(ShiftEnd-Out)*1440,0)
  • Add a Status column: =IF(WorkedHours="","",IF(WorkedHours<4,"HD","P")) to derive half days from hours
  • Change 1440 to 60 if you prefer late minutes shown as decimal hours

Rules and compliance context

Recording actual in and out times is what makes daily-hours limits checkable. The Factories Act 1948 caps work at 9 hours a day and 48 a week with a spread-over of 10.5 hours, and requires overtime at twice the ordinary rate beyond those limits. Most state Shops and Establishments Acts apply similar daily and weekly caps to shops and offices. The Worked Hours and Overtime Hours columns give you the evidence either way, and the overtime calculation formula explains how to convert overtime hours into rupees.

Under the Labour Codes in force since 21 November 2025, overtime must be paid at not less than twice the normal wage and requires the worker's consent. Keeping a per-day record with an Out Time later than Shift End is your consent-and-payment trail; a status-only sheet cannot show this.

In and out times are personal data about an identifiable employee. Under the DPDP Act 2023 you should tell employees what is recorded and why, keep it only as long as needed for payroll and compliance, and restrict who can open the file. A shared workbook on a common desktop rarely meets that standard.

When the spreadsheet stops working

The weak point of this sheet is not the formulas but the source of the times. Someone has to type them, either from a paper sign-in book, a biometric device export or from memory. Typing 500 rows a month is an afternoon of work and every row is a chance for a transposed digit. The other weak point is trust: an employee disputing a late mark has no way to check what was recorded, and an admin can quietly edit a cell.

Attend Mitra captures the punch in and punch out directly from the employee's phone with face or selfie verification and site geofence, applies the shift's grace and break rules, and produces this same daily log and summary as an export. Late marks, early exits and overtime appear per day, corrections need approval and leave an audit trail, and offline punches sync when the network returns. See the attendance solution for how the shift rules are configured, or keep using this sheet and export from a biometric device into it using the biometric-to-payroll guide.

Frequently Asked Questions

How do I calculate working hours from in time and out time in Excel?
Use =MOD(OutTime-InTime,1)*24-BreakMinutes/60. MOD handles shifts that cross midnight, multiplying by 24 converts Excel time to decimal hours, and subtracting break minutes divided by 60 removes unpaid breaks. Wrap it in IF(OR(In="",Out=""),"",...) so the cell stays blank until both punches are entered.
Why does my hours formula show a negative number or ######?
Excel shows ###### when a time result is negative. This happens for night shifts where Out Time is earlier than In Time on the clock. Use MOD(Out-In,1) instead of Out-In, or enter full date-times. Also check that the cell is formatted as a number, not as time, when displaying decimal hours.
How do I add a grace period for late coming?
Change the Late By formula to compare against Shift Start plus the grace, for example =IF(In>ShiftStart+TIME(0,10,0),(In-ShiftStart)*1440,0) for a 10-minute grace. The formula still reports the full minutes late once the grace is exceeded, which is how most Indian late-coming policies work.
Can this attendance sheet calculate overtime automatically?
Yes. Overtime Hours = MAX(0, Worked Hours minus scheduled shift hours), where scheduled shift hours come from Shift Start, Shift End and Break. The Summary sheet totals overtime per employee with SUMIF. Multiply by your hourly rate and the double-rate multiplier in a separate overtime sheet to get the payable amount.
How do I get a monthly total per employee from the daily log?
The Summary sheet uses =SUMIF(DailyLog!B:B,EmpID,DailyLog!I:I) for hours and =COUNTIFS(DailyLog!B:B,EmpID,DailyLog!J:J,">0") for late count. Add a new employee by copying a Summary row and changing the Emp ID; the formulas pick up all matching rows automatically.

Download Template

Get the file and start using it with your team today.

Download

Related guides

Ready to put this into practice?

Start your free trial or book a live demo with our team.