Custom Compensation
  • 7 Minutes to read
  • Dark
    Light
  • PDF

Custom Compensation

  • Dark
    Light
  • PDF

Article summary

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 Calculation

    Overtime 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 functions 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

By Period

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.

Range

Used for tiered or bracketed logic, such as tax bands or national insurance contributions. Works with RangeCalculation functions to apply rate thresholds.

Position Description

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

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.

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

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

EOMONTH([start_date], months)

Returns the last day of the month for the specified offset. Helpful in anniversary bonuses or year-end adjustments.

SOMONTH

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

FISCAL_YEAR(input_date)

Returns the fiscal year corresponding to a date. Useful for aligning compensation logic to fiscal planning years.

PERIOD_DATE

PERIOD_DATE(output_type, offset)

Returns a date for fiscal period alignment, often used for reviewing or aligning compensation to specific fiscal schedules.

UnadjustedSalary

UnadjustedSalary()

Calculates salary ignoring bonuses/benefits, used for adjusting salary upon employee termination within a reporting period.

IF

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

ISBLANK(input_date)

Checks if a date-type attribute is blank. Useful for validating data presence in rules.

NOT

NOT([logical_condition])

Returns the inverse of a Boolean condition. Often used with ISBLANK or comparison logic to simplify expressions.

ProrationFactor

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

EDATE( [start_date], offset_value)

Calculates the exact date a specified number of months before or after a given start date.

DATEDIF

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

DATE( "MM/DD/YYYY")

The DATE() function is used to define dates explicitly in formulas, which helps in performing direct and date comparisons.

Agg()

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

    • PfW - Employee Actuals 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

Functions of Custom Compensation

Advanced Use Cases for Custom Compensation


Was this article helpful?