Complete setup guide for HRSanad — Indian Labour Law, statutory deductions, salary structure, and compliance calendar.
Covers: EPF · ESI · Professional Tax · TDS · Indian Gratuity · CL/SL/PL Leave · Indian Salary Structure · April–March Fiscal Year
HRSanad is built as a multi-tenant SaaS platform. Every company is an isolated tenant with its own configuration — currency, fiscal year, gratuity slabs, pay components, and leave policies are all per-company, per-tenant. Nothing is hardcoded to UAE.
Set payroll_currency = 'INR' on the company record. All payslips and exports use ₹.
Set fiscal_year_start = 4. India's financial year runs 1 April → 31 March.
Set country_code = 'IN'. India is already seeded in the nationalities table.
Go to Admin → Company → New Company. Fill in these critical India-specific fields:
| Field | Value for India | Why |
|---|---|---|
country_code | IN | Identifies company as Indian for rule application |
payroll_currency | INR | All payslips, reports, JV exports use ₹ |
fiscal_year_start | 4 (April) | India's April–March financial year |
wps_mol_id | Leave blank | WPS is UAE-only; not required for India |
wps_agent_id | Leave blank | WPS is UAE-only; not required for India |
Indian organisations typically use these grade bands. Create them in Admin → Grade Master:
Also create: Manager, Senior Manager, Director, VP — based on your org structure.
The default slabs in the system are UAE-specific. You must create Indian slabs for your tenant in Admin → Finance → Gratuity Slabs:
| Years From | Years To | Days Per Year | Divisor | Effective Date |
|---|---|---|---|---|
| 0 | 0.99 | 0 (no gratuity) | 26 | Company joining date |
| 5 | null (unlimited) | 15 | 26 | Company joining date |
Gratuity = (Basic + DA) × 15 ÷ 26 × Years of Servicesalary_divisor field in the gratuity slab is read from the database — just set it to 26.
Create the Indian leave types in Admin → Leave → Leave Types. See the full Leave Configuration section below.
Create the Indian salary components in Admin → Pay Component Master. See the Indian Salary Structure section below for the full list.
In Admin → Grade Master → [Grade] → Default Pay Components, assign the standard components for each grade. Employee-level overrides are applied individually.
When adding Indian employees, capture these India-specific fields in addition to standard details:
Store PAN and Aadhaar in the Documents tab of the Employee Master with appropriate expiry alerts (use the existing document expiry system).
A typical Indian salary (CTC — Cost to Company) is made up of several components. The structure is designed to optimise tax liability for the employee while meeting legal requirements. Here is a standard structure and how to configure each component in HRSanad:
CTC = Gross Salary + Employer Statutory Contributions. Take-home = Gross − Employee Deductions.
| Component Name | Type | Calc Method | Typical Value | Tax Status |
|---|---|---|---|---|
| Basic Salary | Earning | fixed |
40–50% of gross CTC | Fully taxable |
| Dearness Allowance (DA) | Earning | pct_basic |
0–20% of Basic (varies by sector; many private IT companies set 0%) | Fully taxable |
| HRA (House Rent Allowance) | Earning | pct_basic |
50% of Basic (metro cities); 40% (non-metro) | Partially exempt u/s 10(13A) if rent paid |
| LTA (Leave Travel Allowance) | Earning | fixed |
₹15,000–₹50,000/year (paid annually) | Exempt u/s 10(5) for actual travel (twice in 4-yr block) |
| Conveyance Allowance | Earning | fixed |
₹1,600/month | Exempt up to ₹19,200/year under old regime |
| Medical Allowance | Earning | fixed |
₹1,250/month | Exempt up to ₹15,000/year with bills (old regime) |
| Special Allowance | Earning | formula |
CTC − (Basic + HRA + LTA + Medical + other fixed) — the "balancing" component | Fully taxable |
| Performance Bonus / Variable Pay | Earning | fixed |
Paid quarterly or annually | Fully taxable; TDS must be deducted at payment |
| EPF Employee Contribution | Deduction | pct_basic |
12% of (Basic + DA) | Employee deduction; exempt u/s 80C up to ₹1.5L |
| ESI Employee Contribution | Deduction | pct_gross |
0.75% of gross wages (only if gross ≤ ₹21,000/month) | Employee deduction |
| Professional Tax | Deduction | fixed |
₹200/month (Karnataka, Maharashtra) — see state table | Employee deduction; exempt u/s 16(iii) |
| TDS (Income Tax) | Deduction | fixed |
Calculated per employee per month (see TDS section) | Mandatory deduction under Section 192 |
| EPF Employer Contribution | Employer Cost | pct_basic |
12% of (Basic + DA): 3.67% → EPF, 8.33% → EPS | Not paid to employee; employer expense |
| ESI Employer Contribution | Employer Cost | pct_gross |
3.25% of gross wages (only if employee eligible for ESI) | Not paid to employee; employer expense |
| NPS Employer Contribution | Employer Cost | pct_basic |
10% of (Basic + DA) — optional, if company has NPS | Employer contribution; tax-exempt |
min(basic + da, 15000) * 0.12
is_gratuity_base = true. The gratuity engine uses only these components for calculation. HRA, LTA, Special Allowance, and other components must NOT be flagged — this matches the Payment of Gratuity Act which specifies "last drawn wages" as Basic + DA.
File ECR (Electronic Challan cum Return) on EPFO portal by 15th of the following month. Use HRSanad's JV export to get the component-level totals.
EPF Slab Example — Employee Basic = ₹25,000/month
Mandatory EPF: 12% × ₹15,000 = ₹1,800 (employee deduction)
Employer EPF: 3.67% × ₹15,000 = ₹550.50 (to PF account)
Employer EPS: 8.33% × ₹15,000 = ₹1,249.50 (to pension)
Total employer: ₹1,800
If opted for full contribution:
Employee: 12% × ₹25,000 = ₹3,000
Employer: 12% × ₹25,000 = ₹3,000 (split same way)
File contribution on ESIC portal by 15th of the following month.
formula-type component: if(gross <= 21000, gross * 0.0075, 0)
Professional Tax is a state-level tax deducted monthly from employee wages. The rates and slabs differ by state. It is capped at ₹2,500/year by the Constitution. Configure as a fixed deduction per month in HRSanad.
Salary ≤ ₹7,500: Nil
₹7,501–₹10,000: ₹175/mo
>₹10,000: ₹200/mo (₹300 in Feb)
Salary ≤ ₹14,999: Nil
₹15,000–₹29,999: ₹150/mo
≥ ₹30,000: ₹200/mo
Salary ≤ ₹8,500: Nil
₹8,501–₹25,000: ₹90–₹110/mo
>₹25,000: ₹200/mo
Salary ≤ ₹15,000: Nil
₹15,001–₹20,000: ₹150/mo
>₹20,000: ₹200/mo
Salary ≤ ₹3,500: Nil
₹3,501–₹5,000: ₹22.5/mo
₹5,001–₹7,500: ₹52.5/mo
>₹7,500: ₹182.5/mo
Professional Tax is not applicable in Gujarat (abolished) and Delhi has no PT. Set component value to ₹0 or skip.
TDS on salary is the employer's responsibility to deduct and deposit monthly. The amount is based on the employee's projected annual income and their chosen tax regime.
fixed deduction component, manually updated each April after investment declarations are collectedformula calc method can be used for simple progressive calculationsFrom FY 2023-24, the New Tax Regime is the default. Employees must explicitly opt for the Old Regime. Capture this choice during onboarding via the employee form.
Budget 2023. Simpler, lower rates, but most deductions not available.
✅ Rebate u/s 87A: No tax for income up to ₹7L. Standard deduction ₹50,000 allowed.
Traditional regime. More tax but allows exemptions and deductions.
Key deductions available: 80C (₹1.5L) · HRA exemption · LTA · 80D (medical) · 80CCD(1B) NPS ₹50K · Standard deduction ₹50K
Daily Rate = (Basic + DA) ÷ 26
Gratuity = Daily Rate × 15
× Years of Service
Max Gratuity = ₹20,00,000
Example: Basic + DA = ₹30,000/month. Service = 8 years.
Daily rate = 30,000 ÷ 26 = ₹1,153.85
Gratuity = ₹1,153.85 × 15 × 8 = ₹1,38,461
Create these rows in the finance.gratuity_slabs table for the Indian tenant. The existing UAE slabs belong to a different tenant and will not affect your Indian company.
| Slab | years_from | years_to | days_per_year | salary_divisor | Note |
|---|---|---|---|---|---|
| No gratuity | 0 | 4.49 | 0 | 26 | Less than 5 years: no entitlement (except death/disability) |
| Standard gratuity | 5 | NULL | 15 | 26 | The core India rule. Applies forever — no upper limit on years. |
salary_divisor field on the slab row handles this correctly — just set it to 26.
India has a multi-leave system where each leave type has its own rules, accrual, and carry-forward policy. Configure all of these in Admin → Leave → Leave Types.
| Leave Type | Code | Days | Accrual | Carry Forward | Document Required |
|---|---|---|---|---|---|
| Privilege / Earned Leave (EL) | PL |
15 days/year (Factories Act minimum) | monthly (1.25 days/month) |
Yes — up to 30 days; expires after 3 years | No |
| Sick Leave (SL) | SL |
7–12 days/year (varies by state/Shop Act) | annual (full credit on April 1) |
No — lapses at year end | Medical certificate for > 3 consecutive days |
| Casual Leave (CL) | CL |
7–12 days/year (varies by state) | annual (full credit on April 1) |
No — strictly no carry forward; lapses Dec 31 or Mar 31 | No (purpose is typically personal/emergency) |
| Leave Type | Days | Law Reference | Notes |
|---|---|---|---|
| Maternity Leave (ML) | 26 weeks (first 2 children); 12 weeks (3rd+ child) | Maternity Benefit Act, 1961 (amended 2017) | 8 weeks can be availed before delivery. Fully paid. Female employees only. Requires medical certificate. |
| Paternity Leave | Not statutory — company policy typically 5–15 days | No central law; some state laws and PSU rules | Configurable in HRSanad as a custom leave type |
| National Holidays (NH) | 3 mandatory | Negotiable Instruments Act | Republic Day (26 Jan), Independence Day (15 Aug), Gandhi Jayanti (2 Oct). All other public holidays are state-optional or company-declared. |
| Restricted Holidays (RH) | 5–7 days/year (employee chooses) | Company policy | A list of ~14 festivals given; employee picks 5–7. Requires advance application. Configure with negative_balance = false and a fixed annual entitlement of 5 days. |
| Compensatory Off (Comp-off) | 1 day per 1 day worked on holiday/weekend | Company policy / state Shops Acts | Employees who work on a public holiday earn 1 comp-off. Configure with accrual_method = on_joining and manual HR adjustments after each holiday worked. |
| Bereavement Leave | 3–5 days (company policy) | No central law (states may differ) | For death of immediate family member. Not statutory but standard practice. |
| Sabbatical Leave | Varies — typically 30–90 days | Company policy | Long-term leave for education, personal projects. Usually unpaid or partially paid. |
| Setting | PL / EL | Sick Leave | Casual Leave |
|---|---|---|---|
unit | days | days | days |
is_paid | true | true | true |
requires_approval | true | true | true |
requires_document | false | true (if >3 days) | false |
min_notice_days | 7 | 0 (apply retrospectively) | 1 |
accrual_method | monthly | annual | annual |
carry_forward_max | 30 | 0 (no carry) | 0 (no carry) |
negative_balance | false | false | false |
max_consecutive_days | 30 | 7 (then medical cert) | 3 |
Indian employees have a specific set of identity documents that HR must collect and maintain. Store these in the Employee Master → Documents tab. Use the existing document expiry alert system for anything with an expiry date.
| Document | Who Needs It | Why Critical | Expiry? |
|---|---|---|---|
| PAN (Permanent Account Number) | All employees | Mandatory for TDS deduction u/s 192. If not provided, TDS is deducted at the maximum 20% rate. | No expiry |
| Aadhaar Number | All employees | Mandatory for EPF registration. Must be linked to PAN by law. Required for Aadhaar-based UAN KYC. | No expiry (store masked — last 4 digits only) |
| UAN (Universal Account Number) | All EPF-enrolled employees | Portable EPF account number. Stays with employee across all employers. Employee generates via EPFO portal. | No expiry |
| ESIC Card / IP Number | Employees with gross ≤ ₹21,000/month | Insurance number for ESIC medical benefits. Employer generates during ESIC registration. | No expiry (but benefits depend on active contributions) |
| Passport | Employees traveling internationally | Required for overseas assignments. Set expiry alert at 6 months before expiry. | Yes — alert at 180/90/30 days |
| Educational Certificates | All | Background verification. Store highest qualification. | No expiry |
| Form F — Gratuity Nomination | All employees | Designates who receives gratuity if employee passes away. Required under Gratuity Act. | No expiry (update on life events) |
| Form 12BB (Investment Declaration) | All employees paying TDS | Lists planned 80C investments, HRA receipts etc. Needed for TDS calculation. | Annual — April each year |
| Bank Account + IFSC Code | All employees | Required for NEFT salary transfer. Validate IFSC code format. | No expiry |
India consolidated 29 central labour laws into 4 Labour Codes (passed 2019–2020, pending full state-level notification as of 2024). HR must be familiar with both the existing Acts and the upcoming Codes.
Minimum wages are set by the Central Government (for central sphere) and State Governments separately. They apply based on skill category and zone. HRSanad stores the basic salary per employee — HR must ensure no employee's basic salary falls below the applicable minimum wage for their skill category and state.
Who is eligible? Employees with wages up to ₹21,000/month. All establishments with 20+ employees.
Rate: Minimum 8.33% up to maximum 20% of annual wages (or ₹7,000/month whichever is higher, as "set-on"/"set-off" basis).
When paid: Within 8 months of year-end. Typically paid before Dussehra/Diwali.
Ceiling for calculation: Wages are capped at ₹7,000/month for bonus calculation even if actual wages are higher. A monthly bonus of ₹583 (8.33% × ₹7,000) is the minimum.
HRSanad configuration: Add as a fixed earning component paid in a separate payroll run (use run_type = 'bonus' or add as one-time payment in the regular run).
All organisations with 10 or more employees must constitute an Internal Complaints Committee (ICC). Annual compliance filings are required. HRSanad's document management can be used to track ICC member appointments and annual report filing dates.
| Compliance Task | HRSanad Action | Export/API |
|---|---|---|
| EPF ECR monthly file | Generate JV export filtered to EPF components; use to fill EPFO portal upload format | POST /v1/payroll/runs/:id/generate-jv |
| ESIC monthly filing | Export ESI employee + employer contribution totals per employee | JV export + employee export |
| Professional Tax challan | Sum of PT deductions per state from payroll JV | JV export filtered by component |
| TDS quarterly return (24Q) | Employee list with PAN, monthly TDS deducted, challan details — use salary slips as source | Salary slip data via GET /v1/payroll/runs/:id/slips |
| Form 16 generation | PDF payslip per employee (already built-in) — aggregate 12 months' slips for Form 16 Part B basis | Payslip PDF download per employee |
| Headcount / Manpower report | Employee export with joining date, grade, status, salary | GET /v1/personnel/employees/export |
The payroll run flow in HRSanad is the same as for any country (Draft → Calculated → Approved → Finalized). However, for India, the final step differs:
India's Digital Personal Data Protection Act (DPDP), 2023 governs how employee personal data must be handled. Key obligations for HRSanad Indian tenants:
hr_admin / payroll_admin / sysadmin can see salary fieldsaudit.change_log triggercountry_code=IN, payroll_currency=INR, fiscal_year_start=4