@extends('layouts.app') @section('title', 'Payroll Settings — Statutory Rates') @section('styles') @endsection @section('content')
← Back to Payroll
{{-- LEFT: Current rates + history --}}

Currently Active

@if($current)

Effective from {{ $current->effective_from->format('d M Y') }}

Personal Relief{{ number_format($current->personal_relief) }}
SHIF Rate{{ number_format($current->shif_rate * 100, 2) }}% (min {{ number_format($current->shif_minimum) }})
NSSF Tier I / II{{ number_format($current->nssf_tier1_limit) }} / {{ number_format($current->nssf_tier2_limit) }}
NSSF Rate (E/E){{ number_format($current->nssf_employee_rate * 100) }}% / {{ number_format($current->nssf_employer_rate * 100) }}%
NSSF Cap (E/E){{ number_format($current->nssf_max_employee) }} / {{ number_format($current->nssf_max_employer) }}
Housing Levy{{ number_format($current->housing_levy_rate * 100, 2) }}% each side

PAYE Bands

@foreach($current->paye_bands as $b)
@if($b['threshold']) Up to {{ number_format($b['threshold']) }}@else Above @endif {{ number_format($b['rate'] * 100, 2) }}%
@endforeach
@else
No rates configured
@endif

Rate History

@foreach($rows as $r)

From {{ $r->effective_from->format('d M Y') }}

{{ $r->notes ?? 'No notes' }}

@csrf @method('DELETE')
@endforeach
{{-- RIGHT: Add new rates --}}

Add New Statutory Rates

Saving creates a new versioned rate set. Set Effective From to a future date to schedule a rate change. Older rate sets remain active for historical payroll runs.

@csrf
{{-- PAYE Bands --}}

PAYE Bands (Progressive)

Leave the threshold blank for the top band.

{{-- SHIF --}}

SHIF / SHA

{{-- NSSF --}}

NSSF

{{-- AHL --}}

Affordable Housing Levy

{{-- Due Days --}}

Statutory Due Days (Day of Following Month)

@endsection