Skip to content
VerifyStub

YTD consistency check: does each stub's year-to-date gross follow from the last?

A stack of pay stubs for one job should tell one story. Each stub's year-to-date gross should equal the previous stub's YTD plus the gross printed on it. When it does not, the difference points at a missing stub, a correction or a misread number.

Run the check on your stubs

What is a YTD consistency check?

A YTD consistency check tests that the year-to-date gross on consecutive pay stubs adds up:

YTD(n) = YTD(n-1) + gross(n)

It applies to stubs from the same employer and employee, in pay-date order, with no pay period skipped in between. It is arithmetic on the numbers printed on the stubs, and it says nothing about whether the stubs are genuine.

Example: one stub missing, one stub off, on the rail

Built-in sample B (fictional people and employers). The rail between stubs is green where the chain ties and amber where it does not. The third stub's YTD includes the pay of the March 17 to 23 stub, which is not in the file.

  1. Stub 1 · Weekly

    Paid Mar 14, 2025

    Period Mar 3 – Mar 9, 2025

    Math checks pass
    Gross
    $918.00
    Taxes
    $164.59
    Deductions
    $91.14
    Net
    $662.27

    YTD gross $9,648.00 · YTD net $6,960.33

    • Gross - taxes - deductions = net. 918.00 - 164.59 taxes - 91.14 deductions = 662.27, matching net pay.
    • Earnings lines add up to gross. 3 earnings line(s) add to 918.00.

    4 more consistency checks passed.

    Lines read from this stub

    Earnings read

    LineHoursRateCurrentYTD
    Regular4022.50900.009,000.00
    Overtime033.750.00405.00
    Shift Differential121.5018.00243.00

    Taxes read

    LineCurrentYTD
    Federal Withholding74.42763.82
    Social Security Tax52.97593.73
    Medicare Tax12.39138.87
    State Income Tax24.81287.01

    Deductions read

    LineCurrentYTD
    401(k) Employee pre-tax27.54289.44
    Health Insurance pre-tax54.00522.00
    Dental Insurance pre-tax9.6092.80
  2. Stub 2 · Weekly

    Paid Mar 21, 2025

    Period Mar 10 – Mar 16, 2025

    2 to review
    Gross
    $1,053.00
    Taxes
    $190.62
    Deductions
    $107.59
    Net
    $767.19

    YTD gross $10,701.00 · YTD net $7,727.52

    • Gross - taxes - deductions = net. 1,053.00 - 190.62 taxes - 107.59 deductions = 754.79, but net pay prints 767.19 (higher by 12.40).
    • Earnings lines add up to gross. 3 earnings line(s) add to 1,053.00.
    • Deduction lines add up to the printed total. Deduction lines add to 107.59 but the stub's total deductions prints 95.19 (differs by 12.40).

    3 more consistency checks passed.

    Lines read from this stub

    Earnings read

    LineHoursRateCurrentYTD
    Regular4022.50900.009,900.00
    Overtime433.75135.00540.00
    Shift Differential121.5018.00261.00

    Taxes read

    LineCurrentYTD
    Federal Withholding86.20850.02
    Social Security Tax61.34655.07
    Medicare Tax14.35153.22
    State Income Tax28.73315.74

    Deductions read

    LineCurrentYTD
    401(k) Employee pre-tax31.59321.03
    Health Insurance pre-tax54.00576.00
    Dental Insurance pre-tax9.60102.40
    Parking pre-tax12.4012.40
  3. Stub 3 · Weekly

    Paid Apr 4, 2025

    Period Mar 24 – Mar 30, 2025

    1 to review
    Gross
    $921.00
    Taxes
    $165.16
    Deductions
    $91.23
    Net
    $664.61

    YTD gross $12,607.50 · YTD net $9,090.81

    • Gross - taxes - deductions = net. 921.00 - 165.16 taxes - 91.23 deductions = 664.61, matching net pay.
    • Earnings lines add up to gross. 3 earnings line(s) add to 921.00.

    4 more consistency checks passed.

    Lines read from this stub

    Earnings read

    LineHoursRateCurrentYTD
    Regular4022.50900.0011,700.00
    Overtime033.750.00607.50
    Shift Differential141.5021.00300.00

    Taxes read

    LineCurrentYTD
    Federal Withholding74.681,013.39
    Social Security Tax53.16769.33
    Medicare Tax12.43179.94
    State Income Tax24.89370.20

    Deductions read

    LineCurrentYTD
    401(k) Employee pre-tax27.63378.23
    Health Insurance pre-tax54.00684.00
    Dental Insurance pre-tax9.60121.60

What each result means, and what to do

The same six words appear in the chain-report CSV, so the result can be filtered in a spreadsheet.

ResultWhat it meansWhat to do
TIESThe printed YTD gross equals the previous stub's YTD plus this stub's gross, within $0.02.Nothing to do.
BREAKThe pay periods are consecutive, but the printed YTD differs from the expected figure. The difference is shown.Compare both stubs with the originals. Look for a correction, an off-cycle payment, or a misread digit.
GAPOne or more pay periods are missing between the two stubs. The YTD difference shows the gross the missing stub or stubs would have to hold.Ask for the missing stub, or confirm that no pay was issued for that period.
RESET_OKThe pay date falls in a new year and the YTD restarted: it equals this stub's own gross.Nothing to do.
RESET_BREAKThe pay date falls in a new year, but the YTD did not restart as expected.Check the pay date and the YTD printed on the first stub of the year.
UNCHECKEDA year-to-date figure or a pay date was not read on one of the two stubs, so the link cannot be tested.Open the lines read from the stub, and compare with the original.

How to run the check by hand

This is what the converter does for you, in case you want to do one stub pair yourself.

  1. Put the stubs in pay-date order

    Oldest first, one employer and one employee at a time. A second job or a second person starts a new chain.

  2. Look for a skipped pay period

    Weekly stubs are 7 days apart, biweekly 14, semimonthly twice a month, monthly once. If a date is missing, the chain cannot tie across it, and the YTD difference tells you how much pay the missing stub holds.

  3. Add this stub's gross to the previous YTD

    Previous stub's YTD gross plus this stub's gross pay. Use the printed figures, to the cent.

  4. Compare with the printed YTD, and handle the new year

    A difference above $0.02 is a break. On the first pay date of a new year the YTD should restart, so it should equal that stub's own gross.

Why a chain can break without anything improper

Most breaks have ordinary causes. That is why the result is a pointer to where to look and never a verdict.

  • A stub is not in the stack

    The applicant sent five of six stubs. The next stub's YTD still includes the missing pay.

  • Pay outside the regular cycle

    A bonus, commission or final payout on a separate check adds to YTD without appearing on a regular stub.

  • A payroll correction or retro pay

    An adjustment can change YTD by an amount that is not in the period's gross.

  • A change of payroll system or entity

    YTD can restart or be carried over in a different way partway through the year.

  • What counts as gross

    Some employers treat certain pre-tax benefits or imputed income differently between the period and the YTD line.

  • A misread digit

    Phone photos and scans can turn a 3 into an 8. A break next to a photo is worth comparing with the page before anything else.

What this check cannot do. It does not detect altered documents, and a stub edited with its arithmetic kept consistent will pass. It does not verify that the employer or the employment exists. Verification of employment and income is a separate step.

Checking the YTD chain: by hand, generic OCR, VerifyStub

What you need By hand in a spreadsheet Generic PDF-to-Excel / OCR VerifyStub
Putting stubs in order Sort by eye Stays in upload order Ordered by pay date, grouped by employer and employee
Adding this gross to the last YTD One calculator entry per pair Not done Done for every neighbouring pair, to the cent
Noticing a skipped pay period Only if you check the dates Not done Missing period named, with the gross it would have to hold
The turn of the year Easy to get wrong Not done YTD expected to restart on the first pay date of a new year
Where it goes wrong Hunt through the stack No signal An amber link between the two stubs involved
What a pass means Depends on who checked Nothing The printed figures agree with each other. Nothing more

YTD consistency check: common questions

What is a YTD chain?

It is the relationship between year-to-date gross figures on consecutive pay stubs from the same employer. Each stub's YTD gross should be the previous stub's YTD gross plus the gross pay printed on the new stub.

How much difference is allowed?

Two cents. Payroll systems round to the cent, so a difference of $0.02 or less counts as a tie. Anything larger is shown as a break, with the amount.

What happens at the start of a new year?

The first stub with a pay date in the new year should show a YTD gross equal to its own gross, because the count restarts. The check uses the pay date to decide which year a stub belongs to, and shows RESET_OK when the restart happens and RESET_BREAK when it does not.

How does it know a stub is missing?

From the pay dates and the pay frequency. Weekly stubs should be about 7 days apart, biweekly about 14, semimonthly follow the 1st-15th and 16th-end-of-month periods, and monthly follow the calendar month. A larger jump is reported as the number of missing periods and their dates.

What is the 'implied missing gross'?

If one stub is missing, the printed YTD on the next stub still includes that stub's pay. The difference between the printed YTD and the expected YTD is therefore the gross the missing stub would have to hold. It is a pointer for conversation, not a figure to use as income.

Does a break mean the stub is fake?

No. Breaks come from missing stubs, off-cycle payments such as bonus checks, payroll corrections, employer payroll changes during the year, pre-tax benefit treatment, and misread digits. The check cannot tell these apart, and it does not detect altered documents.

Does a tie prove the stubs are genuine?

No. A document altered with care to keep the arithmetic consistent will tie. A tie means the printed figures agree with each other, which is useful for catching mistakes and missing stubs and not more than that.

What if a stub does not print year-to-date figures?

Then the link to and from that stub is shown as unchecked, in grey. The per-stub math is still tested, and the warnings list which stubs had no YTD gross.

What if the stubs are from two employers?

They are grouped by employer and employee and each group gets its own chain, so a second job does not cause false breaks. The summary panel covers the first group and the timeline and downloads cover all of them.

Which YTD figure is tested?

YTD gross. If the stub does not print a YTD gross but does print a YTD for every earnings line, those are added up and the stub notes that it was summed. YTD taxes, deductions and net are read and written to the CSV but are not part of the chain test.

Test the chain on your own stubs

Free: 1 file per day, up to 10 pages, no account. The chain report downloads as CSV.

Upload pay stubs