A salary structure is the pay template a payroll run uses to turn a person's CTC into earnings, deductions and employer contributions. It is an ordered list of component lines, such as Basic, House Rent Allowance, PF and professional tax. You build a structure once for each group of employees who are paid the same way. You then give each person a Resource Compensation record that names the structure and their CTC, and every payroll run calculates them from it.
Overview
Three records work together:
- The payroll component says what an amount is: earning, deduction, employer contribution or reimbursement, its statutory scheme, and the GL accounts it posts to.
- The salary structure and its component lines say how much: each line has a Calculation Type and a Value, and the lines are worked out in Sequence order.
- The Resource Compensation record says who is paid from the structure and on what CTC, from which date.
A structure is shared across your whole tenant. It has no company field, so one structure can serve employees of several companies. The accounts still come from the payroll components that its lines name.
When to use it
- Before your first payroll run, to define how each group of employees is paid (for example field staff, managers, interns).
- When a new person joins, to assign them a structure and CTC.
- When someone gets a raise or a new pay mix, to add a revised compensation record.
- When a statutory rate or an allowance changes, to edit the lines of every structure that uses it.
How xMatix handles it
When you click Calculate on a payroll run, xMatix does the following for each employee of the run's company:
- It takes the person's compensation record with the latest Effective From. It ignores deleted records and records whose Is Active is switched off, and the record must name a salary structure. If there is none, the employee is counted as skipped.
- It loads the structure's lines, leaving out lines whose Is Active is off, and sorts them by Sequence. If no line is left, the employee is skipped.
- It works out each line in order:
- Fixed, Manual and Formula use the line's Value as an amount. Formula text is not evaluated.
- Percentage with Is Percentage of CTC switched on is Value per cent of the compensation record's CTC.
- Percentage without that switch is Value per cent of the line whose Component Name matches Percentage Of (capital letters don't matter). That line must come earlier in the sequence. If no earlier line has that name, the amount is 0.
- A line whose payroll component has Statutory Type
PTand whose Calculation Type is Slab reads the company's professional tax slabs, using the gross of the lines before it. See Statutory deductions and challans. - A line whose payroll component has Statutory Type
TDStakes the month's tax projection when one exists. See Income tax on salary.
- It applies the line's Min Amount and Max Amount limits, if any, and rounds to two decimals. Lines that are proratable are then reduced for loss-of-pay days.
- It copies the payroll component's type, statutory type, taxability, proration and GL accounts onto the calculated line. These override the line's own Component Type, Statutory Flag, Taxable and Pro-rata fields. A line with no payroll component uses its own fields and gets no GL accounts, so Post fails on it.
The run treats CTC as a monthly amount: a Percentage-of-CTC line pays Value per cent of CTC in every run. The salary TDS projection also uses CTC as the monthly gross for an employee with no calculated months yet.
The structure's own Effective From, Pay Frequency and Is Active, and a line's Effective From and Effective To, are not read by the run.
Prerequisites
- The payroll components you need exist, with their GL accounts.
- For professional tax lines, the company's professional tax slabs are set up.
- Each person to be paid has a resource record and an employee record for the payroll company.
- Your security profile gives you access to Salary Structure, Salary Component and Resource Compensation (see Permissions).
Procedure
Step 1 — Open the structure list
Open the Payroll app, choose Settings, and select Salary Structures under Pay Structure. You can also type Salary Structure in the App Launcher search. The list shows each structure's Name, Structure Name, Pay Frequency, Effective From, Is Active, Created By and Created Date.
Step 2 — Create the structure
- Click New. The Create Salary Structure form opens.
- Fill Structure Name, for example Field Staff. It must be unique across your tenant.
- Choose Pay Frequency. Monthly is the default. The other values are Weekly, Biweekly and Daily, but runs are always calculated per payroll period, so the choice is descriptive.
- Choose Effective From and switch on Is Active. The run reads neither of them (see How xMatix handles it).
- Click Save. The structure gets a number from the SS series in Name, and its record page opens.
The record page header shows Pay Frequency, Effective From and Is Active, with an Edit button. The page has three tabs, Components, Details and Resources, and a Structure Overview panel beside them.
Step 3 — Add the component lines
On the Components tab, click New. An inline card opens with seven fields:
- Payroll Component — pick the component this line pays. Always fill this. It brings the type, statutory behaviour and GL accounts.
- Component Type — leave it as it is when you picked a payroll component; the component's own type is used instead.
- Calculation Type —
Fixed,Percentage,Slab,FormulaorManual. - Percentage Of — for a Percentage line based on another line:
Basic,CTCorTaxable Income. In practice onlyBasicworks (see Business rules). - Is Percentage of CTC — switch on for a Percentage line based on CTC. This wins over Percentage Of.
- Formula — free text, not evaluated. Leave it empty.
- Value — the amount for a Fixed line, or the percentage for a Percentage line (type 40 for 40%).
Save the card. The line appears in the list with a number from the SC series. Repeat for each line.
Step 4 — Name and order each line
The inline card has no Component Name or Sequence, but the run needs both. For every line:
- On the Components tab, click the line's number in the Name column. The line's record page opens.
- Click Component Name and type the name. The line that other lines take a percentage of must be named exactly
Basic. - Click Sequence and type the order, for example 10, 20, 30. Lower numbers are worked out first. Put Basic before the lines that take a percentage of it. Put professional tax after all earnings. Use gaps so you can insert a line later.
- Check Is Active. A new line counts as active until you switch it off.
The line's record page shows its fields in four panels: Basic Details (Component Name, Sequence, Is Active), Component Configuration (Component Type, Calculation Type, Value, Payroll Component), Percentage Logic (Percentage Of, Is Percentage of CTC, Formula) and Compliance & Statutory (Taxable, Pro-rata, Statutory Flag). Click a field to change it in place. The last three fields are used only when the line has no payroll component. The Salary Structure tab lists salary structures, but it is not limited to the one this line belongs to.
Step 5 — Assign the structure to a person
A person is paid from a structure through a Resource Compensation record on their resource record:
- Open the person's resource record. In the Payroll app, choose Settings and select Resources under People, or use the Resources list.
- Go to the Administration tab. Under Resource Compensations, click New.
- The Resource is filled in for you. Choose the Salary Structure.
- Enter the CTC as a monthly amount. The box shows a currency sign as a prefix; type the amount in your company's currency.
- Choose Effective From.
- Click Save. The record gets a number from the RC series.
The person is calculated from this structure in the next run you calculate. The Salary Structure field on the resource record itself is for reference only, and payroll does not read it.
Step 6 — Check the result
- Create or open a Draft payroll run for the company and period, and click Calculate.
- Check that Skipped Resources is 0.
- Open a person's row and compare the lines on the Component Line tab with what you expect from the structure.
To try a change, edit the structure and click Calculate again. Recalculating an unposted run replaces the previous pass.
Step 7 — Revise a person's pay
For a raise or a new pay mix, go to the person's Administration tab and add a new Resource Compensation with the new CTC (and structure, if it changes) and the new Effective From. Leave the old record in place as history.
The newest Effective From wins as soon as the record is saved. The run does not compare the date with the payroll period. So:
- Add a future raise only after you have calculated and posted the last run at the old pay. Otherwise a run for an earlier month picks up the new figure.
- A raise is never split within a month. The whole period is paid on the latest record.
- A back-dated raise does not create arrears. Pay the difference for past months as a payroll adjustment.
To stop a compensation record applying, delete it from the Resource Compensations list. Its Is Active field is not on the standard forms, and its Effective To is not read.
Step 8 — Change or retire lines and structures
- Change a line — open it from the Components tab and edit the field in place. Every employee on the structure gets the new value in the next run you calculate. Runs you already posted keep their amounts.
- Retire a line — switch its Is Active off. The standard pages have no delete button for lines.
- Change the structure header — click Edit on the structure's record page. The form opens in a dialog with Structure Name, Pay Frequency, Effective From and Is Active.
- Retire a structure — first give everyone on it a new compensation record that names another structure. Switching the structure's Is Active off, or deleting it, does not stop anyone from being paid from it.
- Delete a structure — on the list, tick the structure and click Delete. Deleting does not remove its lines or the compensation records that point at it.
Fields
Salary structure
| Field | What it means | Notes |
|---|---|---|
| Name | The structure's number | Filled from the SS series when you save. |
| Structure Name | The name people choose from, for example Field Staff | Required. Unique across the tenant. |
| Pay Frequency | How often the group is paid | Required. Monthly (default), Weekly, Biweekly, Daily. Descriptive only: runs follow the payroll period. |
| Effective From | When the structure starts | Required. Descriptive only: not compared with the period. |
| Is Active | Whether the structure is in use | Descriptive only: the run does not check it, and the Salary Structure picker on compensation records still offers inactive structures. |
Component line
| Field | What it means | Notes |
|---|---|---|
| Name | The line's number | Filled from the SC series when you save. Click it to open the line. |
| Component Name | The line's name, used as the key for Percentage Of | On the line's record page only. Name the basis line exactly Basic. A line with no name cannot be used as a basis. |
| Sequence | The order the lines are worked out in | On the line's record page only. Starts at 0, so set it on every line. Also the line's order on the register when its payroll component has no sort order. |
| Is Active | Whether the run uses the line | Blank counts as active. Switch off to retire a line. |
| Payroll Component | The pay element the line pays | Overrides the line's Component Type, Statutory Flag, Taxable and Pro-rata, and supplies the GL accounts. The picker lists components of every company. |
| Component Type | Earning, Deduction, EmployerContribution or Reimbursement | Used only when the line has no payroll component. |
| Calculation Type | Fixed, Formula, Percentage, Slab or Manual | Blank works as Fixed. Slab works only on a PT component; elsewhere it uses Value. |
| Value | The amount, or the percentage | For Percentage, type 40 for 40%. Defaults to 0. |
| Percentage Of | The line a Percentage is taken of | Basic, CTC or Taxable Income. Only Basic can match a line name; CTC and Taxable Income give 0. |
| Is Percentage of CTC | Take the percentage of the compensation record's CTC | Wins over Percentage Of. |
| Formula | A formula expression | Not evaluated. |
| Taxable | Marks the amount taxable | Used only when the line has no payroll component. |
| Pro-rata | Reduce the amount for loss-of-pay days | Used only when the line has no payroll component. |
| Statutory Flag | None, PF, ESI, TDS, PT, LWF, Gratuity | Used only when the line has no payroll component. |
| Min Amount, Max Amount | Floor and ceiling for the amount | Read by the run, but not on the standard forms (see Configuration). |
Resource Compensation
| Field | What it means | Notes |
|---|---|---|
| Resource | The person being paid | Filled when you create the record from the resource's Administration tab. Payroll finds compensation by resource. |
| Salary Structure | The structure the person is paid from | A record without one is ignored. |
| CTC | The person's cost to company | A monthly amount. The basis for Percentage-of-CTC lines and for a new joiner's tax projection. |
| Effective From | When this pay starts | The record with the latest date is used, even if the date is in the future. |
| Effective To | When this pay ends | On the record page only. Not read. |
Business rules
- Order matters. Lines are worked out by Sequence, lowest first. A Percentage line can only use a line already worked out. Professional tax uses the gross of the lines before it. Lines with the same Sequence come in no fixed order.
- Percentage Of matches a name, not a component. The run looks for an earlier line whose Component Name equals the Percentage Of value. The payroll component's name is not used. Of the three values in the list, only
Basiccan match a line, and only if a line is named Basic. - The basis is the full amount. A percentage of Basic uses Basic before loss-of-pay proration, so proration does not compound down the chain.
- Clamps come before proration. Min Amount and Max Amount apply to the computed amount; proration then reduces it.
- The payroll component overrides the line for type, statutory type, taxability, proration and accounts. The line always decides the amount.
- Unrecognised values are silent. A Calculation Type other than Percentage uses Value. A line with no payroll component and a misspelt Component Type joins no total.
- Latest compensation wins. Compensation records are chosen by the latest Effective From, with no comparison to the payroll period, and Effective To is not read.
- Changes apply at Calculate. Calculated lines keep their copies. Recalculate an unposted run to pick up structure changes. A posted run cannot be recalculated.
- Numbering. Structures take their Name from the SS series, lines from SC and compensation records from RC.
- Delete does not cascade. Deleting a structure leaves its lines and the compensation records that point at it, and the run still pays from them.
Example
A payroll administrator sets up a Field Staff structure for employees on a monthly CTC of 50,000. The company's professional tax slab charges 200 at this pay.
| Sequence | Component Name | Payroll Component | Calculation Type | Value | Basis |
|---|---|---|---|---|---|
| 10 | Basic | Basic | Percentage | 50 | Is Percentage of CTC on |
| 20 | HRA | House Rent Allowance | Percentage | 40 | Percentage Of: Basic |
| 30 | Special Allowance | Special Allowance | Fixed | 15000 | — |
| 40 | PF Employee | PF Employee | Percentage | 12 | Percentage Of: Basic |
| 50 | Professional Tax | Professional Tax | Slab | 0 | PT slab table |
A new sales representative joins on 1 April. On the Administration tab of the representative's resource record, the administrator adds a Resource Compensation: Salary Structure Field Staff, CTC 50,000, Effective From 1 April.
The April run calculates Basic 25,000, HRA 10,000, Special Allowance 15,000, PF Employee 3,000 and Professional Tax 200. Gross pay is 50,000, deductions 3,200 and net pay 46,800.
In September the representative gets a raise to 56,000. After posting the August run, the administrator adds a second compensation record with CTC 56,000 and Effective From 1 September. The September run pays Basic 28,000 and HRA 11,200, and the April record stays on the resource as history.
Training
Practice exercise
In a sandbox company with a test employee:
- Create a structure Practice Structure.
- Add two lines. The first uses your Basic payroll component, Calculation Type Percentage, Is Percentage of CTC on, Value 50. The second uses your HRA component, Calculation Type Percentage, Percentage Of
Basic, Value 40. - Open each line. Name the first
Basicwith Sequence 10, and the secondHRAwith Sequence 20. - On the test employee's resource, add a Resource Compensation with this structure, CTC 20,000 and today's date.
- Calculate a Draft run for the company.
Expected result: the employee has Basic 10,000 and HRA 4,000. Now change the HRA line's Sequence to 5 and calculate again: HRA drops to 0, because Basic has not been worked out when HRA is. Set it back to 20.
Quick reference
- Structure = how much; payroll component = what it is and where it posts; compensation = who and on what CTC.
- Always pick a Payroll Component on each line, or Post fails.
- Set Component Name and Sequence on every line from the line's record page.
- Name the basis line
Basic; use the CTC switch, not Percentage OfCTC. - CTC is monthly.
- A raise is a new compensation record. It applies from the next calculation, whatever its date.
- Retire a line with Is Active off. Retire a structure by moving people off it.
- Formula, Pay Frequency and the structure's dates are not read.
Permissions
Viewing, creating, editing and deleting structures, lines and compensation records follows the Salary Structure, Salary Component and Resource Compensation access in your security profile. The shipped System Admin, Standard User, Sales Manager and Sales Executive profiles all have full access to these three records. Restrict them on the profiles of people who should not see or change pay. In the shipped setup, only System Admin can open the Payroll Settings list.
A user without read access does not see the list or the Resource Compensations list on a resource. A user without create access does not get New.
Configuration
- Structures — Payroll app → Settings → Pay Structure → Salary Structures.
- Compensation — on each person's resource record, Administration tab → Resource Compensations.
- Payroll components — the type, statutory type and GL accounts the lines use. See Payroll components.
- Professional tax slabs, PF, ESI and LWF — see Statutory deductions and challans.
- Min Amount and Max Amount — the run reads them, but they are not on the standard line forms. To use a floor or ceiling (for example a PF wage ceiling), an administrator adds them to the Salary Component record page in the layout designer. See Design a form layout.
- Component Name and Sequence on the inline card — an administrator can add these two fields to the Salary Component create form in the same way, so a line can be completed in one step.
- Numbering — the SS, SC and RC series are document name settings. See Document Name Setting.
- Dashboard — the Salary Structure & Components dashboard counts structures and lines. Its value tiles add up the lines' raw Value, so percentages and amounts are mixed. Its charts group by the line's own Component Type and Statutory Flag, not the payroll component's, so they can show blanks.
Common problems
An allowance that is a percentage of Basic comes out as 0
The run could not find Basic when it reached the line. Check three things:
- The basis line's Component Name is
Basic. The inline card does not set a Component Name, so open the line and type it. - The basis line has a lower Sequence than the allowance. New lines all start at 0, so give every line its own number.
- Percentage Of is
Basic.CTCandTaxable Incomegive 0.
Fix the lines and click Calculate on the run again.
A percentage of CTC comes out as 0
The line uses Percentage Of CTC instead of the Is Percentage of CTC switch, or the person's compensation record has no CTC. Switch it on, or enter the CTC, and calculate again.
Pay is twelve times too high
The CTC was entered as an annual figure. The run takes Percentage-of-CTC lines as a share of CTC every month. Enter CTC as a monthly amount.
An employee is counted as skipped
The person has no compensation record that names a salary structure, or every line on the structure is inactive. Add the record on the resource's Administration tab, or activate a line, and calculate again. Employees whose Employment Status is Exited are not counted at all.
A raise was paid a month early
The new compensation record was saved before the earlier month's run was calculated. The run always uses the latest Effective From, even a future date. Delete the new record, recalculate the earlier run, post it, and add the record again.
"Structure Name '…' already exists"
Structure names are unique across your tenant. Use a different name, for example one that includes the company.
I deactivated a structure but people are still paid from it
The run does not check the structure's Is Active, or whether the structure is deleted. Give those people a new compensation record that names another structure.
Post fails because a line has no GL account
A structure line has no Payroll Component, so the calculated line has no accounts. Open the line, pick the component, and calculate again. See Payroll components.
I can't find Min Amount and Max Amount
They are not on the standard forms. An administrator can add them to the Salary Component record page (see Configuration).
The Resources tab doesn't list the people paid from the structure
That tab lists resources whose own Salary Structure field names this structure. Payroll does not use that field. To see who is paid from a structure, check the Resource Compensation records.
Common questions
Can one structure serve employees of several companies?
Yes. A structure has no company field, and the run uses it for any employee whose compensation record names it. The amounts are posted to the accounts on each line's payroll component, so if two companies must post to different accounts, give each company its own structure that uses its own components.
How do I pay someone a one-off bonus?
Don't change the structure. Add a payroll adjustment for the person and period. A structure line is paid every month to everyone on the structure, so it is the wrong place for one-off amounts. The same applies to arrears from a back-dated raise.
Is there a way to copy a structure?
Not from the standard pages. Create a new structure and add its lines. Plan Sequence numbers with gaps, such as 10, 20 and 30, so you can insert a line later without renumbering the others.
Why does the run ignore the line's Component Type?
Because the line names a payroll component, and the component's type wins. That keeps the type and the GL accounts together on the component. The line's own Component Type, Statutory Flag, Taxable and Pro-rata fields are used only for a line without a component. Such a line has no GL accounts, so its run cannot be posted.
Does the structure's Effective From stop it being used early?
No. The structure's Effective From, Pay Frequency and Is Active describe the structure but are not read by the run. What decides the start of a person's pay is the Effective From on their compensation record. Even that date is not compared with the period, so add the record when you want the change to take effect.
