When to create more than one scheme
Create separate schemes when employee groups genuinely follow different calculation policies—for example Monthly Staff, Daily-rated Workers or Contract Staff. Do not create one scheme per employee; employee-specific amounts belong in Employee Salary Structure.
| Field | What it controls | Example |
|---|---|---|
| Scheme Code | Unique stable code for the policy. | MONTHLY_STAFF |
| Scheme Name | Readable name displayed in Employee and Salary Structure lookups. | Monthly Staff Payroll |
| Pay Frequency | Declares the normal payroll cycle. | MONTHLY |
| Attendance Basis | Describes the denominator/source used for attendance-sensitive salary. | WORKING_DAYS |
| Proration Method | Declares how attendance adjustment is intended to be evaluated. | PAYABLE_DAYS |
| Standard Hours per Day | Normal daily hours used by attendance/overtime policy. | 8 |
| Overtime Method / Rate | Stores the scheme's overtime policy. Add and verify an overtime salary component when overtime must affect payroll. | HOURLY · ₹150 |
| Rounding Method | Default scheme rounding policy. Component-line rounding can be set separately and is used during component calculation. | NEAREST |
| Salary Expense Account | Default expense ledger for the scheme and fallback accounting design. | Salary Expense |
| Net Salary Payable Account | Liability ledger credited with total employee Net Pay. Salary Payment later clears this account. | Salary Payable |
| Effective From / To | Date range in which the scheme is valid. Leave Effective To blank for an open-ended active scheme. | 01-04-2026 onward |
| Active | Only active schemes are eligible during payroll generation. | Checked |
Pay Frequency
| Value | Behaviour | Choose it when |
|---|---|---|
MONTHLY | Declares a monthly salary cycle and matches the current Year/Month Payroll Run workflow. | Normal Indian monthly payroll. |
WEEKLY | Stores a weekly policy classification. | A weekly payroll design after its period workflow has been verified. |
FORTNIGHTLY | Stores a fourteen-day/half-month policy classification. | A fortnightly payroll design after its period workflow has been verified. |
Payroll Run currently requires Payroll Year and Payroll Month and prevents duplicate runs by year, month and run type. Use MONTHLY for the initial production configuration unless the alternate cycle has been fully tested.
Attendance Basis
| Value | Behaviour | Choose it when |
|---|---|---|
WORKING_DAYS | Intended for salary based on scheduled working days. The monthly summary's Working Days and Final Payable Days provide the current ratio. | Most attendance-controlled monthly payrolls. |
CALENDAR_DAYS | Declares a calendar-day denominator policy. | The company calculates salary over all days of the month. |
FIXED_DAYS | Declares a fixed denominator such as 26 or 30 days. | The employment policy always uses a fixed number of days. |
NO_ATTENDANCE | The payroll engine ignores absence proration by setting payable days equal to working days for the calculation. | Salary must not depend on attendance. |
For WORKING_DAYS, CALENDAR_DAYS and FIXED_DAYS, the current V1 payroll calculator reads the actual Working Days and Final Payable Days stored in Monthly Attendance. Ensure the attendance summary already reflects the chosen policy.
Proration Method
| Value | Behaviour | Choose it when |
|---|---|---|
PAYABLE_DAYS | Represents salary based on payable-days ÷ working-days; this is the ratio currently used by attendance-affected components. | The prepared attendance summary contains authoritative Final Payable Days. |
ABSENT_DAYS | Represents full salary minus absence-based deduction. | The organisation's policy is absence-led and the attendance summary is prepared accordingly. |
HOURS | Represents hour-based proration. | Worked hours and standard hours are authoritative and the calculation has been verified. |
The current calculation ratio is FinalPayableDays / WorkingDays. The selected Proration Method describes policy but does not switch to a separate absence/hour formula yet. Use PAYABLE_DAYS for the first live configuration.
Overtime and rounding
| Value | Behaviour | Choose it when |
|---|---|---|
NONE | No scheme-level overtime calculation is expected. | Employees are not paid overtime or overtime is handled outside payroll. |
HOURLY | Stores an hourly overtime policy and rate. | Overtime Hours will feed a separately verified overtime component. |
FIXED | Stores a fixed overtime policy/rate. | A fixed overtime amount is used after verification. |
| Value | Behaviour | Choose it when |
|---|---|---|
NONE | Keeps component precision to two decimals. | Paise must be retained. |
NEAREST | Rounds the component amount to the nearest whole rupee. | Standard whole-rupee payroll. |
UP | Rounds upward to the next whole rupee. | Policy explicitly requires upward rounding. |
DOWN | Rounds downward to the previous whole rupee. | Policy explicitly requires downward rounding. |
Payroll Scheme Components
Add one child row for every component applicable to this scheme. These rows are evaluated by Calculation Sequence; the scheme row normally overrides the component master’s defaults.
| Field | What it controls | Example |
|---|---|---|
| Salary Component | Selects the reusable component definition. | DA |
| Component Stage | Scheme-level stage. Keep it aligned with the master unless this scheme intentionally classifies it differently. | GROSS_EARNING |
| Calculation Sequence | Execution order. All codes used in the base/formula must have smaller sequence values. | 20 |
| Calculation Method | Method applied for this scheme: Fixed, Manual, Percentage, Formula, Attendance Prorated or Slab. | PERCENTAGE |
| Calculation Base | Earlier component codes added to form the calculation base. | BASIC+DA |
| Formula Metadata | Structured JSON calculation tree for FORMULA rules. Do not paste JavaScript or PHP. | See examples below |
| Default Amount | Fallback fixed amount when the employee structure has no non-zero monthly/fixed value. | 1000 |
| Default Percentage | Percentage applied to Calculation Base. | 12 |
| Minimum / Maximum Amount | Lower/upper limit applied after calculation when greater than zero. | Maximum 1800 |
| Wage Ceiling | Stores the statutory/policy ceiling for the rule. Payroll V1 does not yet apply this field automatically; use a verified max/formula design. | 15000 |
| Rounding Method | Rounding executed for this component after limits are applied. | NEAREST |
| Attendance Affected | Prorates a non-ATTENDANCE_PRORATED result by payable days ÷ working days. | Yes for Basic |
| Allow Manual Override | Policy flag indicating that the calculated amount may be changed with a reason. Review overrides before approval. | Yes for variable incentive |
| Posting Account / Side | Scheme-specific accounting ledger and debit/credit side; overrides the component default. | PF Payable · CREDIT |
| Effective From / To | Optional validity range for this rule inside the scheme. | 01-04-2026 onward |
| Active | Only active, date-eligible rules are calculated. | Checked |
Structured Formula Metadata
FORMULA uses JSON nodes. A node can reference a component, contain a numeric value, or apply an operator to nested operands. Supported operators are ADD, SUBTRACT, MULTIPLY and DIVIDE.
{"operator":"MULTIPLY","operands":[{"component":"BASIC"},{"value":0.40}]}
{"operator":"SUBTRACT","operands":[{"operator":"ADD","operands":[{"component":"BASIC"},{"component":"DA"}]},{"value":500}]}
Only structured JSON is evaluated—never code. Referenced components must be calculated earlier. Division by zero returns zero. Always test a sample employee and compare the calculated component lines before using the scheme.
Complete monthly-staff example
| Field | What it controls | Example |
|---|---|---|
| 10 BASIC | FIXED ₹20,000 · Attendance Affected Yes · Salary Expense debit. | At 27/30 days: ₹18,000 |
| 20 DA | PERCENTAGE 10 · Base BASIC · Attendance Affected Yes. | Calculated after BASIC |
| 30 HRA | PERCENTAGE 20 · Base BASIC+DA · Attendance Affected Yes. | Calculated after DA |
| 40 MILK | FIXED ₹1,000 · ADDITION · Attendance Affected No. | ₹1,000 |
| 50 PF_EMPLOYEE | PERCENTAGE 12 · Base BASIC+DA · EMPLOYEE_DEDUCTION · PF Payable credit. | Verify statutory cap/policy |
| 60 ADVANCE_RECOVERY | MANUAL/FIXED placeholder; eligible loan instalments are loaded by the recovery component code. | Outstanding/instalment controlled |
Pre-live checklist
- Use MONTHLY + PAYABLE_DAYS for the first month unless another cycle is fully tested.
- Check every component dependency against Calculation Sequence.
- Make sure employee structures use this scheme and are ACTIVE for the payroll period.
- Confirm the Salary Payable account and each component posting ledger/side.
- Generate one month with two or three employees first and reconcile every line manually.
- Do not post until the generated payroll posting lines are balanced and approved.