Box12TT

W-2 box 12 code TT: how to calculate qualified overtime for 2026

Updated November 12, 2026. A plain-language walkthrough with worked examples. Not tax advice.

Starting with 2026 Forms W-2, employers must report qualified overtime compensation in box 12 with code TT. For 2025 the IRS allowed approximations and other reporting methods; for 2026 the amount is mandatory and has to be computed. Employees use it to claim the federal "no tax on overtime" deduction, which runs for tax years 2025 through 2028.

The one-sentence rule. Code TT is the premium that section 7 of the Fair Labor Standards Act required you to pay: half the employee's regular rate for each hour worked over 40 in a workweek, counting only premium you actually paid.

Why code TT won't tie to your payroll register

The register shows the whole overtime payment. Code TT keeps only the FLSA-required half-time premium, figured workweek by workweek. These are the usual differences:

SituationOvertime paidCode TT
$20/h, 5 h at time-and-a-half$150.00$50.00
$20/h, 10 h at double time$400.00$100.00
Four 10-hour days (daily overtime, 40 weekly hours)$240.00$0.00
38 h worked + 8 h holiday, payroll paid 6 h OT$180.00$0.00
Salaried nonexempt, $600 for 40 h, worked 44 h$90.00$30.00
Same salary, fluctuating workweek method$27.28$27.28

Step 1: work in workweeks, not pay periods

FLSA overtime is owed per fixed 168-hour workweek. A semi-monthly or biweekly pay period can hide overtime (45 hours one week, 35 the next) or create overtime the FLSA never required. Rebuild hours worked by workweek from timekeeping records. Paid time off, holidays not worked and sick time are not hours worked.

Step 2: compute the regular rate

The regular rate is all includable pay for the workweek divided by hours worked. Includable pay covers straight-time wages for every hour (including the straight-time part of overtime hours), shift differentials, nondiscretionary bonuses and commissions, and the tip credit for tipped employees. Discretionary bonuses, expense reimbursements and pay for hours not worked are excluded.

Example: 45 hours at $20 plus a $50 production bonus. Includable pay is $900 + $50 = $950. Regular rate: $950 ÷ 45 = $21.11.

Step 3: take half the regular rate for hours over 40

Required premium = 0.5 × regular rate × hours over 40. In the example: 0.5 × $21.11 × 5 = $52.78.

If your payroll paid overtime at 1.5 × the $20 base rate, it paid $50.00 of premium, not $52.78. Only the $50.00 actually paid is reportable. The $2.78 shortfall is an FLSA back-pay issue, and it becomes code TT in the year you pay it.

Step 4: add bonus true-ups in the year paid

A quarterly or annual nondiscretionary bonus raises the regular rate of every workweek it covers. Allocate it across those weeks (equally per week, or per hour worked), compute the extra half-time premium for weeks with overtime, and report what you pay in the year you pay it. A December workweek paid in January belongs on the next year's W-2.

Special cases

The CSV columns Box12TT uses

ColumnWhat to put there
employee_idRequired. Any stable ID.
employee_nameOptional, shown in results.
week_endingRequired. Last day of the FLSA workweek (YYYY-MM-DD or MM/DD/YYYY).
pay_dateCheck date; decides the tax year. Defaults to week_ending.
pay_typehourly (default), salary_fixed or salary_fww.
hours_workedRequired. Hours actually worked in the workweek, excluding PTO and holidays not worked.
straight_time_payHourly: straight-time wages for non-overtime hours. Salaried: the weekly salary.
overtime_payAll time-and-a-half overtime earnings for the week (the full line, not just the premium). For salary_fww, the half-time pay.
doubletime_payDouble-time earnings, if any.
overtime_hoursHours paid as overtime. Needed for tipped employees.
other_includable_payShift differentials, nondiscretionary bonuses and commissions earned in that week.
excluded_payPTO, holiday, discretionary bonus, reimbursements. Kept out of the regular rate.
tip_creditTotal tip credit taken that week.
min_wageApplicable minimum wage floor for the regular rate (tipped employees).
salary_hoursHours a fixed salary is meant to cover (default 40).

Several rows for the same employee and workweek are added together, so a one-row-per-pay-item export works too. Bonus true-ups go in a separate file with the columns employee_id, bonus_amount, pay_date, period_start, period_end, allocation, ot_trueup_paid.

Sources