A guide to Pay-As-You-Earn (PAYE) tax calculations for bimonthly, fortnightly, weekly, and monthly employees in 2026.
Pay-As-You-Earn (PAYE) is the system by which employers withhold income tax from employees' wages. Tax is calculated on taxable income after applying statutory deductions (free pay), employee NIS contributions, and certain exemptions.
This manual explains how PAYE is calculated for , , , and pay frequencies in 2026.
Tax thresholds are increased across all frequencies. The lower free pay, lower taxable limit, and lower taxable income limit are all higher in 2026 than in 2025. Tax rates remain unchanged at 25% (lower bracket) and 35% (upper bracket).
Overtime and child allowance use (month-to-date) tracking. The $50,000 monthly overtime exemption is shared across all pay periods in the same calendar month. Child allowance is stored per period per child, allowing accurate handling of mid-year changes (e.g. a child turning 18).
The gross salary or wages subject to tax, before applying statutory deductions. NIS (employee insurance contribution) is deducted from taxable income before the free pay is applied when determining chargeable income.
The amount of income not subject to tax. For employees with income at or below the lower taxable income limit, this is a fixed amount per period. For higher earners, it becomes one-third of total taxable income.
The portion of chargeable income that is taxed at the lower rate (25%). Any chargeable income above this limit is taxed at the upper rate (35%).
The threshold above which the statutory deduction switches from the fixed lower free pay to one-third of total taxable income. This "one-third rule" reduces the effective free pay for high earners.
Chargeable income up to the lower taxable limit
Chargeable income above the lower taxable limit
GRA grants a tax-free overtime limit. For bimonthly, fortnightly, and weekly employees, the : the full $50,000 is shared across all pay periods in the same calendar month.
$50,000 per calendar month, regardless of how many periods fall in that month.
The system stores how much tax-free overtime was used in prior periods of the same month (in employee_overtime_metas).
For the current period, the remaining limit = 50,000 − sum of prior periods' nontaxable overtime in that month.
The Builder passes this remaining amount as taxFreeOvertimeOverride to the PAYE compute class. The PAYE class uses min(actualOvertime, override).
remainingLimit = 50,000 − priorPeriodsNontaxableOvertimeThisMonth
nonTaxableOvertime = min(actualOvertime, remainingLimit)
taxableIncome = taxableIncome − nonTaxableOvertime
$50,000 (optimized). Under static mode (fixed $11,538/week), only $46,152 would be tax-free.
Environment variables control the mode. Default is dynamic if not set:
MINTAGE_OVERTIME_BIMONTHLY
MINTAGE_OVERTIME_FORTNIGHTLY
If set to static, each period gets a fixed portion:
Monthly employees always use $50,000 per month—no dynamic tracking needed.
Same $50,000 monthly limit and dynamic logic apply to second job income (pro-rated per period when using static mode).
Child allowance is stored in EmployeeChildAllowanceMeta. This allows:
- Accurate handling when a child turns 18 mid-year (active only for periods before the 18th birthday)
- Retroactive corrections when child data is updated
- Per-period variation (e.g. child added or removed during the year)
For each period, the system determines which children are (under 18 at the period end date).
The allowance amount for each active child is stored in EmployeeChildAllowanceMeta.output.
The total child allowance for the period is summed and added to the employee NIS contribution before applying free pay.
Chargeable income is reduced by this amount.
effectiveNIS = employeeNIS + totalChildAllowanceForPeriod
chargeableIncome = taxableIncome − effectiveNIS − statutoryDeduction
The totalChildAllowanceForPeriod comes from the sum of EmployeeChildAllowanceMeta.output for active children in that period, not from a simple numberOfChildren × rate unless no meta records exist.
Start with total taxable income.
Subtract non-taxable overtime (dynamic mode is default).
remainingLimit = 50,000 − priorPeriodsNontaxableOvertimeThisMonth (dynamic)
nonTaxableOvertime = min(actualOvertime, remainingLimit)
taxableIncome = taxableIncome − nonTaxableOvertime
When dynamic mode is enabled, the Builder provides taxFreeOvertimeOverride = remaining limit. If static mode is used, the per-period limit applies (e.g. $23,077 fortnightly).
Subtract non-taxable second job income (same logic as overtime).
Add child allowance to employee NIS contribution.
effectiveNIS = employeeNIS + totalChildAllowanceForPeriod
totalChildAllowanceForPeriod is the sum of allowance amounts for active children in that period (from EmployeeChildAllowanceMeta).
Determine statutory deduction (free pay).
If taxableIncome ≤ lowerTaxableIncomeLimit:
statutoryDeduction = lowerFreePay × periodWorked
Else:
statutoryDeduction = taxableIncome ÷ 3
Check for no PAYE.
If taxableIncome < lowerFreePay:
PAYE = 0
If taxableIncome − effectiveNIS ≤ lowerFreePay:
PAYE = 0
Calculate chargeable income and PAYE.
chargeableIncome = taxableIncome − effectiveNIS − statutoryDeduction
If taxableIncome ≤ lowerTaxableIncomeLimit:
PAYE = chargeableIncome × 25%
Else:
If chargeableIncome ≤ lowerTaxableLimit:
PAYE = chargeableIncome × 25%
Else:
lowerPaye = lowerTaxableLimit × 25%
upperPaye = (chargeableIncome − lowerTaxableLimit) × 35%
PAYE = lowerPaye + upperPaye
Assume employee NIS = $7,840 (from NIS 2026 first fortnight example).
- Taxable income = $146,031
- Lower free pay = $64,615
- Chargeable = 146,031 − 7,840 − 64,615 =
- 73,576 < 129,231 → all at 25%
- PAYE = 73,576 × 25% =
Assume employee NIS = $7,840.
- Taxable income = $250,000 > 193,846 → statutory deduction = 250,000 ÷ 3 =
- Chargeable = 250,000 − 7,840 − 83,333 =
- 158,827 > 129,231 → split brackets
- Lower bracket: 129,231 × 25% =
- Upper bracket: (158,827 − 129,231) × 35% = 29,596 × 35% =
- PAYE = 32,308 + 10,359 =
Assume employee NIS = $3,920 (from NIS 2026 weekly example).
- Lower free pay = $32,308
- Chargeable = 70,000 − 3,920 − 32,308 =
- PAYE = 33,772 × 25% =
Assume employee NIS = $7,840.
- Lower free pay = $70,000
- Chargeable = 160,000 − 7,840 − 70,000 =
- PAYE = 82,160 × 25% =
Assume employee NIS = $15,680 (monthly equivalent).
- Lower free pay = $140,000
- 300,000 < 420,000 → use fixed free pay
- Chargeable = 300,000 − 15,680 − 140,000 =
- 144,320 < 280,000 → all at 25%
- PAYE = 144,320 × 25% =
- Remaining limit = $50,000 (no prior periods in month)
- Non-taxable overtime = min(30,000, 50,000) =
- Adjusted taxable income = 150,000 − 30,000 =
- Assume NIS = $7,840
- Chargeable = 120,000 − 7,840 − 64,615 =
- PAYE = 47,545 × 25% =
- Remaining limit = 50,000 − 30,000 =
- Non-taxable overtime = min(30,000, 20,000) =
- Taxable overtime =
- Adjusted taxable income = 150,000 − 20,000 =
- Chargeable = 130,000 − 7,840 − 64,615 =
- PAYE = 57,545 × 25% =
- Monthly limit = $50,000 (no dynamic tracking for monthly)
- Non-taxable overtime = min(60,000, 50,000) =
- Adjusted taxable income = 350,000 − 50,000 =
- Assume NIS = $15,680
- Chargeable = 300,000 − 15,680 − 140,000 =
- PAYE = 144,320 × 25% =
Fortnightly $146,031 (NIS 7,840 / 7,237)
Weekly $70,000 (NIS 3,920 / 3,618)
Monthly $300,000 (NIS 15,680)
In all cases, 2026 yields PAYE because the thresholds (lower free pay, lower taxable limit, lower taxable income limit) are higher. More income falls within the tax-free or lower-bracket zone.
- If total taxable income is less than the lower free pay, or if taxable income minus NIS and child allowance is at or below the lower free pay, no PAYE is due.
- The default for 2026 is dynamic mode. The Builder uses
HandlesDynamicOvertime to compute the remaining monthly limit from employee_overtime_metas and passes it as taxFreeOvertimeOverride. Overtime usage is stored after each period for subsequent periods in the same month. - Child allowance is stored per period in
EmployeeChildAllowanceMeta. Active children (under 18 at period end) are determined per period, allowing correct handling when a child turns 18 mid-year. - When
periodWorked is less than 1 (e.g. mid-period start), thresholds are multiplied by periodWorked for pro-rating. - Same $50,000 monthly limit and dynamic logic as overtime.
- When reprocessing an earlier period in dynamic mode, subsequent periods in the same month should also be reprocessed so overtime tracking stays correct.
Monthly overtime/second job exemption
Fortnightly $23,077, Bimonthly $25,000, Weekly $11,538
Per-period from EmployeeChildAllowanceMeta
Statutory deduction (high earners)
Chargeable income formula
taxable − NIS − child − statutory deduction
PAYE 2026 uses increased tax thresholds across all pay frequencies. The default method for overtime is : the $50,000 monthly tax-free limit is shared across all periods in the same calendar month, with usage tracked in employee_overtime_metas. Child allowance is stored per period per child in EmployeeChildAllowanceMeta, allowing accurate handling of mid-year changes (e.g. child turning 18). Tax rates remain 25% (lower bracket) and 35% (upper bracket). For high earners, the statutory deduction becomes one-third of taxable income, and chargeable income above the lower taxable limit is taxed at 35%. The Builder uses HandlesDynamicOvertime and HandlesChildAllowance to provide the correct inputs to the PAYE compute classes.