Indian Statutory Coverage
Navigating payroll compliance rules in India is notoriously manual and error-prone. yourHRM integrates direct statutory calculations into its core payroll processing engine. We version tax rates and slabs by effective date, ensuring historical payroll lookups stay correct even if government rates change.
Employee Provident Fund (EPF)
Supports automatic calculations of employee and employer contributions (standard 12% rules). System supports tenant-level configuration to choose between calculating contributions on full basic pay or applying the standard statutory limit of ₹15,000.
Employee State Insurance (ESIC)
Auto-calculates employee (0.75%) and employer (3.25%) contributions for employees earning under the statutory wage ceiling of ₹21,000 per month. Fully toggleable on or off per company setup.
State Professional Tax (PT)
Pre-loaded state-wise Professional Tax slabs (such as Karnataka, Maharashtra, Tamil Nadu, Telangana, and West Bengal). Slabs resolve automatically per employee based on the designated physical state of their branch office. Slabs are maintained centrally by Evergreen Infotech.
Tax Deducted at Source (TDS)
Calculates monthly TDS deductions dynamically based on projected annual gross earnings, verified tax exemptions (such as HRA proof, 80C investments, and interest on home loans), and regime defaults (old vs. new regime).
Multi-Tenant Data Isolation
We prioritize data isolation and security. Unlike legacy single-tenant deployments or fragile database route configurations, yourHRM utilizes a robust shared-schema single-database architecture backed by strict query-level routing filters.
Every tenant record contains a indexed tenant_id column. All models extend a base TenantScopedModel class which enforces a global Eloquent trait. This trait automatically injects the resolved tenant filter on every read, write, update, or search query.
Additionally, in local and testing environments, the framework will throw an explicit exception if a query attempts to bypass the tenant isolation scope using withoutGlobalScope, preventing developer error.