Troubleshooting Common Issues
8 min readThis guide covers frequently encountered issues in TalinoHR and how to resolve them.
Payroll Issues
Payroll Won't Compute
Symptoms: Clicking "Compute" on a payroll run produces an error or no results.
Check these:
- Payroll run status: Only DRAFT status payroll runs can be computed. If the status is COMPUTED, REVIEWED, APPROVED, or DISBURSED, you cannot recompute without first resetting to DRAFT (if applicable).
- Employee status: Only active employees are included. Employees with status RESIGNED, TERMINATED, or RETIRED are excluded unless they separated within the payroll period (for prorated pay).
- Employee count: If the payroll run has a location filter (
locationId), only employees assigned to that work location are included. Check that employees have the correctworkLocationId. - Period dates: Verify the period start and end dates are correct and don't overlap with existing computed payroll runs for the same period and location.
- Suspended employees: Employees under active disciplinary suspension during the payroll period are automatically skipped (no pay during suspension).
Payroll Shows Wrong Net Pay
Check these:
- Attendance data: Verify attendance records exist for the payroll period. Missing attendance records mean no deductions for absences/lates but also no overtime/NSD.
- Pay basis: Check the employee's pay basis (MONTHLY, DAILY, HOURLY). The basic pay calculation differs significantly based on this setting.
- Work schedule: If the employee has a work schedule assigned, the daily rate and monthly rate are derived from schedule parameters (work days/week, hours/day). An incorrect schedule can affect rates.
- Allowances: Check if allowances are set up correctly. Non-taxable vs. taxable allowances affect withholding tax.
- Loan deductions: Active loans are automatically deducted. Check the Loans page if deductions seem too high.
Payroll Adjustment Not Appearing
Check these:
- Adjustment status: Only PENDING adjustments are consumed by the payroll engine. If the adjustment was already APPLIED to a previous run, it won't be picked up again.
- Payroll run status: Adjustments are only consumed when the payroll is computed (status moves from DRAFT to COMPUTED).
- Employee match: Verify the adjustment is linked to the correct employee ID.
Leave Balance Issues
Leave Balance Shows Wrong Number
Understanding the balance formula: LeaveBalance.balance = credits - used - pending
The balance field already excludes both used (consumed) days and pending (awaiting approval) days.
Check these:
- Credits: Verify the total credits allocated for the leave type. Navigate to Time & Leave → Leave Balances (
/leaves/balances) and check thecreditsfield. - Used days: Check how many days have been consumed (approved and taken leave applications).
- Pending days: Pending leave applications reduce the available balance. If a pending request is later rejected, the balance is restored.
- Leave type eligibility: Some leave types have eligibility rules based on gender, solo parent status, or tenure. An employee may not be eligible for certain leave types.
- Annual reset: Leave balances may need to be reset at the start of each year. Check if balances were carried over or re-initialized.
Employee Can't File Leave
Check these:
- Insufficient balance: The employee's available balance for the selected leave type must be greater than or equal to the requested days.
- Leave type not assigned: The employee must have a LeaveBalance record for the leave type. Check if the leave balance was created during onboarding.
- Overlapping dates: The system may reject leave requests that overlap with existing approved or pending leave applications.
Attendance Issues
Attendance Not Recording
Check these:
- Work schedule assignment: The absence detection system requires a work schedule to be assigned to the employee. Without a schedule, the system cannot determine which days are work days vs. rest days.
- Schedule configuration: Verify the work schedule has correct time-in/time-out for each working day. Days with no time-in are treated as rest days.
- Date range: Attendance records are date-specific. Check that you're looking at the correct date range.
- Payroll lock: Once a payroll run is computed for a period, attendance records for those dates are locked and cannot be modified.
Employee Marked Absent Incorrectly
Check these:
- Rest day vs. work day: Verify the employee's work schedule. If the day in question has no time-in scheduled, it's a rest day and should not generate an absence record.
- Holiday: Check if the date is a holiday. Holidays should not generate absence records.
- Leave on file: If the employee has an approved leave for that date, the attendance record should show
isOnLeave: trueinstead ofisAbsent: true. - Attendance record timing: The absence detection runs for a date range. If it ran before the employee clocked in, an absence may have been created prematurely.
Overtime Issues
Overtime Not Reflecting in Payroll
Key fact: The payroll engine reads OvertimeApplication records directly, not AttendanceRecord.overtimeMinutes. The overtime minutes field on attendance records is for display only.
Check these:
- OT approval status: Only APPROVED overtime applications are included in payroll. Verify the OT request status is APPROVED (not PENDING or REJECTED).
- OT date within period: The OT application date must fall within the payroll period (between periodStart and periodEnd).
- Payroll computed after approval: If the payroll was computed before the OT was approved, the OT won't be included. Recompute the payroll after approving the OT.
- Employee match: Verify the OT application is for the correct employee.
OT Amount Seems Wrong
Check these:
- Day type: The OT multiplier depends on the day type (ordinary 1.25x, rest day 1.69x, holiday up to 3.38x). Verify the correct day type was detected.
- Hourly rate: OT pay uses the employee's hourly rate. Check if the hourly rate is correctly derived from the pay basis and work schedule.
- Hours: Verify the number of OT hours filed matches what was expected.
Payslip Issues
Payslip PIN Not Working
Check these:
- PIN set: Verify the employee has a
payslipPinvalue set in their record. If null, the employee cannot access payslips. - PIN format: The payslip password scheme is configured via ComplianceSetting key
payslip-password-scheme. Default is LASTNAME_BIRTHDATE (e.g., "DELA CRUZ19900115"). Verify the employee is entering the correct format. - PIN hash: The PIN is stored as a bcrypt hash. If the employee forgot their PIN, it must be reset by an admin.
- Case sensitivity: Check if the scheme uses uppercase or the exact format expected.
Payslip Shows No Data
Check these:
- Payroll run status: Payslips are generated from PayrollItem records. The payroll run must be at least COMPUTED status.
- Employee included: Verify the employee was included in the payroll run (not excluded by location filter or inactive status).
- Pay frequency match: Check that the employee is on the correct pay frequency (SEMI_MONTHLY or MONTHLY).
Report Issues
Reports Showing Wrong Data
Check these:
- Date range filters: The most common reporting issue is selecting the wrong year or month. Double-check the year and month parameters.
- Payroll run status: Reports aggregate data from PayrollItem records. Ensure all relevant payroll runs are in COMPUTED, APPROVED, or DISBURSED status.
- Run types included: Annual reports (BIR 2316, Alphalist) aggregate REGULAR, THIRTEENTH_MONTH, and ANNUALIZATION run types. Make sure all applicable runs have been processed.
- Location filter: If payroll runs were location-scoped, reports should include all locations for complete data.
BIR 2316 / Alphalist Missing Employees
Check these:
- No payroll items: Employees with no PayrollItem records for the year won't appear. Check if they were included in payroll runs.
- Run type: Only REGULAR, THIRTEENTH_MONTH, and ANNUALIZATION run types are included. LEAVE_MONETIZATION and FINAL_PAY runs are separate.
- Year parameter: Verify you selected the correct year.
General Tips
- Clear browser cache: If the UI seems stuck or showing stale data, clear the browser cache or do a hard refresh (Ctrl+Shift+R).
- Check API errors: Open the browser developer tools (F12 -> Console tab) to see if API calls are returning error messages.
- Verify user role: Some features are only visible to certain roles. Check that the user has the appropriate role for the action they're trying to perform.
- Database consistency: If data seems inconsistent, check the raw data in Prisma Studio (
pnpm db:studio) to verify actual database values. - Recompute payroll: Many payroll issues can be resolved by recomputing the payroll run. This recalculates all values from scratch, including reversing and re-applying loan payments and adjustments.