Attendance Human Resources

Penalties & Deductions

Understand how attendance penalties work, configure deduction modes, and manage tiered penalty structures.

Penalties & Deductions

Penalties & Deductions

Understand how attendance penalties work, configure deduction modes, and manage tiered penalty structures.

Quick Access

Role Navigation Route
HR Admin HR → Shift Schedule Templates /hr/shift-schedule-templates
HR Admin HR → Timesheets /hr/time-sheet
Employee HR → My Timesheet /hr/my-time-sheet

Overview

Attendance penalties are automatic deductions applied when employees:

  • Clock in late (after scheduled shift start)
  • Clock out early (before scheduled shift end)
  • Take excessive breaks (beyond allowed duration)

Penalties are configured per shift template and calculated automatically during attendance processing.


Penalty Types

The system tracks three types of penalties:

Penalty Type Trigger Property
Clock In Penalty Arriving after shift start ClockInPenalty
Clock Out Penalty Leaving before shift end ClockOutPenalty
Break Penalty Exceeding allowed break time BreakPenalty

Total Penalty = ClockInPenalty + ClockOutPenalty + BreakPenalty


Penalty Deduction Modes

Five deduction modes determine how penalty amounts are calculated:

None

No penalty is applied regardless of attendance deviations.

Use Case Organizations with flexible attendance policies
Formula Penalty = 0

FixedPerBlock

A fixed amount is deducted for each time block of lateness/early departure.

Use Case Consistent, predictable penalty amounts
Formula Penalty = Blocks × DeductionRate

Configuration:

  • ClockInDeductionMode: FixedPerBlock
  • ClockInDeductionRate: 1.00 (amount per block)
  • PenaltyMinuteBlock: 5 (block size in minutes)

Example:

  • Late by: 17 minutes
  • Block size: 5 minutes
  • Blocks: Floor(17 / 5) = 3 blocks
  • Rate: RM 1.00 per block
  • Penalty: 3 × RM 1.00 = RM 3.00

OneTime

A flat penalty amount regardless of how late/early.

Use Case Simple "you're late" policy
Formula Penalty = DeductionRate (flat)

Configuration:

  • ClockInDeductionMode: OneTime
  • ClockInDeductionRate: 50.00

Example:

  • Late by 5 minutes → RM 50.00 penalty
  • Late by 60 minutes → RM 50.00 penalty (same amount)

Tiered

Graduated penalties based on lateness severity. More late = higher penalty tier.

Use Case Progressive discipline, escalating consequences
Formula Penalty = Tier rate based on minutes late

Configuration:

  • ClockInDeductionMode: Tiered or OneTime
  • ClockInTieredPenalties: [...] (array of tiers)

Example Tiers:

Tier Range Penalty
1 1-15 minutes RM 10.00
2 16-45 minutes RM 30.00
3 46+ minutes RM 50.00

Behavior:

  • Late by 10 minutes → Tier 1 → RM 10.00
  • Late by 30 minutes → Tier 2 → RM 30.00
  • Late by 60 minutes → Tier 3 → RM 50.00

DailyRate

Penalty proportional to the daily wage, based on time missed.

Use Case Fair penalty relative to earnings
Formula Penalty = (Late minutes / Working minutes) × Daily Wage

Configuration:

  • ClockInDeductionMode: DailyRate

Example:

  • Daily wage: RM 100.00
  • Working hours: 8 hours (480 minutes)
  • Late by: 30 minutes
  • Penalty: (30 / 480) × RM 100 = RM 6.25

Tiered Penalties Configuration

Tiered penalties allow graduated consequences for lateness.

Structure

Each tier has:

Property Type Description
Name string Display name (e.g., "Tier 1")
StartMinutes int Minimum minutes late for this tier
EndMinutes int? Maximum minutes (null = no upper limit)
Rate decimal Penalty amount for this tier
FixedAmount decimal? Alternative fixed amount

Example Configuration

Kaewta (Thailand) Morning Shift:

{
  "ClockInDeductionMode": "OneTime",
  "ClockInTieredPenalties": [
    {
      "Name": "Tier 1",
      "StartMinutes": 1,
      "EndMinutes": 15,
      "Rate": 10.00
    },
    {
      "Name": "Tier 2",
      "StartMinutes": 16,
      "EndMinutes": 45,
      "Rate": 30.00
    },
    {
      "Name": "Tier 3",
      "StartMinutes": 46,
      "EndMinutes": null,
      "Rate": 50.00
    }
  ]
}

Tiered Mode vs OneTime with Tiers

Mode Behavior
Tiered Penalty accumulates through each tier
OneTime with Tiers Only highest matching tier is applied

With OneTime mode:

  • 30 minutes late → Tier 2 → RM 30.00 (single tier)

With Tiered mode (accumulating):

  • 30 minutes late → Rate accumulated per block through tiers

Buffer Settings

Buffers provide grace periods before penalties apply.

PenaltyClockInBuffer

Grace period for late arrivals.

Buffer Behavior
0 or null Any lateness incurs penalty
5 Late by < 5 minutes = no penalty
10 Late by < 10 minutes = no penalty

Example:

  • PenaltyClockInBuffer: 5 minutes
  • Shift starts: 09:00
  • Clock in: 09:04 → No penalty (within buffer)
  • Clock in: 09:06 → Penalty applies (1 minute over buffer)

PenaltyClockOutBuffer

Grace period for early departures.

Example:

  • PenaltyClockOutBuffer: 5 minutes
  • Shift ends: 18:00
  • Clock out: 17:56 → No penalty (within buffer)
  • Clock out: 17:50 → Penalty applies (10 minutes early)

PenaltyBreakBuffer

Grace period for break overruns.

Example:

  • Allowed break: 60 minutes
  • PenaltyBreakBuffer: 5 minutes
  • Actual break: 63 minutes → No penalty (3 min over, within buffer)
  • Actual break: 70 minutes → Penalty applies (10 min over limit)

Break Penalties

Penalize employees who take longer breaks than allowed.

Configuration

Property Description
BreakDeductionMode How to calculate break penalty
BreakDeductionRate Rate for FixedPerBlock or OneTime
MaxBreakLengthInMinutes Allowed break duration
PenaltyBreakBuffer Grace period for break overruns

Calculation

Break Excess = Actual Break Duration - Allowed Break Duration
If Break Excess > PenaltyBreakBuffer:
    Penalty = Calculate based on BreakDeductionMode

Real-World Example: MrPa Configuration

Template: "Shop 3 - A"

{
  "MaxBreakLengthInMinutes": 60,
  "BreakDeductionMode": "FixedPerBlock",
  "BreakDeductionRate": 1.00,
  "PenaltyMinuteBlock": 1
}

Scenario:

  • Allowed break: 60 minutes
  • Actual break: 72 minutes
  • Excess: 12 minutes
  • Penalty: 12 blocks × RM 1.00 = RM 12.00

Block Modes for Penalties

Penalties can be rounded using Floor or Ceiling modes.

Floor Mode (Default)

Rounds down to favor employees.

Late By Block Size Blocks Penalty (@ RM 1/block)
7 min 5 min 1 RM 1.00
14 min 5 min 2 RM 2.00
16 min 5 min 3 RM 3.00

Ceiling Mode

Rounds up, stricter enforcement.

Late By Block Size Blocks Penalty (@ RM 1/block)
7 min 5 min 2 RM 2.00
14 min 5 min 3 RM 3.00
16 min 5 min 4 RM 4.00

Maximum Penalty Cap

The MaxPenalty setting prevents excessive deductions.

Property Type Description
MaxPenalty decimal Maximum penalty amount per attendance

Example:

  • Calculated penalty: RM 150.00
  • MaxPenalty: RM 100.00
  • Applied penalty: RM 100.00 (capped)

Penalty Factor

The PenaltyFactor multiplies all penalty calculations.

Factor Effect
1.0 Standard penalty
0.5 Half penalty (probation?)
1.5 Increased penalty (repeat offenders?)
2.0 Double penalty

Example:

  • Base penalty: RM 20.00
  • PenaltyFactor: 1.5
  • Applied penalty: RM 30.00

Half-Day Leave Adjustments

When employees are on half-day leave, penalties adjust accordingly.

AM Half-Day Leave

Clock-in time is shifted to mid-shift.

Example:

  • Shift: 09:00 - 18:00 (8 hours)
  • AM Leave: Employee starts at 13:00
  • Clock in: 13:15 → 15 minutes late (from adjusted time)

PM Half-Day Leave

Clock-out time is shifted to mid-shift.

Example:

  • Shift: 09:00 - 18:00 (8 hours)
  • PM Leave: Employee ends at 13:00
  • Clock out: 12:50 → 10 minutes early (from adjusted time)

Time-Off Slot Adjustments

Approved time-off slots adjust penalty calculations.

Slot Type Adjustment
Start Shifts expected clock-in time
Middle No effect on clock in/out penalties
End Shifts expected clock-out time

Example:

  • Shift: 09:00 - 18:00
  • Approved time-off slot: 09:00 - 10:00 (Type: Start)
  • Adjusted shift start: 10:00
  • Clock in: 10:15 → 15 minutes late (not 1h 15min)

Real-World Examples

Example 1: Simple Late Arrival

Employee: Muhamad Firdaus Date: January 25, 2026 Template: "7.30AM"

Setting Value
Shift 07:30 - 16:00
PenaltyClockInBuffer 5 minutes
ClockInDeductionMode DailyRate
NormalHourlyRate RM 8.75

Attendance:

  • Clock In: 07:35:07 (5 minutes 7 seconds late)

Calculation:

Late = 5:07 (5 min 7 sec)
Buffer = 5 minutes
Effective late = 7 seconds (over buffer)
Rate = RM 8.75 / 60 = RM 0.146/minute
Penalty = 0.12 minutes × RM 0.146 = RM 0.02

Note: With such small lateness, penalty may round to zero or minimal amount.

Example 2: Tiered Penalty (Kaewta)

Employee: Somchai Template: "Morning" with Tiered Penalties

Tier Range Penalty
1 1-15 min RM 10.00
2 16-45 min RM 30.00
3 46+ min RM 50.00

Scenario 1: Clock in 08:55 (10 min late)

  • Falls in Tier 1 (1-15 min)
  • Penalty: RM 10.00

Scenario 2: Clock in 09:15 (30 min late)

  • Falls in Tier 2 (16-45 min)
  • Penalty: RM 30.00

Scenario 3: Clock in 10:00 (75 min late)

  • Falls in Tier 3 (46+ min)
  • Penalty: RM 50.00

Example 3: Combined Penalties

Employee: Ahmad Date: January 20, 2026

Penalty Type Amount
Clock In (15 min late) RM 5.00
Break (10 min excess) RM 2.50
Clock Out (early by 5 min) RM 1.25
Total Penalty RM 8.75

Example 4: Penalty with MaxPenalty Cap

Employee: Lee Calculated Penalties:

  • Clock In: RM 75.00
  • Break: RM 30.00
  • Clock Out: RM 45.00
  • Total: RM 150.00

MaxPenalty Setting: RM 100.00

Applied Penalty: RM 100.00 (capped)


Configuration Summary

Complete Penalty Configuration

{
  "Name": "Standard Shift",

  // Clock In Penalty
  "ClockInDeductionMode": "FixedPerBlock",
  "ClockInDeductionRate": 1.00,
  "PenaltyClockInBuffer": 5,

  // Clock Out Penalty
  "ClockOutDeductionMode": "DailyRate",
  "ClockOutDeductionRate": null,
  "PenaltyClockOutBuffer": 5,

  // Break Penalty
  "BreakDeductionMode": "FixedPerBlock",
  "BreakDeductionRate": 0.50,
  "MaxBreakLengthInMinutes": 60,
  "PenaltyBreakBuffer": 5,

  // Shared Settings
  "PenaltyBlockMode": "Floor",
  "PenaltyMinuteBlock": 5,
  "MaxPenalty": 100.00,
  "PenaltyFactor": 1.0,

  // Tiered (optional)
  "ClockInTieredPenalties": []
}

For HR Administrators

Viewing Penalties in Timesheet

  1. Go to HR → Timesheets
  2. Select employee and date range
  3. View penalty columns:
    • Clock In Penalty
    • Clock Out Penalty
    • Break Penalty
    • Total Penalty

Adjusting Penalty Settings

  1. Go to HR → Shift Schedule Templates
  2. Select the template
  3. Navigate to Penalty Settings
  4. Configure:
    • Deduction mode
    • Rates
    • Buffers
    • Tiered penalties

Penalty Reports

Penalties flow through to payroll as deductions. Review:

  • Individual timesheets for penalty details
  • Payroll summaries for total deductions
  • Attendance reports for patterns

Tips

  1. Set appropriate buffers - A 5-minute buffer prevents penalties for minor clock variations
  2. Use tiered penalties wisely - Graduated penalties encourage punctuality without harsh one-time penalties
  3. Cap maximum penalties - Prevent excessive deductions with MaxPenalty setting
  4. Document your policy - Ensure employees understand penalty structure
  5. Review regularly - Check penalty reports for patterns indicating system issues

See Also

An unhandled error has occurred. Reload X

Rejoining the server...

Rejoin failed... trying again in <span id="components-seconds-to-next-attempt"></span> seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.