# Public Holidays

Public holidays affect both time and attendance calculations and payroll. This page covers the legal rules, how AllWage handles public holidays automatically, the metrics you should review, and how to swap or suppress a public holiday when needed.

## Legal Framework

The **Basic Conditions of Employment Act (BCEA), Section 18** governs how employees must be paid on public holidays. The **Public Holidays Act** governs which days are public holidays and allows employers and employees to agree to exchange a public holiday for another day.

{% hint style="info" %}
An employer may not require an employee to work on a public holiday except in accordance with an agreement.
{% endhint %}

## Public Holidays on Regular Working Days

A regular working day is a day that the employee is normally scheduled to work. For most operations this is Monday to Friday, but many industries — particularly retail, hospitality, and continuous operations — include Saturdays and even Sundays as regular working days. What matters is what the employee's schedule defines as a normal working day, not what the calendar says.

If a public holiday falls on a regular working day:

* **Employee does not work** — They must still be paid at least their normal daily wage. The holiday does not reduce their pay.
* **Employee works** — They must be paid at least **double** their normal daily wage.
* **Employee works overtime** — Overtime hours are also compensated at double the rate.

**Example:** A public holiday falls on a Wednesday. The employee's normal shift is 8 hours.

* Employee doesn't work: Paid 8 hours at normal rate
* Employee works 8 hours: Paid 8 hours at normal rate **plus** 8 hours at normal rate = 16 hours total (double pay)
* Employee works 10 hours: Paid 16 hours (double for the regular 8) **plus** 2 hours overtime at double rate

## Public Holidays on Optional Working Days

An optional working day is a day the employee would not normally work — typically a Saturday for Monday-to-Friday employees. In AllWage, these are configured as part of the [clock template](/modules/time-and-attendance/configuration.md#clock-templates) when certain days are marked as optional.

If a public holiday falls on an optional working day:

* **Employee does not work** — No payment is required. Since they would not have worked that day anyway, the public holiday does not create an obligation.
* **Employee works** — They must be paid at **double the rate** for all hours worked.

**Example:** A public holiday falls on a Saturday. Saturday is an optional working day for the team.

* Employee doesn't work: No pay for that day
* Employee works 6 hours: Paid 6 hours at double rate = 12 hours equivalent

## Public Holidays That Fall on a Sunday

When a public holiday falls on a Sunday, the following Monday is also declared a public holiday. Both the Sunday and the Monday are separate public holidays — the Monday is not a replacement for the Sunday.

For operations where Sunday is a regular or optional working day:

* An employee who works on the **Sunday** must be compensated under the normal public holiday rules for that day
* An employee who works on the **Monday** must also be compensated — it is its own public holiday
* An employee who works **both days** has worked two public holidays and must be compensated for each one separately

**Example:** Freedom Day (27 April) falls on a Sunday. Monday 28 April is declared a public holiday.

* A hospitality employee works both days — each day is treated as a separate public holiday with its own pay entitlement
* An office employee who only works Monday to Friday is not affected by the Sunday holiday but must be paid for the Monday public holiday as normal

## Shifts That Span Midnight

When a shift crosses midnight into or out of a public holiday:

* The **whole shift is treated as a public holiday shift**
* **Exception:** If the greater portion of the shift was worked on the normal day, the whole shift is treated as a normal day

**Example:** An employee works a night shift from 18:00 on Tuesday to 02:00 on Wednesday. Wednesday is a public holiday. The shift is 8 hours: 6 hours on Tuesday, 2 hours on Wednesday. Since the greater portion (6 hours) was on the normal day, the whole shift is treated as a normal day.

## How AllWage Handles Public Holidays Automatically

AllWage knows all South African public holidays. When a public holiday falls on a day that is a required working day for an employee, the system automatically:

* **Prevents the employee from being marked as absent.** Employees cannot be absent on a public holiday.
* **Displays the public holiday name** in the employee's cell on the [Employee Overview Report](/modules/time-and-attendance/reports/employee-overview.md), under the column for that specific day.
* **Shows the required working hours** next to the public holiday name. This indicates the hours the employee is entitled to be paid if they do not come to work.
* **Lists actual clocked hours separately** in the same cell if the employee does work on that day.

No configuration is needed. As long as the employee has a clock template assigned with the correct working days, the system handles it.

## Time & Attendance Metrics

When employees work on a public holiday, AllWage calculates the following metrics visible on the [Employee Overview Report](/modules/time-and-attendance/reports/employee-overview.md):

### Public Holiday Budget Hours (Required Days)

The hours the employee was required to work if the public holiday falls on a required working day. This is what the employee is entitled to be paid regardless of whether they come to work.

### Public Holiday Clocked Hours

The actual hours worked on the public holiday, broken into three metrics:

* **Normal Hours** — Hours worked up to and including the budget hours for that day
* **Overtime** — All hours worked beyond the budget hours. Overtime on a public holiday should always be compensated at double the rate
* **Total Hours** — Normal hours plus overtime combined

### Public Holiday Optional Hours

All hours worked on a public holiday that falls on an optional working day. This includes both normal and overtime hours in a single metric, because all hours worked on an optional public holiday should be compensated at double the rate.

### Example: Public Holiday on a Required Working Day

Thursday is a required working day. The employee is required to work 9 hours. Thursday is a public holiday. The employee comes to work and clocks 10 hours.

* **Public Holiday Budget Hours:** 9 — The hours they are required to work, paid regardless of attendance
* **Public Holiday Clocked Normal:** 9 — Hours worked up to the budget
* **Public Holiday Clocked Overtime:** 1 — Hours worked beyond the budget
* **Public Holiday Clocked Total:** 10 — Normal + overtime
* **Public Holiday Optional Hours:** 0 — Not an optional day

To calculate the correct pay: the employee must be compensated for the 9 budget hours, plus 9 normal hours worked, plus 1 overtime hour at double the rate. That is effectively 20 hours of pay for that day.

### Example: Public Holiday on an Optional Working Day

Saturday is an optional working day. The employee is not required to work. Saturday is a public holiday. The employee comes in and works 6 hours.

* **Public Holiday Budget Hours:** 0 — No budget, the day is optional
* **Public Holiday Clocked Normal:** 0 — Not applicable for optional days
* **Public Holiday Clocked Overtime:** 0 — Not applicable for optional days
* **Public Holiday Clocked Total:** 0 — Not applicable for optional days
* **Public Holiday Optional Hours:** 6 — All hours on an optional public holiday

To calculate the correct pay: the 6 optional hours must all be compensated at double the rate — effectively 12 hours of pay.

### Exporting Public Holiday Data

If you do not use AllWage payroll, use the **Time & Attendance metrics export** and select the relevant public holiday metrics for the period. This exports all values in Excel format for processing in your external payroll system.

## Payroll Configuration

When configuring public holiday pay in your payroll templates, ensure that all four metric categories are included:

* **Budget Hours** — So employees are paid for the public holiday regardless of whether they work
* **Clocked Normal Hours** — The additional compensation for hours worked on the public holiday
* **Clocked Overtime** — Must be at double the rate. If overtime hours are already included in another metric, add overtime at a rate of 1 to ensure it totals double
* **Optional Hours** — Must be linked at double the rate for all hours clocked on an optional public holiday

{% hint style="info" %}
For detailed guidance on setting up public holiday input templates, refer to the payroll input templates documentation.
{% endhint %}

## Exchanging a Public Holiday for Another Day

The **Public Holidays Act** permits an employer and employee to agree to exchange a public holiday for another day. This is common when a public holiday falls in the middle of the week and the employer prefers to move it to a Monday or Friday.

{% hint style="warning" %}
The exchange must be **by agreement** between the employer and the employee.
{% endhint %}

### How to Swap a Public Holiday in AllWage

AllWage provides a **public holiday override** on the employee's hour override page. Because overrides are applied at the employee level, you can swap a holiday for one team without affecting the rest of the company.

Watch our video here:

{% embed url="<https://youtu.be/o_7pE8UHo30>" %}
Swap Public Holidays
{% endembed %}

The override has three options:

* **Default** — No override. The system checks the public holiday calendar as usual.
* **Public Holiday** — The day is treated as a public holiday, regardless of the calendar. A description is required (e.g., "Youth Day — swapped from 16 June").
* **Normal Day** — Any public holiday on that day is suppressed. The day is treated as a normal working day.

### Swapping a Public Holiday

**Example:** Youth Day (16 June) falls on a Wednesday. The employer and employees agree to observe the holiday on Friday 18 June instead.

**Step 1 — Suppress the original public holiday:**

1. Navigate to the employee's hour override page
2. Create an override for **16 June**
3. Set the public holiday dropdown to **Normal Day**
4. The employee is now expected to clock in on 16 June as usual

**Step 2 — Add the public holiday to the new day:**

1. Create an override for **18 June**
2. Set the public holiday dropdown to **Public Holiday**
3. Enter a description: "Youth Day — swapped from 16 June"
4. The employee will not be marked absent on 18 June, and all public holiday pay rules apply to this day

**Step 3 — Apply to all affected employees:**

At the top of the Employee Overview Report, each date column has a **cogwheel icon**. Click it and select **Add override for all employees** to apply the override to every employee currently shown in the report. If you only need to override a subset of employees, filter the report by team or specific employee first, then use the bulk option.

No changes to pay run templates or input templates are needed. The system automatically adjusts — public holiday metrics will appear on the new day, and the original day will be treated as a normal working day.

### Suppressing a Public Holiday Without a Swap

If the employer requires employees to work on a public holiday and has agreed with employees that the day will be treated as a normal working day:

1. Navigate to the employee's hour override page
2. Create an override for the public holiday date
3. Set the public holiday dropdown to **Normal Day**
4. The day is treated as a normal working day — the employee is expected to clock in, normal absence rules apply, and no public holiday metrics are generated

To apply in bulk, use the cogwheel on the date column in the Employee Overview Report.

### What the Override Changes

When you set an override, the system adjusts everything downstream automatically:

* **Employee Overview Report** — The public holiday name and metrics appear on the overridden day, not the calendar day
* **Absence detection** — The employee is not marked absent on the day marked as a public holiday, and normal absence rules apply on the day marked as a normal day
* **Leave calculations** — Leave is not deducted on a day marked as a public holiday
* **Pay run templates** — Public holiday input templates fire on the overridden day, not the calendar day
* **Payslip** — The public holiday description you entered appears on the payslip for the overridden day

{% hint style="warning" %}
**Both steps are needed for a swap.** If you only suppress the original day but don't add the holiday to the new day, the employee loses the public holiday entirely. If you only add the new day but don't suppress the original, the employee gets two public holidays.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.allwage.com/modules/payroll/payrun-templates/public-holidays.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
