Give it one quarter of payroll data and the federal tax deposits you made for it. It rebuilds the 941 lines from payroll, works out what was due and when, and matches your deposits against that. Key in the figures from the 941 you filed to check the return as well.
Free, with no account needed. Files are read in your browser and never uploaded. Signed in, the tool also saves your column mapping (column names and the file name, never the rows) so the next file like it maps itself.
One invented quarter, Q2 2026: eight employees paid every other Friday, seven checks each, and five deposit rows. Choose 2026, Q2 and Monthly, add both files and click Reconcile quarter. You should get two variances. V-102 Deposit late, because June's $8,218.86 went in on July 17 against a July 15 due date. V-202 for employee 40217, whose Social Security came out $4.00 short on one check. May's deposit is split across two payments and still matches, and the $84.00 Form 940 row is ignored.
Pick the tax year (2025 or 2026), the quarter and your deposit schedule, Monthly or Semiweekly. The tool doesn't work out which schedule you're on. The quarter doesn't filter your files either: every row you upload is counted, so export exactly one quarter.
One row per employee per check date, as CSV or Excel. After you add the file, a table shows which column went to which field; required fields have an asterisk and you can change any of them. Headers match when they equal one of these names once case, spaces and punctuation are dropped.
Employee ID
Check Date
Gross Wages
FIT Withheld
Social Security Withheld
Medicare Withheld
FIT Taxable Wages
Social Security Taxable Wages
Medicare Taxable Wages
Section 125
401k Pretax
YTD Social Security Taxable
YTD Medicare Taxable
| Column | Needed? | Notes | Also accepted as |
|---|---|---|---|
| Employee ID | Required | Emp ID, EE ID, Associate ID, Employee Number, File #, Worker | |
| Check Date | Required | YYYY-MM-DD, M/D/YYYY or an Excel date. Two-digit years and month names read as blank. | Pay Date, Payroll Date, Date |
| Gross Wages | Required | Gross, Gross Pay, Gross Earnings, Total Earnings | |
| FIT Withheld | Required | Federal income tax withheld. | Federal Income Tax, FIT, Fed WH, Federal Withholding |
| Social Security Withheld | Required | The employee's share. | Social Security Employee, OASDI EE, SS EE, OASDI Withheld |
| Medicare Withheld | Required | The employee's share. | Medicare Employee, Medicare EE, Med EE |
| FIT Taxable Wages | Optional | When missing: gross minus Section 125 minus 401(k). | Federal Taxable Wages, Fed Taxable |
| Social Security Taxable Wages | Optional | When missing: gross minus Section 125. | OASDI Taxable, SS Wages, Social Security Wages |
| Medicare Taxable Wages | Optional | When missing: the Social Security wages figure. Map it if anyone earned over the wage base; payroll systems cap their Social Security column there, and Medicare has no cap. | Medicare Wages, Med Wages |
| Section 125 | Optional | Pre-tax cafeteria-plan deductions. | S125, Cafeteria, Pretax Section 125 |
| 401k Pretax | Optional | Pre-tax 401(k) deferrals. | 401k, Retirement Pretax, Pretax 401k |
| YTD Social Security Taxable | Recommended | Year to date, including this check. Lets the wage base be checked in Q2 to Q4. | YTD SS Wages, YTD OASDI Taxable |
| YTD Medicare Taxable | Optional | Year to date, including this check. Places the $200,000 Additional Medicare threshold. | YTD Medicare Wages |
One row per deposit: an EFTPS payment history, a bank export or a GL extract. Rows without a date or an amount the tool can read are dropped.
Payment Date
Amount
Tax Period
Form Type
| Column | Needed? | Notes |
|---|---|---|
| Payment Date | Required | Same date formats as Check Date. Also accepted: Settlement Date, Effective Date, Transaction Date, Post Date, Date. |
| Amount | Required | Also accepted: Payment Amount, Deposit, Deposit Amount, Debit, Value. |
| Tax Period | Optional | Read, but not used. |
| Form Type | Optional | When it's mapped, only rows that say exactly 941, or are blank, count. Leave it unmapped if the column holds anything else, like Federal Tax Deposit. |
Skip this and you get a two-file balance: payroll against deposits. To check the return too, type in lines 2, 3, 5a, 5b, 5c, 5d, 7, 12 and 13 from the 941 you filed, and the three line 16 months if you deposit monthly. Fill from register (calculated) copies the calculated figures in for you to edit. Once any box has a number, empty boxes count as zero, except line 12: left empty, the reported total is lines 3, 5a, 5b, 5c, 5d and 7 added up.
Payroll Social Security wages include tips, but the 941 splits them, so lines 5a and 5b are added together and checked against the register as one. Each line in the tie-out table gets a status, and lines 3, 5a tax (with 5b), 5c tax and 5d tax also raise a variance when they're off. Line 13 isn't compared; deposits come from your payments file. Line 7 isn't compared either; the L7 check below uses payroll data.
V-101 Deposit missing for liability period
V-103 $100k next-day deposit missing
V-102 Deposit late
V-201 [line] under-reported
V-202 SS wage-base cap misapplied
V-203 Additional Medicare wrong for high earner
V-204 Withheld but not deposited
V-301 [line] over-reported
V-302 L7 fractions-of-cents implausible
V-303 L16 monthly liability mismatch
V-304 Unmatched payment
V-401 SS cap verification skipped
V-402 High void/reversal volume
| Variance | Severity | Raised when |
|---|---|---|
| V-101 Deposit missing for liability period | Critical | No payment, or pair of payments, matches the period's liability within $1.00. |
| V-103 $100k next-day deposit missing | Critical | The same, for a next-day period. |
| V-102 Deposit late | Critical | Matched, but paid after the due date. The note quotes the IRS penalty tiers; no penalty is worked out. |
| V-201 [line] under-reported | High | Line 3, 5a tax, 5c tax or 5d tax on the filed 941 is below the calculated figure by more than the line tolerance. |
| V-202 SS wage-base cap misapplied | High | One employee's Social Security withheld for the quarter is more than $0.50 from 6.2% of their capped wages. It fires whatever the cause, not only the wage base. Runs when every row has YTD Social Security, and always in Q1. |
| V-203 Additional Medicare wrong for high earner | High | For someone past $200,000, Medicare withheld is more than $0.50 from 1.45% plus 0.9% on the amount over. |
| V-204 Withheld but not deposited | High | The calculated tax is more than all 941 deposits by more than the line tolerance, and an under-reported 941 of the same size doesn't explain it. |
| V-301 [line] over-reported | Medium | The same four 941 lines, above the calculated figure. |
| V-302 L7 fractions-of-cents implausible | Medium | Employee Social Security and Medicare withheld across the quarter differ from the rate math by more than the line 7 tolerance. Uses payroll data only. |
| V-303 L16 monthly liability mismatch | Medium | A line 16 month you keyed differs from the calculated month by more than the line tolerance. |
| V-304 Unmatched payment | Medium | A 941 payment that no liability period used. |
| V-401 SS cap verification skipped | Info | Employees in Q2 to Q4 with no YTD Social Security; lists up to 10 IDs. |
| V-402 High void/reversal volume | Info | More negative gross or FIT rows than 3 or 5% of rows, whichever is larger. |
Per-employee tax: $0.50. A 941 line: $5.00 or $0.02 per employee, whichever is larger. Line 7: $10.00 or $0.02 per employee. A deposit period: $1.00. Info variances don't stop a clean verdict. Without a filed 941, V-201, V-301 and V-303 don't run; everything else does.
A verdict, the tie-out table with calculated, reported and paid columns, each variance with its explanation, a next step and the employee IDs or dates behind it, and the deposit schedule with each period's due date, liability, amount paid and whether it was on time, late or unpaid.
Download PDF saves all of that as 941-reconciliation-Q2-2026.pdf (named for your quarter), with the tolerances used and a SHA-256 fingerprint of each input file, so you can show later which files produced it. Send to readiness posts the result to the readiness dashboard, which has a Q2 check only for now, so a result for any other quarter is saved but doesn't show there; signed in, the status and counts are saved to your account.