Salary Structures
Payroll → Masters → Salary Structures (/structures) — reusable CTC blueprints made of Pay Components. Requires payroll:read / payroll:master.


Concept
A salary structure is a named set of components that defines how CTC is split. Example: SDE-II — ₹18L with BASIC 40%, HRA 40% of BASIC, Special Allowance balancing, PF via calculator, PT via slab. Creating a revision ([Salary Assignment](salary-assignment)) picks a structure, an effective date and a CTC — the structure costs it.
List view
| Column | Meaning |
|---|---|
| Code / Name | Stable code and display name, e.g. SDE-II |
| Currency | ISO code, e.g. INR |
| CTC | Annual CTC the structure is costed at (may be empty for a template) |
| Components | Number of component lines in the structure |
| Active | Inactive structures are kept for history |
- Export CSV — all structures in one file.
- Import CSV — template + example row overlay; shows created/updated/rejected stats.
- Row actions: Edit, Duplicate (
/structures/:id/duplicateclones all lines for a variant) and Delete (blocked if referenced).
The form
The form lists the structure header (code, name, currency, CTC, active) and its component lines. Each line is a Pay Component plus its amount/rule (flat, % of base, formula, etc.). Validation is topological:
- A
PERCENT_OFcomponent must point at a base that exists earlier in the composition — a cycle is rejected. - Formulas are checked (
checkFormula) against the vocabulary of component codes. - Statutory components with a
calculatorKeyread live rates from Statutory (PF/ESI/PT/TDS), not a stored amount.
Changing a structure does not rewrite history. Existing revisions keep the breakdown they were costed with; only new revisions cost against the new definition. To re-cost old revisions after a fix, use the Recalculate job on Salary Assignment.
:::note CTC vs Gross Deductions and employer contributions are not stored on a revision — runs recompute them each period. The server injects the statutory lines when you view a revision, which is why earnings alone add to less than CTC when the structure counts employer PF inside CTC. :::