- 17 Minutes to read
- Print
- DarkLight
- PDF
Custom Compensation
- 17 Minutes to read
- Print
- DarkLight
- PDF
The Custom Compensation feature empowers organizations to define and manage compensation calculations tailored to their specific business needs.
With an intuitive interface and Excel-like syntax, you can easily create formulas for various compensations, including UK National Insurance (NI), headcount calculations, variance analysis, merit increases, bonuses, tax structures, and role-based adjustments.
With Custom Compensation, you can:
Build dynamic compensation rules using arithmetic and logical expressions.
Accommodate regional tax structures, such as UK National Insurance with tier-based calculations.
Automate compensation adjustments based on overtime, tenure, and performance.
Create custom compensation items that help you to perform variance bridge analysis and headcount rollforward report to track and compare compensation trends.
Note:
You must contact your Planful Account Manager to enable.
Key Capabilities of Custom Compensation
The Custom Compensation feature supports various logic types and capabilities.
Flexible Calculation Logic: Customize compensation structures using arithmetic operations (+, -, *, /) and comparison operators (=, >, <, >=, <=, !=).
Example: Overtime Compensation CalculationOvertime pay is dynamically calculated based on:
Standard Working Hours & Hourly Rate (employee attributes)
Overtime Percentage (direct data input)
Overtime Factors ( by-period attribute for seasonal adjustments)
Overtime pay isn’t static—it factors in standard working hours, hourly rates, and customizable overtime percentages. Seasonal adjustments ensure fairness, with higher overtime rates and bonuses during peak seasons and scaled-down incentives during slower periods.
Conditional Logic: Apply IF-based rules to adjust salaries, bonuses, or other compensation elements based on employee attributes (e.g., tenure, performance rating).
Example: Performance-Based Bonus Calculation An employee’s Performance Rating, an employee attribute, determines their eligibility for a bonus. If the rating is 4 or higher, the employee receives a 10% bonus on their Base Salary, which is a compensation item. This ensures that high performers are rewarded consistently based on performance-driven compensation policies.
Dynamic Formula Builder: Create Excel-like formulas using workforce attributes and compensation items and apply IF-based rules to adjust salaries, bonuses, or other compensation elements based on employee attributes (e.g., tenure, performance rating).
Example: Base salary calculation based on years of service
An employee’s Years of Service, an employee attribute, determines their eligibility for a salary increase. If this value exceeds 5, the system applies a 5% increase to their Base Salary, a compensation item. This adjustment ensures fair pay progression based on tenure, applying organization-specific multipliers to maintain consistency in salary adjustments.
Range-Based Calculations: Handle calculations based on predefined ranges, such as tax brackets, salary bands, or commission structures, using RangeLookup, Tier-Based, and Floor-Based functions. Click here to learn more.
Date-Based Functions: Perform time-sensitive calculations using functions like EOMONTH, FISCAL_YEAR, and PERIOD_DATE to align compensation with time-based rules. Click here to learn more.
Accessing Custom Compensation
Follow the same steps as you would to add an existing compensation item. Click here to learn more about creating compensation items.
After filling in the required information on the General Information tab and proceeding to the Compensation Basis tab, click on the Compensation Basis drop-down menu and select Custom, which appears alongside other compensation basis options.
After selecting Custom as the compensation basis, the canvas will open, providing a workspace for building your formula.
Notes:
Ensure that all required workforce attributes and compensation items are defined in your scenario before you begin.
To reference any workforce attributes or compensation items within the canvas, simply type @.
When using the formula builder, insert a space before typing '@' to display the menu. A menu will display the following:
Workforce Attributes: Includes all the workforce attributes defined in your scenario, including those created using the new attribute types, Range and By Period.
Compensation Items: Includes the compensation items mapped to that scenario.
Functions: Includes the list of supported functions that can help create dynamic compensation logic. Click here to learn more.
Understanding Newly Added Workforce Attributes and Functions for Custom Compensation
Custom Compensation allows you to create expressions that define how specific compensations are calculated. To support building expressions for advanced compensation items, we have further introduced two new attributes: By Period and Range.
Notes:
While the custom compensation refers to all of the attributes mapped to that scenario, certain attributes are not supported for use in custom formulas. These include:
Employee Type
Position/Position Description
Pay Plan
Home Budget Entity
Position Budget Entity
Adjusted Annual Salary
Current Review Amount
Budget Review Amount
Review Type
Attribute names may vary. For example, 'Rate/Hr.' appears as 'Rate' in some interfaces, so reference the correct attributes while creating expressions.
If an attribute is not mapped to an employee and no default value is defined, the system skips the compensation calculation for that item entirely, leading to incomplete or missing results.
Attributes
By Period Attribute
The By Period attribute is a newly added workforce attribute that allows you to assign and manage values that vary across specific periods, such as months or years. This attribute type is particularly useful for scenarios where compensation elements, such as overtime factors or bonus adjustments, need to change dynamically over time rather than remain fixed. Click here to learn more about the By Period attribute.
Use Case: Overtime Salary for Hourly Employees
While there are multiple ways to calculate overtime pay for hourly employees, let's explore one of the most effective approaches.
To calculate the overtime salary, do the following:
Create a By Period Attribute, called Overtime Factor which is set as follows:
From January to March 2024, the overtime factor is 1.5.
From April to September 2024, the factor changes to 2.
From October to December 2024, the factor reverts to 1.5.
Create a custom compensation, Overtime Salary.
This item calculates overtime salary based on standard working hours, overtime percentage, applicable overtime factor, and hourly rate.
Overtime Salary Calculation: An employee’s Overtime Hours %, a compensation item, is multiplied by their Standard Working Hours per Month, an employee attribute, to determine total overtime hours. This is then multiplied by the Overtime Factor, a by-period attribute created, and the Hourly Rate, another employee attribute, to calculate overtime pay. The system ensures fair and consistent pay adjustments by applying organization-specific multipliers to reflect overtime policies.
Once the custom compensation item is created, map this to an employee.
The Overtime Salary will be calculated accordingly.
For example, the Over Time Salary calculation for an employee, Pattie Morin is shown in the employee report.Note: If this compensation item is mapped to employees with an Annualized Salary Class, no calculation will be displayed. This applies only to employees with an Hourly Salary Class.
Note: By Period Attributes are linked to custom compensation items, not directly to individual employees. So, by-period attributes and custom compensation items cannot be loaded during an employee load using Data Load Rules.
Range Attribute
The Range attribute is introduced to maintain data at a range or threshold level, which can be used as a reference table to do calculations such as UK NI, CPP, or maintain the ranges for PS Billing hours, and so on.
Note: The Range attribute has been introduced to support the range-based functions. Click hereto learn more.
Once the Range Attribute is fully defined, it can be referenced and utilized while building logic using the Custom Compensation.
Use Case: Range Attribute for UK National Insurance (NI) Calculation
The UK National Insurance (NI) calculation has range attributes and tier-based calculations. So first, a range attribute called UK NI is created where the following thresholds are configured. Click here to learn more about how this attribute is used when using the RangeCalculation.Floor and the RangeCalculation.Tier functions.
Functions
The functions allow you to create dynamic, data-driven formulas based on employee attributes, compensation items, and time-based criteria, enabling you to develop tailored compensation strategies for your organization.
When building compensation logic in Custom Compensation, these functions can be accessed easily by typing the @ symbol. This brings up a list of the following functions that you can use to define your compensation calculations.
Ranged Based Functions
RangeLookup
This function allows you to perform lookups based on salary bands or tax brackets, making it easier to handle compensation calculations that vary depending on an employee's salary or other attributes.
Use Case: Salary Band Rate Calculation
The HR team wants to apply a Salary Band Rate (percentage) to employees based on their salary range. The percentage varies depending on the salary bracket, and this percentage is applied in compensation calculations.
Define the Salary Range Attribute using the Range Attribute. Click here to learn more about the Range attribute.
Create a custom compensation, Salary Band Rate. This compensation item determines the applicable Salary Band Rate based on an employee’s salary.
Salary Band Rate Calculation:The RangeLookup function determines an employee’s position within the predefined Salary Range, a range attribute created above, by referencing Salaries, a compensation item. This ensures that compensation aligns with structured pay scales, maintaining consistency and fairness in salary administration.
Map this custom compensation to the employee. When applied, the function determines the Salary Band Rate for each employee based on their salary:
For example, the Salary Band Rate calculation for an employee, Sherry Young is displayed as shown in the employee report below.
RangeCalculation.Floor and RangeCalculation.Tier
When calculating compensation, two primary approaches can be used: Floor-based and Tier-based calculations. These determine how compensation rates apply based on predefined salary or performance bands.
RangeCalculation.Floor
This function applies a flat calculation based on the value of a specified range. The compensation rate is determined solely by the band in which the value falls, without considering other bands.
Example: Sales Performance Evaluation is calculated by comparing an employee’s actual sales achievements against their predefined sales target. A floor function is applied to prevent overestimation of results, ensuring fair performance assessment and alignment of incentives with actual achievements.
RangeCalculation.Tier
This function is designed for tiered compensation structures, where different compensation rates apply progressively across multiple bands. Instead of a single flat rate, earnings accumulate based on the employee's performance or sales milestones.
Example: Sales Performance Evaluation is calculated by comparing an employee’s actual sales achievements against predefined sales target thresholds. A tiered function is applied, where compensation accumulates progressively across different levels, ensuring fair rewards and motivating higher performance.
Understanding Floor-Based vs. Tier-Based Calculations
Range From | Range To | Contribution Rate (%) |
---|---|---|
0 | 10,000 | 0% |
10,001 | 25,000 | 5% |
25,001 | 50,000 | 10% |
50,001+ | Above | 12% |
Understanding Floor-Based Calculation
In a Floor-based calculation, the contribution rate only applies to the specific salary band in which the salary falls. This means that only one rate is used, based on the employee’s total salary.
Example: Employee Salary = £30,000
The salary falls within the £25,001 - £50,000 band.
The contribution rate for this band is 10%.
Calculation: £30,000 * 10% = £3,000
Key observation: Only the rate for the specific salary band is applied, without any tiered accumulation.
Understanding Tier-Based Calculation
A Tier-based calculation applies the contribution rate across each tier up to the employee’s salary. This means that each salary band’s rate is applied up to the salary’s limit within that band.
Example: Employee Salary = £30,000
£0 - £10,000: 0% → £10,000 * 0% = £0
£10,001 - £25,000: 5% → £15,000 * 5% = £750
£25,001 - £30,000: 10% → £5,000 * 10% = £500
Total Contribution: £0 + £750 + £500 = £1,250
Key observation: Each salary band’s rate is applied cumulatively, making the total contribution more granular than in Floor-based calculations.
Use Floor-based calculations when a fixed compensation structure is needed, ensuring employees in the same range receive the same rate.
Use Tier-based calculations when progressive earnings are required, rewarding higher sales or salaries with increasing contribution levels.
Now let’s understand how these functions (RangeCalculation.Tier) are used for UK NI calculations.
Use Case: Using Range Attribute and Range Calculation Tier for UK National Insurance (NI) Calculation
UK National Insurance (NI) requires employees to contribute based on earnings exceeding specific thresholds. Contributions follow a tiered structure, where different portions of income are taxed at different rates. This calculation is performed using the range attributes and tier-based function in custom compensation. Here's how the expression is built using range attributes and how it is reflected in reports.
Define the UK NI Attribute using the Range Attribute. Click here to learn more about the Range attribute.
Create a custom compensation, UK National Insurance (Tier) using the RangeCalculation.Tier function.
Example: UK National Insurance (Tier) CalculationThe RangeCalculation.Tier function determines the applicable UK NI (National Insurance) tier, a range attribute created above, based on the employee’s Salary, a compensation item. This function ensures accurate payroll processing by categorizing employees into the correct NI contribution tier according to predefined salary thresholds.
Map this custom compensation to the employee. When applied, the function determines the UK NI calculation for each employee based on their salary.
For example, the UK NI calculation for employee Jeffrey McLoughlin is displayed as shown in the employee report below.Note: The data is available as a Dimension Member in Dynamic Reports & Dashboards, allowing organizations to track NI costs efficiently.
Date-Based Functions
The following are the date-based functions:
EOMONTH: Determines the last day of the month for date-based calculations, particularly useful for anniversary bonuses or year-end calculations.
Example: EOMONTH(Attr[Hire Date], 1)
Result: Calculates the last day of the month following the employee's hire date, often used in determining eligibility for monthly bonuses.FISCAL_YEAR: Helps determine the fiscal year based on a date, which is important for planning and year-based compensation adjustments.
Example: FISCAL_YEAR(Attr[Hire Date])
Result: Returns the fiscal year corresponding to the employee’s hire date, which can be used to align compensation adjustments with the fiscal calendar.PERIOD_DATE: Used for precise date handling, particularly for processing compensation based on periods or fiscal dates.
Example: PERIOD_DATE(Attr[Review Date], 1)
Result: Returns a specific date within the review cycle, which helps when processing compensation tied to review periods.
Use Case: Date-Based Functions for Fiscal Compensation Calculations
Date-based functions help calculate fiscal compensation accurately by considering start dates, proration, and fiscal periods. These functions ensure precise salary calculations, pay adjustments, and compliance with the financial timeline.
To capture the salary impact of new hires for the fiscal year they hired, a custom compensation, New Hire $ Impact is created. The logic for this item ensures that only employees whose hire dates fall within a specific fiscal year are included in the calculations.
Define the custom compensation, New Hire $ Impact. This calculates the financial impact of newly hired employees on total compensation costs.
An employee’s DATE_HIRED, an employee attribute, is evaluated to determine if they were hired within the current fiscal year. The EOMONTH function checks if the hire date falls within or before the current period’s end date, while FISCAL_YEAR ensures it matches the fiscal year of the period. If both conditions are met, the Unadjusted Salary is applied; otherwise, the salary is set to 0. This ensures that only eligible new hires within the fiscal year are included in salary calculations.Map this custom compensation to the new hire employee profile. For example, in the report, the Hire Date is January 1, 2025.
Click the employee report and you can see that the function determines the New Hire $ Impact calculation for each employee based on their salary.
For example, for an employee, Mark Downey, the item is calculated and displayed monthly for the fiscal year.The compensation impact begins in FY25 and is shown from February 2025 through December 2025, since the joining date is from January.
The calculated salary impact stops at the fiscal year, FY25, and does not carry over into FY26.
Other Function(s)
Unadjusted Salary
This function calculates the salary impact based on an employee’s termination date. This function determines whether an employee’s salary should be reduced or removed from the payroll when their termination falls within the reporting period.
Note: The UnadjustedSalary() function currently considers only the wage type, excluding other compensation items.
Use Case: Employee Termination Impact on Salary Calculation
Create custom compensation, Termination $ Impact.
An employee’s Termination Date, an employee attribute, is evaluated to determine if it falls within or before the current period’s end date. The EOMONTH function ensures alignment with the period, and if the condition is met, the Unadjusted Salary is subtracted to reflect salary removal for the terminated employee. Otherwise, the salary remains 0, ensuring accurate payroll adjustments based on employment status.Map this custom compensation to the employee. In this example, the employee’s termination is scheduled for August 15, 2025.
Click the Employee Report and you can see the Unadjusted Salary calculation based on termination dates as shown below:
The salary adjustments are made based on the employee’s status.
Negative values indicate salary deductions due to termination.
IF
The IF unction enables conditional logic in your custom compensation formulas by returning different values based on whether a condition is true or false. This is useful for handling performance-based bonuses, eligibility rules, or any logic that varies by employee attributes or compensation thresholds.
By applying business logic directly in formulas,
IF
enhances flexibility and precision—automating compensation decisions like bonuses, merit increases, or exclusions based on predefined criteria.How it Works
The function evaluates a condition, and:
If the condition is true, it returns the value_if_true.
If the condition is false, it returns the value_if_false.
This allows you to easily create branching logic based on employee data without needing complex nested expressions.
Function Syntax
IF(condition, value_if_true, )
Parameters
condition (Boolean expression)
The logic to evaluate. This typically compares an attribute or valuevalue_if_true (Numeric or expression)
The result returned if the condition evaluates to truevalue_if_false (Numeric or expression)
The result returned if the condition evaluates to false
ProrationFactor
ProrationFactor makes it easier to account for real-world scenarios—like mid-period hires, terminations, or department transfers—by automatically adjusting compensation amounts based on how much of the period an employee was active. This means you can create time-sensitive compensation models without manually calculating partial-period adjustments.
By dynamically adjusting amounts based on the number of days worked, this function improves the accuracy of Custom Compensation and goes beyond basic date checks to offer more granular control.
How it Works
This returns a decimal value (between 0 and 1) representing the portion of a compensation period an employee was active or inactive.
Function Syntax: ProrationFactor("Input")
Parameters: The "Input" determines how proration is calculated. You can choose one of the following:
ActiveDays: Returns the portion of the period the employee was actively working. Active days include any day the employee is employed.
InactiveDays: Returns the portion of the period the employee was not actively working. Inactive days include time before the start, after termination, or during unpaid leave.
Return Value: A decimal value between 0 and 1 representing the proration factor based on the selected mode.
Let’s understand this with a use case.
Use Case: Prorating Salary Based on Days Worked
The HR team wants to calculate employees' compensation accurately based on their actual days worked during a month. For example, if an employee joins on June 11 in a 30-day month, only the remaining 20 days should be considered for salary calculation. The employee’s full monthly salary is $3,000, but because they were only active for 20 out of 30 days, the prorated amount paid is $2,000.
Additional Use Cases with Calculations
Below are the other use cases:
Use Cases | Input | Calculation | Proration Factor | Monthly Salary | Prorated Compensation |
---|---|---|---|---|---|
Employee leaves on June 20 | ActiveDays | 20/30 | 0.667 | $3000 | $2000 |
Employee is active full month | ActiveDays | 30/30 | 1.0 | $3000 | $3000 |
Function Behavior in Different Situations
If the employee has 0 active days, the function returns 0 when using ActiveDays.
If the employee has 0 inactive days, the function returns 0 when using InactiveDays.
The function is based on the workdays setup. Click here to learn more about Workday Setup.
If the function is used before the employee’s position start date, no value is returned.
Key Considerations
Data Load Rules support all of the following for custom compensation items:
Workforce - Employee Compensation Item Load
When a custom compensation item is included, any values provided in the Excel file will be ignored. Instead, the system will derive the final values based on the expression created using the custom compensation builder, ensuring that only the calculated values are considered.
Workforce Employee Allocations Load
Compensation security applies to custom compensation items. If you cannot view these custom compensations in Employee Roster, Employee Reports, or Dynamic Reports, compensation security settings may be one of the reasons. Click here to learn more about compensation level security.
Custom compensation items support Employee Copy. If employees are copied from source to target and changes are made in the source scenario, deleting and recopying the employees will show the old data. The data won’t update until the employee is processed. Once processed, the latest data will be visible. Click here to learn more about employee copy.
Limitations
The limitations of the custom compensation feature are as follows:
When creating a custom compensation expression, the system treats attributes like annual salary, hourly rate, and monthly hours as constant across all periods, without considering changes over time or different scenarios. Also, note that this does not reflect the Adjusted Annual Salary or Rate based on the Budget Raise Percent.
When an attribute is not explicitly mapped to an employee but has a default value, the system uses the default value in calculations. However, relying on default values can lead to inaccurate results.
For example, if the default value for a state attribute is set to "CA," the system may inaccurately assume all employees belong to California, which does not reflect real-world scenarios.When changes are made to dependent attributes within a custom expression and mapped to an employee, the associated employee records are not automatically marked as Unprocessed. As a result, the updates may not immediately reflect in calculations. So you must unprocess the employee and then process it to reflect the updated calculations or changes. To unprocess the employee,
Go to Scenario Setup, select the scenario of the employees you have modified, click the More menu, and click Unprocess ‘WFP’ Employees. Click here to learn more about Scenario Setup.
When a compensation calculation includes multiple review dates or corresponding percentages, the system processes only the first value and ignores the subsequent reviews.
Custom Compensation supports applications set up for 12 periods only.
Custom compensation items and their mapped attributes do not appear in the Compensation tab of the Add/Edit Employee window. While you can select them from the Customize Compensation option, the selections are not displayed in the Compensation tab.