@can('payroll.approve') @if ($run->status === 'processed')
@csrf @method('PATCH')
@csrf @method('PATCH')
@endif @endcan @can('payroll.process') @if ($run->status === 'approved')
@csrf @method('PATCH')
@endif @endcan @if (in_array($run->status, ['approved', 'paid'], true)) RTGS file ACH file M-Pesa file @endif
Employees
{{ number_format($run->employee_count) }}
Gross pay
{{ money($run->gross_total) }}
Deductions
{{ money($run->deductions_total) }}
Net pay
{{ money($run->net_total) }}

Payslips

Statutory deductions were computed on each staff member's gross pay.

@foreach ($run->payslips as $payslip) @endforeach
Employee Gross PAYE SHIF NSSF Housing levy Loan Other Net pay Status
{{ $payslip->user?->name ?? '—' }}
{{ $payslip->employee_no ?? $payslip->user?->employee_no ?? '—' }}{{ $payslip->designation ? ' · '.$payslip->designation : '' }}
@if ((float) $payslip->claims_reimbursement > 0)
+{{ money($payslip->claims_reimbursement, false) }} claims
@endif
{{ money($payslip->gross_salary, false) }} {{ money($payslip->paye, false) }} {{ money($payslip->nhif, false) }} {{ money($payslip->nssf, false) }} {{ money($payslip->housing_levy, false) }} {{ money($payslip->loan_deduction, false) }} {{ money((float) $payslip->other_deductions + (float) $payslip->helb + (float) $payslip->union_dues + (float) $payslip->fringe_benefit_tax, false) }} {{ money($payslip->net_pay, false) }} Payslip
Totals {{ money($run->payslips->sum('gross_salary'), false) }} {{ money($run->payslips->sum('paye'), false) }} {{ money($run->payslips->sum('nhif'), false) }} {{ money($run->payslips->sum('nssf'), false) }} {{ money($run->payslips->sum('housing_levy'), false) }} {{ money($run->payslips->sum('loan_deduction'), false) }} {{ money((float) $run->payslips->sum('other_deductions') + (float) $run->payslips->sum('helb') + (float) $run->payslips->sum('union_dues') + (float) $run->payslips->sum('fringe_benefit_tax'), false) }} {{ money($run->payslips->sum('net_pay'), false) }}

Run details

Period {{ $run->period_label }}

Status
Payment date
{{ $run->payment_date?->format('d M Y') ?? 'Not set' }}
Processed
{{ $run->processedBy?->name ?? '—' }}
{{ $run->processed_at?->format('d M Y H:i') }}
@if ($run->approved_at)
Approved
{{ $run->approvedBy?->name ?? '—' }}
{{ $run->approved_at->format('d M Y H:i') }}
@endif @if ((float) $run->commissions_total > 0 || (float) $run->claims_total > 0 || (float) $run->helb_total > 0 || (float) $run->union_dues_total > 0)
Payroll inputs
Commissions{{ money($run->commissions_total, false) }}
Claims reimbursed{{ money($run->claims_total, false) }}
HELB{{ money($run->helb_total, false) }}
Union dues{{ money($run->union_dues_total, false) }}
@endif @if ((float) $run->employer_nssf > 0 || (float) $run->employer_housing > 0 || (float) $run->nita_levy > 0)
Employer contributions
NSSF{{ money($run->employer_nssf, false) }}
Housing levy{{ money($run->employer_housing, false) }}
NITA levy{{ money($run->nita_levy, false) }}
@endif @if ($run->notes)
Notes
{{ $run->notes }}
@endif

Ledger postings

Payroll journal entries for this run.

@if ($entries->isEmpty())

No journal entries yet — approving the run posts the salary accrual, and paying out posts the bank settlement of net pay, PAYE, SHIF, NSSF and the Housing Levy.

@else @endif