Loading historical wages
Load historical wage data accurately to ensure proper tax filings and employee records.
What is wage history?
Wage history is defined as all wages paid during the current calendar year. This includes a detailed breakdown of earnings, deductions, and taxes. It is critical that all wages paid to active, inactive, and terminated employees in the current year are added to Check prior to an account being submitted for activation. This ensures wages are reported correctly, wages that are subject to taxes are not reset and employees W2 reflect accurately at the end of the year.
Caution - If you cannot gain access to an employer’s year-to-date history for the calendar year, do not proceed with activation steps. If wages are missing, this can lead to incorrect tax filing, tax notices, and penalties.
Reports needed for loading historical data
Most payroll vendors have reporting functionality that will allow for the generation of custom reports. This enables you to extract the required fields in an output that is easier to format and import into Check.
Historical wage reports should include:
- Employee name
- Gross amount
- Earnings broken out by amount and hours
- Deductions broken out by amount
- Benefits broken out by amount
- Employee taxes broken out by each tax code (ie; FITW, FICA, Medicare, State and Local)
- Employer taxes broken out by each tax code (ie; FICA, Medicare, Federal unemployment, State unemployment, and any ancillary employer unemployment surcharges.)
- Net pay
- Pay date
- Period start date
- Period end date
Some common types of standard payroll historical reports that provide the required information are:
- Taxable Wage Report
- Payroll Summary
- Statistical Summary
Add closed quarters’ historical payroll
First, add the company’s closed payroll data. Check does not require you to enter per-payroll data for quarters that have been closed by the company. Instead, you may enter all payrolls for a closed quarter into one set of rows (1 per employee) in the uploaded file, which all have the same “Period Start”, “Period End”, and “Payday”. We automatically condense rows with the same dates into one payroll, so if you condense quarters, we’ll create one payroll in our system that represents the entire closed quarter.
This is standard practice during implementations and makes it easier to implement customers starting midway through the year. However, Check is happy to accept per-payroll data (without condensed quarters) if that works better for your workflow.
The downside of submitting closed quarters condensed into one payroll is that the “Audit Historical Payrolls” flow will unavoidably accumulate additional discrepancies between what Check calculates as the totals for each payroll and what the historical data tells us was calculated. In general, the only thing that will be computed correctly for condensed quarters are flat taxes like Social Security. All other taxes, benefits, and post-tax deduction contributions are expected to vary in calculation.
Finally, you need to obtain copies of all closed-quarter federal, state, and local returns. Quarterly payroll reports are usually available to employers between the 15th and end of the month following the close of the quarter.
Add open quarters’ historical payroll
After closed payroll has been entered, add any remaining open quarters’ payroll data. Check requires per-payroll data for all open business quarters. Check also requires per-payroll data for the most recent quarter if the company plans on going live in the first pay period of a new quarter.
Add historical payrolls
Once all employees are added to Check, you can begin the process of loading historical data. First, convert the payroll historical data to a csv formatted file and proceed to the ‘Add Historical Payrolls’ section under Company Setup. Before you upload the file, review all earnings, deductions, benefits, and tax codes to ensure they exist in the company.
Next, you may choose to populate the downloadable Payroll Template located in the ‘Add Historical Payrolls’ section or directly upload and map a raw csv file. Select ‘Process’ to thoroughly review and ensure all columns are mapped correctly. Then select ‘Confirm Mapping’ and proceed to the ‘Review’ tab to verify employee mapping before submitting the file for audit.
Getting started
- You will have to have created the company, its workplaces, and any employees and/or contractors (along with any benefits and post tax deductions) that you’ll be importing payroll history for
- Employees cannot have post tax deductions of the same type with duplicate descriptions. However, “company level” PTDs can exist where multiple employees have the same post tax deduction.
- File Requirements:
- You will need data for all year-to-date payrolls for a company in the form of one or more .csv files
- Each file will need to have at least one row of headers e.g. “Employee Name” or “Federal Income Tax (Employee)”.
- Each payment in the file must have its own row, which should include both how much the employee was paid and all taxes associated with that payment. Blank rows are okay, as are “total” rows, as we can remove them in the “Review” stage of processing.
- Each payment category in the file must have its own column. This means that it’s invalid, for example, to have column 4 represent “Federal Income Tax (Employee)” for one row, and “Medicare (Employee)” for another row.
- You’ll need to know the period start, period end, and payday of each payment row in the file. You can include these as their own columns in the file that you upload, or you can add them by hand during the “Review” stage of processing.
What should you do if you have data, but it fails one or more of the File Requirements? There are a couple of options for you:
- Modify the data yourself to match the File Requirements. This could be as simple as exporting a file from one format to another, e.g. from .xlsx to .csv. It could also potentially be more complicated, converting data from a non-tabular format to match the row and column requirements.
- Fall back to the old way of doing things, and directly fill out the template that we surface. To go this route, see the section Directly Filling out Check’s Template
Process for uploading and mapping
- Upload your file

- Process your file
- Click the “Process” button on the new file upload that you added:

- Select the row in your file which contains the headers for the rows

- Match the headers from the uploaded file to categories as they’re named in Check. For example, a header might be called “Regular (Hours)” in the file that’s been uploaded, but in Check the category is referred to as “Hourly (Regular) Hours”. In this case, you should select “Hourly (Regular) Hours”, and then confirm the mapping:

- In some cases, you’ll want to ignore a column in your uploaded file. One example reason for this would be that the column is a collection of other columns: e.g. a column called “Employee Taxes” collects together all federal and state taxes for an employee. In this case, we would want to ignore this column because we’re getting that information from the other individual tax columns.

- Once every column in your file has either been confirmed or ignored, you can proceed to the next step. Clean up any extraneous rows by highlighting the entire row and deleting it (note, you can also remove these rows from the file before you upload it).


- Associate each row with either an employee or a contractor in Check. You can do this by selecting the cell for either “Employee ID” or “Contractor ID” and clicking on the proper name.

- Make sure that the required “Period Start”, “Period End”, and “Payday” are supplied. These can be directly typed in if they haven’t been provided yet. Copy and paste can be useful here if many rows have the same value.
- Click continue, and then Submit.
- Your file will now be in a “Ready to Submit” state. After processing, the first and last payday will be displayed on the file under “Start check date” and “End check date”. You can make any edits to it that you wish by clicking the “Edit” button.
- Once the file looks good, you can click on “Submit” to upload the file to Check and use it to create historical payrolls! After Submitting, the file will be present in “Submitted Reports”. Any payrolls created from a submitted file can subsequently be audited in the "Audit Historical Payrolls" step which takes place next in the implementation workflow. To edit a submitted file you’ll have to click “Unsubmit All”.

- Choosing to “Unsubmit All” will remove all historical payrolls that you’ve previously submitted, and bring them back to the “Parsed Reports” tab, where they can be downloaded, edited, deleted, or submitted again if you so choose.
Process for using Check’s template
The old method to upload historical data is still available. You can download the template.

Fill it out as before, and then upload the template by clicking “Upload” and then “Upload completed template”. All cells must pass validation to be accepted.

This will create a file that is “Ready to Submit”. This file can be downloaded, edited in place, deleted, and submitted as normal.
Error messages
This document lists the error messages that a Partner Operations team member may see when uploading historical payrolls during a company activation.
- Note: These error messages are subject to change and more may be added over time.
- * The ellipsis in the Error Message indicate that we will fill in extra information to help you debug the error (employee id, company id, payday, row id, column name, etc).
Error Message | Type | Extra info |
... in row ... cannot be parsed into a standardized date. | Date validation | |
Invalid non-managed payroll dates: paydays must be in {this_year}, but saw payday(s) ... | Date validation | |
Invalid non-managed payroll dates: pay periods must start and end between {last_year} and {this_year}, but saw period(s) ... | Date validation | |
One or more unsupported symbols ... detected for decimal value in row ..., column ... | Decimal validation | Unsupported characters in decimal values: "$", "," |
Value for column ... in row ... must be a number. | Decimal validation | |
File must be a csv | File format | |
There was an error while decoding your file. Please ensure that you have properly exported the file to the CSV format. | File format | |
One or more unsupported symbols … detected in file | File format | Unsupported characters in file: "=", "+", "-", "@" |
Values ... are placed beyond the provided columns | File format | |
CSV does not contain any rows | File format | |
Missing required column: ... | Missing data | |
Row ... has neither Employee ID nor Contractor ID | Missing data | |
Need to provide either a payment amount or reimbursement amount for contractor ... | Missing data | |
Unable to find employee(s) for this company with id matching: ... | Validation | |
Unable to find contractor(s) for this company with id matching: ... | Validation | |
Can only upload historical payrolls for a company that does not have approved managed payrolls | Validation | |
Cannot upload external payrolls for a company that has payrolls with paydays after the external payrolls | Validation | |
Row ... has both Employee ID and Contractor ID | Validation | |
Supplemental Tax Calc Method ... is not a valid choice. Must be 'flat' or 'aggregate | Validation | |
Found entries for the same payroll item with different supplemental tax calc methods, which is not allowed | Validation | |
Can only upload historical payrolls for employees and contractors of one company at a time | Validation | |
Can only upload historical payrolls for employees and contractors of the provided company: ... | Validation | |
Cannot upload historical payrolls for a company that has an implementation status of ... | Validation | Company must be in need_attention |
Payroll import would overwrite payroll(s) with liabilities that have tax payments that are pending or already paid. Affected payroll IDs: ... | Validation | |
PTD with description ... is a duplicate for employee ... | Validation | |
Hourly earning in row ... needs non-zero hours | Validation | |
Earning amount cannot be negative for employee .... | Validation | |
Benefit of type ... is not configured for employee ... | Validation | |
Post-tax deduction of type ..., description ... is not configured on employee ... | Validation | |
Cannot have negative net pay: ... for employee ... in row ... | Validation | |
Workplace ID ... in row ... does not exist | Workplace validation | |
Workplace ID ... in row ... does not belong to Company ... | Workplace validation | |
Employee ID ... in row ... does not work at workplace ID ... | Workplace validation | |
Unable to choose a default workplace for ... in row ...: Employee is associated with multiple workplaces. | Workplace validation |
Tips for adding historical payrolls
- First, upload existing quarterly data. This will allow you to run a quick balance against your source documentation. For example: If you load the entire first quarter’s worth of payroll first, you can total the Social Security column and compare that total to the data you received from your client. Double-checking totals at this stage is a great way to feel confident in the numbers you are transporting between documents. Running a total on all taxes and earnings by quarter can also confirm you haven’t missed a total type or employee.
- If you are loading a closed quarter in aggregate, use the quarter’s start date and the quarter’s end date, with the last day of the quarter as the Payday. These are placeholders for the entire quarter and will not affect filing. For example: For the first quarter using 1/01/20 and 3/31/20 as the period dates and then 3/31/20 for the check date on each employee. This will ensure that the wages and taxes on that row are filtered to the first quarter for that employee.
- Uploading multiple files needs to happen chronologically, as every time you upload a file which isn’t strictly later than all existing payrolls (by payday) we’ll delete all the existing payrolls which are later than the file you’re uploading.
- Be careful with employee names. Since totals will be reviewed, everything can look correct, but if an employee's name is transposed with another, it is harder to catch that issue without double checking employee names.
Audit historical payrolls
In the ‘Audit Historical Payrolls’ section, starting with the first pay date of the year click on each pay date and review employees for any discrepancies. It is extremely important that pay dates are reviewed in chronological order to ensure wage base limits are calculated correctly. Variances can be caused by missing employee deductions, employee withholding mismatch, incorrect unemployment rate, or incorrect mapping. Make any applicable edits to the company, or employee setup and re-run the audit to ensure variances no longer exist or are valid. If edits are needed to the file, return to the ‘Historical Payrolls’ section, and select ‘Unsubmit’ to edit the file. Finally, check ‘Mark as reviewed’ once each pay date is audited.
Pro Tip:
If you know your client has a weekly pay frequency and the pay date falls on Fridays, consult a calendar and count the check dates to confirm you have collected all the pay dates. If you notice a discrepancy in the pattern, reach out to your client and ask about the gap in pay dates. This will avoid a delay in getting your account activated and potential corrections at the end of year.
Balancing payrolls
Balancing can be very simple and require only a few moments of your time. After you have imported and processed the file you uploaded, run a payroll audit report and compare the results to the client wage documents from the prior payroll vendor. Verify the earning amounts, earning hours, benefits, post-tax deductions, employee taxes, and employer taxes match. If you have access to subject/taxable wages please compare those as well. The quarterly tax returns such as a federal form 941 and state quarterly returns are a great place to start as they provide quarterly totals.
Pro Tip:
For closed quarters, it is easier to balance by lumping, and loading wages using the last date of the quarter (03/31, 06/30, 09/30). For the current open quarter, you must load, and balance by pay date so federal liabilities can be reflected on Schedule B of federal form 941 by pay date.
Confirm payroll setup
Once all payroll historical data has been added, audited, and balanced, you can now proceed with confirming and submitting. This is an important step as the account cannot be submitted for review until this is completed. The ‘Confirm and Submit’ button is grayed out until all of the balancing steps are complete, and the Onboard Status is not in a ‘Blocking’ state. After Check activates the account, you will receive a Zendesk notification confirming account setup.
Important Terminology
- Balancing - The process in which employees wages, taxes, benefits, post-tax deductions, and net pay are transferred from the prior payroll provider balances to the data inputted in Check. This is a critical step to ensure the quarterly tax returns and W2s filed are accurate.
- Closed Quarter - Calendar quarter in which all pay dates have been processed and reported to federal and state agencies.
- Open Quarter - Current calendar quarter in which wages are actively being paid.
- Taxable or Subject Wages - The full amount of wages that are subject to taxation. Subject wages are different from gross wages as certain benefits may be exemptible and would reduce the wage amount that is subject to taxation.
How do I add historical information for a worker who has both historical W-2 wages and contractor payments?
When setting up a new company that has year-to-date information, you may come across a worker who was once paid as a contractor who is now being paid as an employee (or vice versa). Workers with both W-2 wages and contractor payments need to receive a W-2 and 1099 form. The following steps will ensure that historical information is properly classified for year-end tax reporting.
- Setup the individual as both a W-2 employee and a 1099 contractor. This means that you will receive both an Employee ID (emp_xXXxXXXxxX) and a Contractor ID (ctr_xXXXxxxxXx) for the same person.
- Complete the historical.csv payroll template with respective W-2 wages and contractor payments.
- Enter the historical W-2 wages and taxes on the row with the Employee ID (W-2 employee).
- Enter the historical contractor payments on the row with the Contractor ID (1099 contractor).
Last updated on March 31, 2024