xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Payroll/Troubleshooting payroll
TROUBLESHOOTING · Last reviewed

Troubleshooting payroll

Payroll problems cluster by stage: calculation, posting, payment, statutory, payslips. Find the symptom below; each entry states the cause the platform actually acts on and the fix. A useful general rule first: while a run is unposted and its payslips unpublished, recalculation is free — it replaces the previous pass completely (loan recoveries restored and re-taken included), so "fix the input, calculate again" is the answer more often than not.

Calculation

Employees are missing from the run

The run header's skipped count tells you it happened; the causes are exact. An employee is excluded when their employment status is Exited, and skipped when no active compensation record with a salary structure exists for them, or the structure has no active lines. Fix the employee's compensation or structure and recalculate. Also check the employee's payroll company — a run only picks up the employees of its own company.

Calculate is refused

Two deliberate blocks. "Payroll run is posted": the ledger already reflects the old figures — reverse the accrual journal first, then recalculate. "Payslips are published": employees have seen those documents; recalculating would contradict them. Correct forward with an adjustment next period instead.

An adjustment or loan recovery didn't apply

An adjustment must be on the run's period and employee, with approval status approved or empty — pending and rejected adjustments are excluded by design. A loan recovers only while it is Active with a positive outstanding balance and a positive installment amount; a Requested loan was never disbursed. Fix and recalculate.

TDS is zero for everyone

The TDS component reads the month's persisted projection, and no projection existed. The usual cause is the financial year's tax rule tables not being seeded — projection deliberately skips rather than guesses when the year's tables are missing. Seed the tables (both regimes) and recalculate; Calculate re-projects automatically. For a single employee at zero, check their TDS-applicability flag and whether their projected annual income simply falls below tax.

TDS is zero for one employee whose declarations were "submitted"

Only proof-checked declarations count, at their verified amounts. A declaration in Draft or Submitted contributes nothing — verify it and recalculate. Also confirm the claimed sections are allowed under the employee's elected regime.

Posting

Post fails naming a component line

The named line's payroll component lacks a GL mapping: earnings and reimbursements need an expense account, deductions a payable account, employer contributions both. Map the account on the component master and post again — nothing posted partially.

Post fails on the control account

"No Payroll Payable control account is configured": the company has no GL account with the Payroll Payable control type. Configure it (see Payroll configuration) and post again. The same pattern applies to challans and settlements — each names the missing control type.

The run was approved but never posted

Final approval posts the accrual, but a posting failure does not undo the approval — it is logged and the run stays approved with posting status NotPosted. Fix the named gap (mapping or control account) and run Post directly on the run. See Payroll run approval.

Payment

Generate Payment is refused

In order of likelihood: the run is not posted yet (posting is the prerequisite); no employee has positive net pay; or the bank cannot be derived — the error spells out which: the company has no bank control account, the configured default bank is not an active bank account of this company, or several banks exist with no default. Set the company profile's default bank GL and retry.

Pay reports no open items to settle

The batch settles the run's per-employee payroll-payable open items, and they are already settled — typically the batch was paid once already, or the items were settled by a manual payment. Check the open items on the Payroll Payable control for the run before assuming money is unpaid.

A batch line has no bank account or IFSC

The person record was missing bank details when the batch was generated. Update the person record, then regenerate the batch from the run — the lines snapshot bank details at generation time.

Statutory and payslips

Prepare TDS Challan finds nothing

The challan sums TDS from posted run details of the period — an unposted run contributes nothing. Post the run first. If the period's challan is already Paid and a correction run posts later, the difference is reported on the challan result rather than edited into the paid challan; deposit it separately.

Employees cannot see their payslips

They are Draft. Generation never publishes; set the publish status to Published once the payment is out. See Payslips.

Payslip year-to-date looks wrong

YTD sums the fiscal year containing the run's period — the company's fiscal calendar, or April-to-March absent one. A figure that seems to include "last year" usually means the fiscal calendar is missing or its dates are wrong; fix the calendar and regenerate the slips (they are drafts until published).

A posted figure needs correcting

Posted payroll follows ledger rules: no edits, reverse and redo — or correct forward with an adjustment in the next period, which keeps the statutory challans of the closed period untouched. If the accrual landed in a closed accounting period, see Closing a period for reopening rules.