- 7 Minutes to read
- Print
- DarkLight
- PDF
Custom Compensation
- 7 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. To learn more about the workforce attributes of custom compensation, click here.
Compensation Items: Includes the compensation items mapped to that scenario.
Functions: Includes the list of supported functions that can help create dynamic compensation logic. To learn more about the workforce attributes of custom compensation, click here.
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 the following attributes.
Attributes of Custom Compensation
Attribute | Description |
Allows time-based variation in values (e.g., Overtime Factor across months). Useful for dynamic values in compensation formulas that vary by month or period. | |
Used for tiered or bracketed logic, such as tax bands or national insurance contributions. Works with RangeCalculation functions to apply rate thresholds. | |
Read-only attribute available in Expression Builder. Enables logic based on job titles for bonuses, exclusions, or conditional salary logic. |
Functions of Custom Compensation
Function | Syntax | Description |
---|---|---|
RangeLookup([range_attribute], Source) | Performs lookups based on salary bands or tax brackets. Matches a compensation item (e.g., Salary) to a defined range attribute (e.g., Salary Band) to apply percentage rates for calculations like salary banding. | |
RangeCalculation.Floor([range_attribute], Source) | Applies a flat rate based on the range where the input value falls. Only one rate is used, regardless of how much of the value falls in other bands. Useful for performance or sales evaluations using non-tiered thresholds. | |
RangeCalculation.Tier([range_attribute], Source) | Applies progressive (tiered) rates across bands. Used for calculations like tax or insurance where different portions of salary are treated with different rates. Accumulates across thresholds. | |
EOMONTH([start_date], months) | Returns the last day of the month for the specified offset. Helpful in anniversary bonuses or year-end adjustments. | |
SOMONTH([start_date], months) | Returns the first day of the month after applying an offset. Used for planning period start dates or eligibility logic. | |
FISCAL_YEAR(input_date) | Returns the fiscal year corresponding to a date. Useful for aligning compensation logic to fiscal planning years. | |
PERIOD_DATE(output_type, offset) | Returns a date for fiscal period alignment, often used for reviewing or aligning compensation to specific fiscal schedules. | |
UnadjustedSalary() | Calculates salary ignoring bonuses/benefits, used for adjusting salary upon employee termination within a reporting period. | |
IF(condition, value_if_true, value_if_false) | Returns value_if_true if condition is met, else value_if_false. Used for conditional logic in compensation rules (e.g., performance bonuses). | |
ISBLANK(input_date) | Checks if a date-type attribute is blank. Useful for validating data presence in rules. | |
NOT([logical_condition]) | Returns the inverse of a Boolean condition. Often used with ISBLANK or comparison logic to simplify expressions. | |
ProrationFactor("Input") | Returns the proportion of the period worked or not worked. Can be 'ActiveDays' or 'InactiveDays'. Used to prorate salaries for mid-month hires or terminations. | |
EDATE( [start_date], offset_value) | Calculates the exact date a specified number of months before or after a given start date. | |
DATEDIF( [start_date],[end_date], "unit") | Computes the difference between two dates in terms of years, months, or days. This supports more precise tenure-based and eligibility calculations. | |
DATE( "MM/DD/YYYY") | The DATE() function is used to define dates explicitly in formulas, which helps in performing direct and date comparisons. | |
Agg(Input, TrailingMonths, OffsetMonths) | This enables users to calculate trailing or forecasted values such as commissions, bonuses, or quota achievements using flexible, scalable syntax. It operates at the employee level and supports aggregation across fiscal years and offset periods. |
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.
Related Articles
Attributes of Custom Compensation