An income-tax slab band for salary TDS: a marginal rate over an income band, scoped by regime, financial year and age band. It is consumed by the salary-TDS projection, not by the payroll calculation directly, and the tax is progressive — each band's rate applies only to the slice of income falling inside it. AgeBand differentiates only the Old regime (General under 60, Senior 60-79, SuperSenior 80+); the New regime has a single band set seeded as General, and null is treated as General. Rows with a null PartnerAccountId apply to every legal entity, so a tenant can ship one shared rate pack and override per company only where it genuinely differs.
Fields
| Field | Label | Type | Required | What it does |
AgeBand | Age Band | PickList | | Old-regime slab category: General (under 60) / Senior (60-79) / SuperSenior (80+). Blank is read as General. Values: General (under 60), Senior citizen (60-79), Super senior citizen (80+). |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
FinancialYear | Financial Year | Text | | Indian financial year label in the form 2026-27, derived by the projection from the payroll period's end date with the year starting on 1 April. A null value makes the row apply to every year, which is rarely intended for rate bands. |
FromIncome | From Income | Currency | | The bottom of the band. Tax is progressive: only the slice of taxable income above this figure and below ToIncome is charged at this row's Rate, so the exemption limit is expressed as a first band with a zero rate rather than as a separate setting. |
Id | Id | Guid | Yes | |
IsActive | Is Active | Boolean | | Excludes the band from the rate pack when false. Because the pack is assembled from whatever rows match, deactivating a middle band does not shift the others — it leaves an untaxed gap in the schedule. |
Label | Label | Text | | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text, unique | Yes | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountId | Partner Account | Lookup → Account | | The legal entity this band belongs to. Null means the row applies to every company in the tenant, which is how a shared statutory rate pack is shipped once and overridden only where a company genuinely differs. |
Rate | Rate | Currency | | The marginal percentage charged on the portion of taxable income inside this band, entered as a percentage figure (5 means 5%). It is not an effective rate on total income. |
RecordTypeId | Record Type | Guid, hidden | | |
Regime | Regime | PickList | | Old or New, matching the platform's regime constants exactly. The projection resolves a separate slab set per regime and computes both, so a mis-typed value quietly removes bands from one regime's rate pack rather than raising an error. A null value makes the row apply to whichever regime is being computed. Values: Old Regime, New Regime. |
ToIncome | To Income | Currency | | The top of the band; leave it null for the open-ended highest band. Gaps or overlaps between rows are not validated — income falling in a gap is simply untaxed and an overlap is charged twice. |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
Actions
| Action | Label | Type | What it does |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete this SalaryTaxSlab. |
DeleteBulk | Delete | Delete | DeleteBulk |
Edit | Edit | Edit | Edit this SalaryTaxSlab. |
EditInLine | Edit | EditInline | Edit |
New | New | New | Create a SalaryTaxSlab. |
View | View | View | View this SalaryTaxSlab. |
Lookup filters
| Filter | Lookup field | Notes |
| PartnerAccountFilter | PartnerAccountId | |