Advanced Payroll Reporting Breakdowns
Check offers out-of-the-box reports to enable our partners to provide first-class payroll reporting to your customers with little development effort necessary. On top of standard reporting, like the Payroll Journal and Payroll Summary, Check offers the ability to break down payroll reporting by workplace, which is an important feature for multi-location employers. For more on this breakdown, see our article on Payroll Journal with Workplace Breakdown.
Beyond workplaces, employers often want to breakdown reports across other fields. Common use cases include breaking down payroll reports by department, job, role, or shift. Because these fields are not required for payroll and are often tracked, categorized, and stored in different ways across our partners, Check does not store these fields. Logically, this means that Check does not support breaking down reports by these fields.
If an employee will only have one value per pay period for the field that you wish to construct a report for, building this report is simple and simply requires knowing what that value is at any given time and then allocating each payroll item accordingly. However, if an employee might have multiple values for this field each pay period, e.g. they work two jobs or across multiple departments, then additional logic is needed to perform the breakdown.
Fortunately, the workplace breakdown report provides the key building blocks for breaking down reports by other fields. Without having the workplace breakdown, it’s not possible to determine which deductions — most importantly taxes, which depend heavily on the workplace — were applicable to what earnings in gross pay. Having the workplace breakdown allows partners to build reports across any given axes that they store on their end with simple calculations.
Extending workplace breakdowns to other fields
We can follow these steps to extend the workplace breakdown report to build payroll reports broken out by other fields, like department or job.
- Constructing the payroll object
- Generating payroll journal with workplace breakdown
- Determining the field’s ratio of each workplace’s gross pay
- Breaking out by the desired field
Let’s walk through an example of how this can be accomplished.
Constructing the payroll object
Say that an employee works at two workplaces, and at either of those workplace, they might be performing a role in two different departments. To represent this in payroll, we might have the following earnings in their payroll item:
earnings: [
{
"type": "hourly",
"workplace": "wrk_1",
"amount": "100",
"description": "Department A",
...
},
{
"type": "hourly",
"workplace": "wrk_2",
"amount": "100",
"description": "Department A",
...
},
{
"type": "hourly",
"workplace": "wrk_2",
"amount": "100",
"description": "Department B",
...
}
]
In this payroll item, the employee earned $100 while working at workplace 1, 100% of which was in Department A. However, at workplace 2, the employee earned 50% of pay in Department A and 50% in Department B.
Note that we have added the Departments as descriptions for reference. Since Check performs no logic based on these fields that are stored outside of our system, there is no requirement to how these are stored. They could be added as the description
, as a custom_earning_code
, as a key value pair in metadata
, or simply as a representation in your database. What matters most is that you are able to compute the ratio of each workplace’s earnings for the field that you want to track.
Generating payroll journal with workplace breakdown
Once this payroll has been created and approved, you will be able to generate a payroll journal with workplace breakdown for either a singular payroll or a group of payrolls. This can be generated in either CSV or JSON format.
The example payroll above might give us the following workplace breakdown.
Employee | Workplace | Gross Hourly | .. | Tax 1 | Tax 2 | Benefit 1 |
---|---|---|---|---|---|---|
Jane Doe | Workplace 1 | 100 | .. | 20 | 10 | |
Jane Doe | Workplace 2 | 200 | .. | 40 |
Determining the field’s ratio of each workplace’s gross pay
From the payroll construction above, we know that:
- Department A took up 100% of Workplace 1’s pay, and 50% of Workplace 2’s pay.
- Department B took up 50% of Workplace 2’s pay.
From this information, we are able to allocate 100% of Workplace 1’s earnings, taxes, and deductions to Department A, and we can evenly split Workplace 2’s earnings, taxes, and deductions between Department A and B. A real world scenario would have more granular ratios, but the same logic would apply.
Breaking out by the desired field
Now that we have the % of each field’s workplace breakdown, we can make simple extensions to the workplace breakdowns by multiplying those breakdowns by their earnings, taxes, and deductions.
Applying this method to the above example results in the following breakdown across Departments.
Employee | Workplace | Department | Gross Hourly | … | Tax 1 | Tax 2 | Benefit 1 |
---|---|---|---|---|---|---|---|
Jane Doe | Workplace 1 | Department A | 100 | … | 20 | 10 | |
Jane Doe | Workplace 2 | Department A | 100 | … | 20 | 10 | |
Jane Doe | Workplace 2 | Department B | 100 | … | 20 | 10 |
or the same for any breakdown, as long as you are able to tie that breakdown to a ratio of gross earnings and the workplace where it was worked.
The workplace layer originally is important to determine the tax + benefit breakdown between earnings, but can easily be removed once you have those layers. We can alternatively remove the Workplace column and have:
Employee | Department | Gross Hourly | … | Tax 1 | Tax 2 | Benefit 1 |
---|---|---|---|---|---|---|
Jane Doe | Department A | 200 | … | 20 | 20 | 20 |
Jane Doe | Department B | 100 | … | 20 | 10 |
Further extensions
This methodology can be extended across any axis that you store in your product, using Check’s reports as the building blocks for accomplishing that. Use case and information available may vary. Please reach out to Check for additional information and guidance on how you can solution this to best serve your employers.
Updated 2 days ago