xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse 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
Auto DMSConsumer Goods DMSSales Force Automation (SFA) 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/Payroll configuration
REFERENCE · Last reviewed

Payroll configuration

Payroll configuration is everything an administrator sets up before the first payroll run: the accounts payroll posts to, the pay components and salary structures, the payroll periods, the statutory and income-tax rule tables, the module settings, the approval gate and who can see salary data. Payroll is a module where configuration is the product. Every amount a run calculates and every account it posts to comes from these records, so a gap here shows up later as a failed Calculate, a failed Post or a wrong payslip. Work through this page from top to bottom: later items refer to earlier ones.

Overview

#WhatWhereRead by
1Control accounts and the default bankFinance chart of accounts; Org Settings → Companies → Set default bankPost, Generate payment batch, Post challan, loans, full and final
2Payroll componentsPayroll → Settings → Pay structure → Payroll componentsCalculate (type, taxability, proration), Post (GL accounts)
3Salary structuresPayroll → Settings → Pay structure → Salary structuresCalculate (amounts)
4Employees and salary assignmentsPayroll → Run payroll → InputsCalculate (who is paid, how much), payment batch (bank details)
5Payroll periodsPayroll → Run payroll → Monthly run → Payroll periodsProration, loss of pay, posting date, statutory rule date
6Statutory rulesPayroll → Settings → Statutory rulesPF, ESI, professional tax and LWF lines
7Income-tax rulesPayroll → Settings → Income tax rulesProject TDS and Calculate
8Holidays and business hoursPayroll → Settings → Calendar → Holidays; business hoursPaid days, when absence counts as loss of pay
9Payroll settingsThe Payroll settings page (see Configuration below)Module switch, absence as loss of pay
10Approval process (optional)Setup → Process Studio → ApprovalsWho signs off a run before it posts
11AccessSetup → Users and security profilesWho sees payslips, declarations and runs

When to use it

  • Before the first payroll run for a new payroll company.
  • When you add a legal entity, a state, a pay population or a new pay element.
  • Before the first April run of a new financial year (new income-tax rules).
  • When a statutory rate or ceiling changes.
  • When a run fails on Calculate or Post with an account or rule message (see Common problems).

How xMatix handles it

  • Accounts are found by Control Type. Payroll never asks you which account to post to at run time. It looks for the company's GL account carrying the right Control Type, and for the GL accounts on each payroll component. A missing one stops the action and names what is missing.
  • The salary structure decides which lines an employee has; the rules decide statutory amounts. While a company has a PF, ESI or LWF rule, that rule sets the amount of the structure line of that statutory type. Professional tax comes from the slabs of the employee's work state.
  • Rules are resolved per run. Statutory rules apply as of the payroll period's end date. Income-tax rules apply for the financial year of the run.
  • Settings records are company-scoped or shared. Income-tax rows with no company apply to every payroll company; a company-specific row takes precedence where the screen says so (details per record below).

Prerequisites

  • The Payroll module is switched on for your organization.
  • You can open the Payroll app's Settings menu. The shipped Payroll settings menu is granted only to the System Admin profile; give other administrators access through their security profile.
  • Each payroll company exists as a company in xMatix with its chart of accounts.
  • Every employee has a person (resource) record. Bank account, IFSC, PAN and UAN live on that record.

Procedure

Step 1 — Tag the control accounts

On the payroll company's GL accounts, set Control Type on one account per type the company uses:

Control TypeUsed for
Payroll PayableEvery employee's net pay (one open item per employee), full-and-final net settlements, expense claims reimbursed through payroll
PF PayablePF deductions and employer contributions; the PF challan clears it
ESI PayableESI amounts; the ESI challan clears it
Professional Tax PayableProfessional tax deductions; the PT challan clears it
TDS Salary PayableIncome tax deducted from salary; the salary TDS challan clears it
LWF PayableLabour welfare fund amounts; the LWF challan clears it
Employee Loan, Employee AdvanceDisbursed loans and advances; payroll recoveries clear them
BankSalary payouts, challan deposits, loan disbursements

Payroll Payable is mandatory: Post fails without it. The statutory payables are used by Post challan when the challan has no payable account of its own. See Chart of accounts and GL accounts.

Step 2 — Set the default bank

If the payroll company has more than one Bank control account, go to Setup → Feature Hub → Administration → Org settings → Companies, select the company and click Set default bank. Generate payment batch takes the bank from there. With exactly one Bank control account, payroll uses it; with several and no default, payroll refuses rather than guessing.

Step 3 — Create the payroll components

Open Payroll → Settings and choose Payroll components under Pay structure. Create one component per pay element (Basic, HRA, PF employee, PF employer, professional tax, TDS and so on):

  1. Click New. Enter Name and Component code, then pick Component type (Earning, Deduction, Employer contribution or Reimbursement) and Calculation type.
  2. Choose the GL account and the Payable GL account. The form requires both. Post uses the expense account (GL account) for earnings and reimbursements, the payable account for deductions, and both for employer contributions.
  3. For a statutory line, pick Statutory type (PF, ESI, PT, LWF, TDS or Gratuity). Set Taxability and tick Proratable for earnings that loss-of-pay days reduce.
  4. Save.

Procedure and every field: Payroll components.

Step 4 — Build the salary structures

Under Pay structure, open Salary structures and create one structure per pay population. Add a component line for each pay element, with its calculation type and value: a fixed amount, a percentage of CTC, or a percentage of an earlier line. Set each line's Sequence and Component name on the line's own record page. A percentage line must come after the line it refers to. Lines are worked out in Sequence order, lowest first.

Min amount and max amount limits are read by the run but are not on the standard line forms. To use them, add them to the line form in the layout designer. Details: Salary structures.

Step 5 — Set up employees and their salary assignments

Open Payroll → Run payroll → Inputs → Employees. Each person on payroll needs an employee record with Payroll company, Date of joining, Tax regime and the statutory flags (PF applicable, ESI applicable, PT applicable, LWF applicable, TDS applicable). Then, under Inputs → Salary assignments, give each person a salary assignment naming their salary structure, their monthly CTC and the date it applies from.

Calculate pays an employee only when a salary assignment is in force for the period and its structure has at least one active line; everyone else is counted as skipped. The bank account, IFSC, PAN and UAN come from the person's resource record. See Employees.

Step 6 — Create the payroll periods

Open Payroll → Run payroll → Monthly run → Payroll periods and create one period per company and pay cycle. Enter Start date, End date (both required) and Pay date. The pay date becomes the accrual's posting date; without it, the end date is used. Pick Payroll frequency. Two periods of the same company and frequency cannot cover the same date. See Payroll periods.

Step 7 — Enter the statutory rules

Open Payroll → Settings → Statutory rules and set up, per payroll company:

  • PF rules: wage ceiling, employee and employer rates, EPS rate and EPS wage ceiling, EDLI and admin charge rates, effective from and to.
  • ESI rules: wage threshold, employee and employer rates, effective from.
  • Professional tax slabs: from and to amounts, monthly PT and February PT, per State code.
  • LWF rules: employee and employer amounts and Frequency, per State code.

Then make sure each branch your employees work from has a contact address with a state. Professional tax and LWF follow the employee's work state: payroll takes the employee's branch (or the person's default branch), then that branch's address, then its state code. Mechanics: Statutory deductions and challans, ESI rules, Professional tax slabs.

Step 8 — Enter the income-tax rules for the year

Open Payroll → Settings → Income tax rules and check that the financial year exists, for both regimes:

  1. Tax regime rules: one row for Old and one for New for the financial year (for example 2026-27).
  2. Salary tax slabs for each regime and year.
  3. Tax surcharge slabs for each regime and year.
  4. Tax deduction sections: the sections employees can declare, with the regime each is allowed in.

Rows with no company apply to every payroll company. Calculate and Project TDS refuse to run for a year with no Old or New tax regime rule for the company. See Income tax on salary, Tax regime rules, Salary tax slabs, Tax surcharge slabs and Tax deduction sections.

Step 9 — Holidays, business hours and the absence setting

Add your holidays under Payroll → Settings → Calendar → Holidays. Leave Branch blank for a company-wide holiday. Then decide whether working days without attendance count as loss of pay (the Unpaid absence setting, below). If you turn it on, set up business hours so payroll knows your weekly offs. See Holidays and Business hours.

Step 10 — Add an approval gate (optional)

xMatix does not ship a payroll run approval process. Without one, a run is posted with Post. To require sign-off, create a process on Payroll Run at Setup → Process Studio → Approvals, add Submit for Approval and the Approval Panel to the run's page, and restrict Post in the security profiles. Final approval posts the run. See Payroll run approval.

Step 11 — Give the payroll team access

In Setup → Users, open each payroll operator and HR user and add the Payroll admin or HR admin profile next to their main profile. Without one, an operator sees only their own payslip, declarations and TDS projection. See Permissions below.

Step 12 — Test with one run

Create a run for one period, Calculate, check one employee against a hand calculation, then Post and Generate payment batch. Use the go-live checklist below.

Fields

The settings records and their fields are documented on their own pages. The few configuration fields that live outside them:

FieldWhereWhat it meansNotes
Control TypeGL accountTells payroll which account plays which roleOne account per type per company; see Step 1.
Default bankOrg Settings → Companies → Set default bankThe bank account salary is paid fromRequired when the company has several Bank control accounts. Must still be an active Bank account of that company.
Payroll companyEmployeeThe company whose payroll the person is onA run includes employees whose payroll company (or company) is the run's company.
State (branch address)Branch contact addressDecides the employee's work stateRead for professional tax and LWF.
Enable PayrollPayroll settingsModule master switchOn by default.
Unpaid absence: working days with no attendancePayroll settingsWhether unmarked working days count as loss of payOff by default.

Business rules

  • Statutory rule checks on save. PF rates must be between 0 and 100 percent; ESI rates between 0 and 10 percent. PF wage ceiling, EPS wage ceiling and ESI wage threshold must be greater than zero. LWF amounts and professional-tax amounts cannot be negative, and a slab's to amount cannot be below its from amount. A PF rule's effective to cannot be before its effective from.
  • One active PF rule per company for any date. Two active PF rules of the same company with overlapping dates are refused. ESI rules have no end date, so two active ESI rules of one company with the same effective from are refused; otherwise the latest start on or before the date applies.
  • Payroll periods cannot overlap. A period needs a start and end date, end on or after start, and no other period of the same company and frequency may cover any of its dates. The check runs when a period is created or its company, dates or frequency change.
  • Period status follows the runs. When every live run of a period is posted, the period moves to Approved; when all are paid, Paid; when all are closed, Closed. It only moves forward and never out of Locked.
  • Locked and Closed periods. A Locked period cannot be edited except to change its Status. No run can be added to, calculated in or posted in a Locked or Closed period.
  • No tax rules, no calculation. Calculate and Project TDS stop with a message if the financial year has no tax regime rule for both regimes for the company. Nothing is calculated, so nobody is paid a wrong TDS figure.
  • Tax declarations need the year set up. A tax declaration is refused when its financial year has no tax regime rule. Its lines are refused when a section is not in the deduction section list, or not allowed in the declaration's regime.
  • Every employee is taxed in the general age band. Senior and super-senior slabs are not applied to salary TDS.
  • Missing GL mappings stop the whole post. One component line without its required account fails Post for the entire run.

Example

A company is starting payroll in October for 40 employees in two states.

  1. The finance lead tags the company's accounts: Salaries Payable as Payroll Payable, PF Payable, ESI Payable, Professional Tax Payable, TDS on Salary Payable and LWF Payable, plus two bank accounts with Control Type Bank. Because there are two banks, they set the default bank to the current account.
  2. The payroll administrator creates eleven components (Basic, HRA, Special Allowance, PF employee, PF employer, ESI employee, ESI employer, Professional Tax, LWF employee, LWF employer, TDS), each with its GL and payable accounts.
  3. They build a Staff structure: Basic at 50% of CTC (sequence 10), HRA at 40% of Basic (20), Special Allowance fixed (30), then the statutory lines (100 onwards) and TDS last.
  4. They enter a PF rule and an ESI rule from 1 April, professional-tax slabs for both states, and LWF rules for both states. They check that both branches have addresses with the right state.
  5. Tax regime rules already lists 2026-27 for Old and New, with slabs and surcharge bands.
  6. They create the October period (1–31 October, pay date 31 October, Monthly) and add each employee's salary assignment.
  7. They add the Payroll admin profile to the two payroll operators.
  8. A test run calculates 40 employees with 0 skipped. One employee checked by hand matches. Post succeeds and Generate payment batch creates the batch on the default bank.

Training

Practice exercise

In a sandbox company with no payroll set up:

  1. Create a payroll period for next month, then try to create a second period for the same company and frequency covering the 15th. Expected: the second save is refused with "already covers these dates".
  2. Create a PF rule with an employee rate of 120. Expected: "Employee rate must be between 0 and 100 percent".
  3. Create one structure with Basic and PF lines and a salary assignment for one employee, then create a run and click Calculate for a financial year that has no tax regime rule. Expected: "Payroll can't compute salary TDS for tax year …". Add the year's tax regime rules for Old and New and calculate again; it succeeds.
  4. Remove the Control Type from the Payroll Payable account and click Post. Expected: the post fails naming the missing Payroll Payable control account. Restore the tag.

Quick reference

  • Payroll Payable control account: mandatory for Post.
  • Several bank accounts: set the default bank in Org settings.
  • Components need both GL fields; the type decides which one posts.
  • Calculate pays only employees with a salary assignment in force.
  • No overlapping periods per company and frequency.
  • PF, ESI and LWF amounts come from the rules while a rule exists.
  • Professional tax and LWF follow the branch address's state.
  • No tax regime rule for the year: Calculate stops.
  • Give operators Payroll admin or HR admin, not View All on a general profile.

Permissions

  • Payroll settings menu. The Payroll app's Settings menu (components, structures, statutory and income-tax rules, holidays) is granted to System Admin in a new organization. The Payroll app itself (runs, inputs, pay and comply, income tax) is granted to Standard User, Sales Manager, Sales Executive and System Admin.
  • Run actions. Calculate, Post, Generate payslips, Generate payment batch, Prepare TDS challan and Generate statutory files are profile actions. Standard User ships with them. If you add an approval process, take Post away from the profiles that should not post without approval.
  • Personal payroll records are scoped to the employee. Payslips, TDS certificates, tax declarations and their lines, monthly TDS projections and employee records show each user only their own records. A manager also sees those of the people in the roles below theirs. Full access to these six record types comes only with System Admin and the two add-on profiles Payroll admin and HR admin. Add one of them next to the user's main profile in Setup → Users. A payroll operator with only Standard User sees just their own payslip and an empty tax computation page.
  • The engine is not limited by record access. Calculate, Post, payslip publishing and payment batches process every employee whatever the person clicking can see.
  • Profiles are managed under Setup → Access Control → Profiles; see Security profiles.

Configuration

SettingWhereWhat changing it affects
Control Type on GL accountsThe company's chart of accountsWhich accounts Post, Post challan, loans and full and final use
Default bankSetup → Feature Hub → Administration → Org settings → Companies → Set default bankThe bank on new salary and full-and-final payment batches
Payroll componentsPayroll → Settings → Pay structureType, taxability, proration, payslip display and GL accounts of every run line
Salary structuresPayroll → Settings → Pay structureAmounts for everyone on the structure, from the next Calculate
PF rules, ESI rules, Professional tax slabs, LWF rulesPayroll → Settings → Statutory rulesStatutory amounts, from the next Calculate whose period end is on or after the rule's start
Tax regime rules, Salary tax slabs, Tax surcharge slabs, Tax deduction sectionsPayroll → Settings → Income tax rulesTDS projection and deduction; which declaration sections are accepted
HolidaysPayroll → Settings → CalendarWorking days for the absence count
Enable PayrollPayroll settings pageOff: the Payroll apps leave the app launcher and navigation for everyone; records still open from a direct link
Unpaid absence: working days with no attendancePayroll settings page, group Paid daysOn: a past working day with no attendance, no approved leave and no holiday is one loss-of-pay day, for employees who marked attendance at least once in the month. Off: only approved unpaid leave reduces paid days. Joining and exit dates always count.
Document numberingSetup → Feature Hub → Platform → Document SettingsNumber series for payroll runs, adjustments, loans, full and final settlements, statutory challans, tax declarations and payment batches
Approval processSetup → Process Studio → ApprovalsWhether runs need sign-off before posting
Payment file formatOn each salary payment batchGeneric CSV or the bank's bulk upload format for the bank file

The Payroll settings page has no entry in the Setup menu. Open it at /setup/featurehub/modules/payroll/settings in your xMatix address. When HR has locked a month's attendance, the run uses the locked paid days instead of counting them itself.

Go-live checklist

#ItemVerified by
1Control accounts tagged per company, default bank setA test Post and Generate payment batch succeed
2Components mapped to GL accountsPost succeeds with no line-named failures
3Structures built and sequencedA test calculation matches a hand-worked employee
4Employees and salary assignments completeThe run's skipped count is zero, or explained
5Periods created, with pay datesThe accrual lands on the date finance expects
6Statutory rules current, branch states setPF, ESI, PT and LWF lines match the authority's current figures
7Income-tax rules for the financial year, both regimesCalculate runs and the TDS column is non-zero for taxable employees
8Approval process created (if you use one)A calculated test run reaches the approver
9Payroll admin or HR admin assigned to the payroll teamAn operator sees every employee's payslip; another user sees only their own

Common problems

"No Payroll Payable control account … is configured"

Post (or posting a full and final settlement) found no GL account of the run's company with Control Type Payroll Payable. Tag the account on the company's chart of accounts and post again.

"Earning/reimbursement component line … has no GL account mapped"

A line of the run came from a component without a GL account, or from a structure line or adjustment that names no component. The same applies to "Deduction component line … has no payable GL account mapped" and "Employer-contribution component line … needs both an expense and a payable GL account". Fix the component or the structure line, then Calculate again (the run copies the accounts at calculation) and Post.

"This payroll company has 2 Bank control accounts … Set the company profile's Default Bank GL Account"

Set the default bank in Org settings → Companies → Set default bank. "No Bank control account is configured for this payroll company" means no account carries Control Type Bank. "The company's default bank GL is not an active Bank control account of this company" means the default points at an account that is inactive, untagged or belongs to another company.

"No statutory payable control account configured for PF"

Post challan found no payable account on the challan and no account with the matching Control Type (PF Payable, ESI Payable, Professional Tax Payable, TDS Salary Payable or LWF Payable). Tag the account or fill the challan's payable account.

"Payroll can't compute salary TDS for tax year …"

The financial year has no tax regime rule for the Old regime, the New regime or both, for this company. Add them under Payroll → Settings → Income tax rules → Tax regime rules, with their slabs and surcharge bands, and calculate again.

"Payroll period … already covers these dates for this company"

Another period of the same company and frequency overlaps. Use that period, or change the dates. Periods saved before this check existed are not re-checked until their dates change; delete true duplicates by hand.

"Payroll period … is Locked" or "is Closed … unlock or reopen the period first"

Change the period's Status back before adding, calculating or posting a run in it.

"PF rule … is already active for this company from …"

Set the older rule's Effective to to the day before the new one starts, or make one of them inactive. For ESI, give the new rule a different Effective from.

An employee is missing from the run

The run counts as skipped anyone with no salary assignment in force for the period, or whose structure has no active lines. It leaves out people who join after the period, who exited before it, or who are Exited with no exit date. Check Payroll company, Date of joining, the salary assignment's dates and the structure.

Professional tax or LWF is zero for one branch

Payroll could not find a state for the employee: the employee has no branch (and the person has no default branch), or the branch's address has no state. Or no slab or rule exists for that state and there is no state-less fallback. Fix the address or add the slabs.

Common questions

Do I need a separate set of rules for every company?

For statutory rules, yes: PF, ESI, professional tax and LWF are entered per payroll company. Income-tax rules can be shared: a row with no company applies to every payroll company. A company-specific tax regime rule takes precedence over the shared one. Slab and surcharge rows are combined with the shared rows rather than replacing them. A company that needs different slabs therefore needs its own full set and no shared rows for that year. Check each company before its first run.

When do changes to rules take effect?

At the next Calculate. Statutory rules are picked as of the payroll period's end date, so a rule starting mid-month applies to that whole month's run. A run that is already posted is not recalculated. To apply a correction to a posted month, use a payroll adjustment in the next run. Changing a component's GL account also needs a recalculation of any unposted run, because the run copies the accounts onto its lines when it calculates.

Why does a payroll operator see only their own payslip?

Payslips, declarations, TDS projections, certificates and employee records are scoped to the employee. Only System Admin, Payroll admin and HR admin see everyone's. Add Payroll admin to the operator's profiles in Setup → Users. Do not give View All on these records to a general profile instead. That would let every user of that profile read every salary.

Can I run payroll without an approval process?

Yes. A new organization has none, and Post posts a calculated run directly. If you need sign-off, create the process and take Post away from operators' profiles, because Post works whether or not a run is approved.