Salary structure: components, pay basis and history
Updated 2026-11-07
What it is
A salary structure is the list of pay components an employee earns each month, plus the settings payroll needs: pay basis, PF, ESI, PT state, tax regime and bank details. Every change is saved as a new version with an Effective from date, so PunchMe always knows what someone was paid in any month.
An employee without a salary structure is not included in payroll.
Who uses it
- payroll.view: see the salary structure on the employee's profile, with bank, PAN, UAN and ESI numbers masked.
- payroll.manage: save a new version, and click Reveal bank/PAN/UAN to see the full numbers.
You also need company-wide access. Office- or team-scoped members do not see the salary card. See Roles and permissions.
Where to find it
Open Employees, click the employee, and scroll to the Salary structure card.
Setting up a structure
Components
Each component has a code, a name and a ₹ per month amount. A new structure starts with Basic, HRA and Special allowance. Use + Component to add more.
- You can have up to 20 components.
- basic is required.
- Codes use lowercase letters and underscores only, 2 to 20 characters, for example
hraorconveyance. Each code must be unique. - The codes
basicandda(dearness allowance) are special. Together they are the PF wages. PF, statutory bonus, gratuity and leave encashment are all worked out on Basic + DA.
The card shows the total as Gross / month.
Pay basis
| Pay basis | How pay is worked out |
|---|---|
| Monthly salary (default) | Each component is prorated on paid days: amount × paid days ÷ days in the month |
| Daily wage | Present days × ₹ per day. A half day counts as 0.5. Components are ignored |
| Hourly | Hours worked from punches × ₹ per hour. Components are ignored |
For daily and hourly pay, the wage shows on the payslip as one Basic line, such as "Wages (22 days × ₹800)". Loss of pay does not apply, because only days or hours worked are paid. Late days count as present days.
Other fields
- Effective from: the date this version starts. It defaults to the 1st of the current month.
- PT / LWF state: a two-letter state code, such as MH or KA. Leave it blank to use your company's state. See Statutory compliance.
- Tax regime: New (default) or Old.
- Old-regime deductions (₹/year): shown when the regime is Old. Enter the year's total of 80C, 80D, HRA exemption and similar; it is taken off taxable income on top of the standard deduction.
- PF applicable (default on), PF on ₹15,000 ceiling (default on), ESI applicable (default on).
- PAN, UAN, ESI IP number, Bank account, IFSC and Bank name.
Click Save salary.
Bank and statutory numbers
PAN, UAN, ESI IP number and bank account are stored encrypted and shown masked. Leave a field blank to keep the saved value. These numbers are shared with the employee's profile, so changing them here also changes them there. See Employee profile.
You need them for the statutory and bank files:
- UAN for every PF member, or the PF ECR file will not download.
- ESI IP number for every ESI member, or the ESI file will not download.
- Bank account and IFSC for every employee you pay by bank file or RazorpayX.
- PAN for the TDS annexure. Missing PANs are filled with
PANNOTAVBL.
Clicking Reveal bank/PAN/UAN is recorded in the audit log. See Data privacy and audit.
Turning it on or off
The 50% wage rule check
The new labour codes expect Basic + DA to be at least half of total pay. PunchMe can check this for you.
- Setting: Enforce Basic+DA ≥ 50% of gross, in Settings, Payroll.
- Default: off.
What happens when it's on / when it's off
On. When you save a monthly salary structure where Basic + DA is less than 50% of gross, the save fails with "Basic + DA must be at least 50% of gross (labour codes)". Raise Basic or DA, or lower allowances.
Off. Any split is accepted.
The check only runs when you save. Turning it on does not flag structures you saved earlier, and it does not block a payroll run. It does not apply to daily or hourly pay.
Changing it midway
Salary revision
To change pay, enter the new amounts, set Effective from to the date the change starts, and click Save salary. The old version is kept. The card lists all versions under Versions.
If you save with the same Effective from date as an existing version, that version is replaced rather than a new one added.
Which version a month uses
Payroll uses the latest version effective on or before the last day of the month, for the whole month. PunchMe does not split one month between two versions.
Example: a raise effective 16 October is paid for all of October. If you want only half the month at the new rate, set the date to 1 November and add the difference for October as an adjustment in payroll.
Backdated increases and arrears
If you save a version with an effective date in the past, PunchMe pays the difference as arrears in the next payroll run.
- Arrears are calculated for finalized months of the current financial year (April to March) only.
- They are worked out component by component, on the paid days of each month, and shown as lines like "Basic arrears (2026-08)".
- Arrears already paid are not paid again.
- Basic and DA arrears count towards PF for the month they are paid in.
- A backdated decrease produces a negative arrears line.
Changes in a draft or finalized month
If the month is still a draft, click Re-run draft on the Payroll page after saving. A finalized month is not recalculated. The difference arrives as arrears next month, if the new date reaches back into it. See Payroll.
Limits and edge cases
- There is no way to delete a version from the dashboard. Save a corrected one instead.
- The ESI check uses the salary in force at the start of each ESI contribution period, not the latest one. See Statutory compliance.
- Overtime for monthly employees uses the full monthly gross of the current structure.
- Arrears do not reach back past 1 April of the current financial year.
Related
Common questions
Do I need a salary structure for every employee?
Only for employees you want in payroll. Attendance and leave work without one.
What should I put in DA?
If you pay dearness allowance, add a component with the code da. PunchMe treats it like Basic for PF, bonus, gratuity and leave encashment. If you don't pay DA, leave it out.
Can I pay one employee daily and another monthly?
Yes. Pay basis is set per employee.
I gave a raise from last month. Will PunchMe pay the difference?
Yes, if last month is finalized and in the same financial year. Save the new structure with last month's date. The next run adds arrears.
Why did my save fail with a 50% message?
Enforce Basic+DA ≥ 50% of gross is on and Basic + DA is less than half the gross. Adjust the split, or turn the check off in Settings, Payroll.