Tie-Out Press

Workbook 1.0.2 Built 30 September 2026 Constants: ty2026.json

Qualified Overtime Kit

TY2026 edition

A reconciliation workbook, an offline single-workweek check and a rules reference for the figure that goes in W-2 box 12, code TT.

The free files and the kit run on your machine: no analytics, no ads, no network request after load.

Buy, from $49

Not a substitute for professional advice. This is a calculation and reconciliation tool. It is not tax advice, not legal advice, and not a substitute for either. It is not affiliated with, endorsed by, or approved by the Internal Revenue Service, the Department of Labor, the Department of the Treasury, or any other government agency. You remain responsible for the amounts you report. Verify every figure against your own records and the primary sources cited in the workbook before you file, and take advice on anything that matters.

Three implementations

The arithmetic is written three times, on purpose. engine/qot_engine.py is a Python implementation with no third-party dependencies. The workbook's Excel formulas are a second. The offline spot check is a third, in JavaScript. Separate implementations are worth having only if something drives them from the same inputs and compares them to the same answers, so that is what the build does.

What that proves is agreement, not independence. Implementations that share a misreading of the specification would agree with each other and still be wrong, and no amount of comparing them to each other would find it. That is why the published examples in the next section carry weight the parity run cannot: they are a check against arithmetic we did not write.

The test suite holds 90 cases. An internal verification build of the workbook loads every one of them as data. LibreOffice then recalculates that file from scratch in a throwaway profile with OOXMLRecalcMode forced. Without that flag it reports whatever the file already claims its formulas come to. Each case's qualified amount is then compared against the Python engine's own Decimal.

Run of build/verify_with_libreoffice.py against the verification build, 30 September 2026. The five cases not driven live are named on the sheet. Three assert that a missing or null constant raises instead of defaulting, which no Excel formula can do; they are held as invariants on the Lookups and Checks sheets. Two assert Python type behavior that has no Excel expression at all.
ComparisonCasesMismatches
Qualified amount, workbook formulas against the engine850
Blocked or eligible verdict850
Analogue invariants, where Excel cannot express the case30
Distinct cases compared880
No Excel expression; named, and not compared2—

Every exception rule the workbook implements fires on exactly the cases the engine fires it on, and the Checks summary cell recalculates to zero. Of the 53 rules on the Exception Log, 44 are live in the workbook and are the ones that run proves; eight are engine only: the engine raises them and the workbook does not. Each of the eight is marked engine only on the sheet with a plain statement of what its absence costs you, and the verification page names the one that can still cost you a number. The fifty-third is raised by neither half, and the sheet says so. The verification build carries 118,305 formula cells. 111,201 ship carrying their real computed result. The remaining 7,104 are formulas whose result is an empty string, a row that does not apply or a column that stays blank until you fill it, so there is nothing to cache. Of the cached results, 4,589 are checked against the engine: every cell it holds a Decimal for. The file is read twice. Once with no recalculation at all, which is what a webmail preview or a phone viewer puts on the screen, and once recomputed from scratch, which is what Excel does on open. Both readings have to land on the engine's numbers, and the build fails if either does not.

The offline spot check is compared the same way, driven through its own page in headless Chromium. It is a single-employee, single-workweek tool, so it cannot express every case. It matches on the 65 it can, to the cent, including the severity codes raised and the eligibility verdict. The 25 it cannot are each printed with the reason: a deferred bonus spanning a quarter, or a second employee on the same file. None is quietly dropped. That run also counts the page's network requests after load, and finds none.

The published examples

Five worked examples in the published sources bear on this calculation. The kit reproduces four of them exactly. The fifth is 29 CFR 778.114(b)(1), and it needs a sentence more: the regulation rounds the regular rate to the cent before halving it and the kit never does, so the engine computes $27.27 where the regulation prints $27.28. At the $0.05 operational tolerance the kit ships with, the paid figure sits inside the band and the reported figure is $27.28 — the regulation's own. Set the tolerance to zero and it is $27.27. Both figures are lawful, and the section below sets out the arithmetic on both sides. A further figure is commonly quoted alongside all of them; it is not a published example, and the kit does not present it as one. The arithmetic, line by line, and where the one-third and stub-rate shortcuts break: the half-time premium, worked.

Verified by tools/verify_worked_examples.py, which builds each case from its own source document and never imports the test suite. Three of them — FS-2026-13 Q16, 29 CFR 531.60 and 29 CFR 778.110 — compute live on the workbook's Test Cases sheet as well, from the same formulas the rest of the file uses. This is a list of the examples the kit reproduces, not a census of the ones that exist: the wage regulations print worked illustrations in several places, and where one bears on a qualified-overtime figure it belongs here.
SourceFactsCode TTStatus
FS-2026-13, Q16 $20.00/hr, 50 hours, employer pays double time $100.00 Published example, reproduced
29 CFR 778.110 $12.00/hr, 46 hours, $46.00 nondiscretionary bonus $39.00 Published example, reproduced
29 CFR 778.111(a) 50 hours: $491.00 at piece rates for 46, $8.00/hr for 4 hours' waiting time $52.30 Published example, reproduced
29 CFR 778.220(b) $12.00/hr, 42 hours worked, 2 hours of show-up pay not worked $12.00 Published example, reproduced
29 CFR 531.60 $2.13 cash wage, $5.12 tip credit, 10 overtime hours $36.25 Derived from the rule; see below

That last row needs care. 29 CFR 531.60 publishes no worked example. What it states is a rule: a tipped employee's regular rate includes the tip credit the employer takes, capped at the section 6(a)(1) minimum wage less the cash wage paid. The $2.13 cash wage is printed verbatim in 531.59 and 531.60. The $5.12 credit is printed in no statute or regulation. It is that formula's product, given the $7.25 minimum wage at 29 USC 206(a)(1)(C). Apply the rule and the regular rate is $7.25, not $2.13, and ten overtime hours carry $36.25 of qualified premium. Computing that premium on the cash wage instead is the most common error in this category. The derivation is recorded as assumption A12 in params/ty2026.json, and the rules PDF labels the figure as derived rather than published.

One penny of disagreement

29 CFR 778.114(b)(1) illustrates the fluctuating workweek. Its own arithmetic rounds the week-two regular rate to $13.64 before halving it, and prints a premium of $27.28. At full precision the rate is 600 divided by 44 and the premium is $27.27. The engine never rounds the regular rate, so on those facts it computes $27.27 — and reports $27.28, because the $27.28 the employer paid falls inside the $0.05 operational tolerance, and a premium inside the band is the figure taken. Set the tolerance to zero and the reported figure is $27.27. So the kit reaches the regulation's number at the setting it ships with, without computing it, and the two readings are a penny apart underneath. We would rather you knew that from a sales page than found it in February.

A third rule changed a number rather than a flag in this build, and it is the plainest of the three. Leave Pay basis blank on a Status History row and the workbook used to report a figure for that employee with nothing at all on the exception log to tell you a required field was empty. No warning, no note: a clean-looking answer resting on a pay basis nobody supplied. The same held for a blank Salary amount on a salaried or fluctuating-workweek row, for fixed hours outside 1 to 60, and for a section 207(j) or 207(k) row with no period length. Rule E-205 now blocks all four here, as it always has in the engine and in the spot check.

In the build before it, two further rules changed a number instead of a flag. Status History has a Workweek starts column marked “overrides the employer default” that nothing read: every week was built on the employer-wide value instead, and the start day decides which hours fall in which workweek. It is honored now, and an employee whose workweek definition changes mid-year is blocked rather than reported on whichever definition won (29 CFR 778.301-.302).

And leave Applicable minimum wage blank on a tipped employee whose regular rate lands on the federal $7.25, and the workbook used to fill in $7.25 for you, report a figure computed on it, and log the shortfall as though the employer had chosen to overpay. On DOL's own Field Operations Handbook scenario that is $18.13 reported where $25.00 is right. It now blocks that employee and tells you which cell to fill. The Version sheet carries this as errata, and the verification page sets out how it was found.

There is a second half to it, and it is the more useful half if you run a payroll that does the same thing. All three of the 778.114(b) illustrations compute the premium on a rate rounded to the cent, and 778.113(a) prints a $375 salary for a 40-hour week as $9.38 an hour rather than $9.375. In the third 778.114(b) illustration the rate rounds down, and the premium the regulation prints is a cent below the exact half-time amount. So an employer who rounds the regular rate to the cent is doing what the published illustrations do, and 29 CFR 778.109, which defines the rate, says nothing about precision either way.

The kit used to call that a discrepancy: a non-FLSA excess, or on the third illustration a possible underpayment. It no longer does. Since 8 September 2026 it computes the same premium a second way, on the rate rounded to the cent, and where your payroll matches that figure the week is recorded as compliant on its own row instead of raising a flag. Check C-48 in the exception log. The reported figure did not change. On that row the kit reports the smaller of the two lawful readings, which is the amount section 7 minimally required; closer in, where the premium paid already falls inside the operational tolerance, the paid figure is the one reported, which is where the $27.28 above comes from. What changed is that following the regulation no longer costs you a warning. The whole of the reasoning, including the regulation's four illustrations and their arithmetic in both directions, is assumption A14 in params/ty2026.json, which ships with the kit.

What is in it

Coverage is the FLSA regular-rate machinery a bookkeeper actually meets: weighted averages across two rates, shift differentials, tipped employees with and without a credit state, salaried nonexempt on both a fixed workweek and a fluctuating one, deferred bonus true-ups under both allocation methods, compensatory time, California daily overtime, section 207(k) and 8/80 periods, and workweeks that straddle a semi-monthly period or a calendar year.

One case the workbook will not answer, and says so rather than guessing: a single workweek whose overtime premium was paid on two dates falling in different tax years. The pay date decides the year, so that week's qualified amount belongs partly to each, and a workbook row carries one workweek and one pay date. It blocks the week under E-W02 and tells you to split the premium lines into the years they were paid in. The engine does perform the split. A week paid on two dates inside one year is computed normally by both, and the annual figure is the same either way. The engine notes the split under W-704.

Free before you buy

The spot check is live now, at tieoutpress.com/spot-check.html. One employee, one workweek, about two minutes, and nothing to fill in first. There is no form on that page, and it makes no network request at all once it has loaded. It is free without condition, now and in every later edition.

Three more things are free, and all three are downloadable now. The TY2026 edition has been released: the workbook is at 1.0.2, under the tag ty2026-v1.0.2, and the store is open, so any of the three licenses can be bought from the price table below. Version 1.0.2 changes no figure, and a figure computed with 1.0.0 or 1.0.1 stands. What changed is packaging and wording. Every download now carries LICENSE.txt, the terms this page states, and a README.txt of its own. The paid download's constants file sits at params/ty2026.json, the path this page names. The About sheet's sentence on how the formulas are checked now says which of the suite's 90 cases are compared to the cent, 85, with 3 held as invariants and 2 named and not compared, where it said all 90 were; the table under Three implementations gives the same counts. The Version sheet records each. The three files below are posted as direct files with no email wall and nothing held back from the paid file except the license to use it on client work and the blank rows to do it in. They are the material you would check before paying, and you can check all of it before you pay for anything.

The sample's twelve, from samples/Wrenfield-answer-key-TY2026.txt. The workbook's own formulas reproduce all twelve figures and the total after a full recalculation, with no mismatch.
CaseWhat it exercisesCode TT
SMP-01Hourly, one rate$273.00
SMP-02Two rates, weighted average (778.115)$252.84
SMP-03Tipped with a tip credit, in a state above the federal minimum (531.60; 778.5)$143.00
SMP-04Tipped in a no-credit state$177.45
SMP-05Salaried nonexempt, fixed 40 (778.113(a))$234.00
SMP-06Salaried nonexempt, fluctuating workweek (778.114)$389.16
SMP-07Deferred quarterly bonus true-up (778.209(a))$288.86
SMP-08Shift differential (778.207(b))$321.27
SMP-09California daily overtime$348.00
SMP-10Union contract premium (207(e)(5), (e)(6))$445.25
SMP-11Semi-monthly periods hide who crossed forty$307.50
SMP-12Nonexempt through 4 July, exempt from 5 July$359.38
Control total$3,539.71

The payroll-vendor documentation map is free on this site as well: what seven payroll vendors' own pages say, and do not say, about the code TT figure, quoted and dated, so you can see which questions your client's vendor answers on its own pages before you buy anything.

Who wrote this

The author is not a CPA and not an enrolled agent, and this page will not imply otherwise. No accountant has reviewed the method, and no reviewer is named here, because naming one who has not reviewed would be worth less than nothing to you.

What stands in place of a credential is material you can check before you pay. The sample workbook is a complete file with twelve answers you can work by hand against a published key. Every constant sits beside a citation to the document and section it came from. The formulas are unlocked and visible, so you can read the method for yourself. The version stamp is dated, the change log ships on the workbook's Version sheet, and errata are published when a figure turns out to be wrong. A credential would let you skip all of that. Without one, we have to hand you the material and let you check it.

Price

One-time, per practice, never per seat. There is no subscription and no per-return fee. A mid-season upgrade costs the difference between the two prices in this table and nothing more.
LicensePriceCovers
Single practice $49 One practice, up to 10 client EINs Buy
Firm $199 One firm, every office and every member of staff, up to 50 client EINs Buy
Unlimited $399 No cap on client EINs, across entities under common control Buy

All three tiers ship identical files. The only difference between them is the breadth of the license. There is no feature held behind the higher price, no seat count to administer, and no build of this kit that computes a different number depending on what you paid.

Fifteen days, a full refund, and no reason required. You do not have to justify the request and we will not ask you to.

The license

What you buy is a non-exclusive, non-transferable license to use the kit within one practice, for the number of client entities in the tier you bought: ten on Single practice, fifty on Firm, and no cap on Unlimited. A client entity means one EIN for which you prepare W-2s in the tax year, so a client with two EINs counts as two and a client you do not file for counts as none. Count the EINs you will file for this season and buy the tier that covers them; if you pass the cap mid-season, the upgrade costs the difference between the two tier prices and nothing more: $150 from Single practice to Firm, $200 from Firm to Unlimited, $350 from Single practice to Unlimited. You may not redistribute, resell or sublicense the files.

There is no warranty that the kit fits any particular client's facts. Our liability to you is capped at what you paid. We do not indemnify you: if a figure is challenged, the cost of answering for it is yours, not ours. You remain the preparer throughout — the kit computes and documents, and it does not take on your role or your responsibility for the return.

What this does not do

It does not promise a tax result. Nobody selling a spreadsheet is in a position to tell you what a revenue agency will do next, and any product that says otherwise is telling you something it cannot know. Section 6724 relieves an information-return penalty where a failure is due to reasonable cause and not to willful neglect, and that showing turns on a consistent, documented method applied the same way to every employee. This kit produces that documentation: the method memo, the exception log with its reasons, and a constants file where every figure carries its citation. Whether a particular showing succeeds is between you, your client and the agency.

It does not file anything, and it does not connect to your payroll system. It reads hours and earning lines you export, and it hands back a figure and a working paper. It is not a payroll engine and will not tell you whether your client paid their people correctly, though the exception log will say plainly when the FLSA premium required exceeds the premium actually paid, which is often the more interesting finding.

For 2026 there is no approximation authority. The Act permitted approximation by any reasonable method only for periods before 1 January 2026, so the qualified figure has to be computed workweek by workweek, and a workweek is a fixed and recurring 168-hour period that stands alone with no averaging across weeks. That is the reason this is a workbook and not a worksheet.

On penalties, plainly. Under section 6721 and section 6722 an incorrect W-2 runs $60 per form corrected within thirty days, $130 corrected within the second tier, and $340 after that, with a minimum of $690 and no annual cap where the disregard is intentional. Both sections can apply to the same form. The revenue procedure's printed text and the statute disagree on when the second tier closes. The discrepancy is recorded verbatim as assumption A3 and our reading of it is recorded as assumption A10: the statutory deadline governs. The kit still describes that tier without printing a date against it, and every customer-facing document fails its own build if one appears. A dated tier would assert one source over the other on a page with no room to show the working, and the constants file is where that argument belongs.

Updates and errata

Updates for this edition are included through the filing deadline, and every update carries a dated row on the workbook's Version sheet stating what changed and whether any figure changed. If a figure in this kit turns out to be wrong, you will hear it from us first, in writing, with the correction. Later tax-year editions are a separate purchase. The workbook carries two license cells you fill in from your receipt, and every method memo it generates prints what you typed there.

Every constant is generated from params/ty2026.json and never typed by hand, which is what makes that promise cheap to keep: a change in guidance is an edit to one file and a rebuild, not a rewrite.

Errata and new editions

This list sends two things: a figure in a released edition turned out to be wrong, and a new tax-year edition is out. Nothing else. A confirmation email comes first and nothing follows until you click the link in it. The link at the foot of any message ends it.

This form is the only request either page makes after it has loaded, and it makes it only when you press the button. It carries the address you typed and no other field: there is no second field on this form, hidden or otherwise, and no script on the page to add one. Pressing the button is a request to Kit, which hosts the list and receives it the way any site receives a request, and it leaves this site. Kit takes it from there, and your subscription is not active until you click the link in the email it sends. Nothing else here sits behind an address.

Current as of 4 October 2026.

Not a substitute for professional advice. The Qualified Overtime Kit is a calculation and documentation tool. It is not tax advice, not legal advice, not accounting advice and not payroll advice, and it is not a substitute for a qualified professional who has reviewed your client's particular facts.

Overtime, regular-rate and tip-credit rules vary by state and by the terms of an individual's employment, including collective bargaining agreements and written pay arrangements. You are responsible for confirming which rules apply to each client and for reviewing all output before you rely on it or file it.

Tie-Out Press is not affiliated with, endorsed by, or approved by the Internal Revenue Service, the Department of the Treasury, the Department of Labor or any other government agency. No agency has reviewed or approved this product.

No outcome is promised. We do not warrant that the kit is accurate for any particular set of facts, we cannot say how any authority will treat a figure it produces, and nothing here promises that a penalty, an audit or an assessment will be avoided.

Penalty figures cited on this page are the amounts as adjusted for the applicable filing year, taken from the current revenue procedure as printed. They are not the base figures written into the statute, which are pre-indexation and lower. They are adjusted again in later years, and section 6724 waives a penalty where the failure is due to reasonable cause and not to willful neglect. The amount that applies to a given failure depends on facts this page cannot know.

The Qualified Overtime Spot Check is free without condition: no account, no card, no expiry, and nothing held back from it.

What this site records about you. There is no analytics script, no pixel and no beacon on this page or on the spot check, and the spot check makes no network request at all once it has loaded. The one request this page can make is the email form above, and only if you fill it in and press the button. It carries the address you typed and no other field, and pressing the button is a request to Kit, which receives it the way any site receives a request. Requests to these pages are counted at Cloudflare's edge, on the request that was already being served, and what is written down is the path, the host of the referring site (never the referring address itself), the two-letter country the edge already attaches, and a channel tag if the link you followed carried one. Your IP address is not in that record, in any form — not hashed, not shortened, not under another name — and neither is your browser's user agent. The counter is worker/index.js; tools/verify_edge_instrumentation.py runs it and fails the build if a row ever carries an address.

Qualified Overtime Kit, TY2026 edition. Published by Tie-Out Press. Workbook 1.0.2 and spot check 1.0.0, both built 30 September 2026 against params/ty2026.json, generated 2026-09-06 and last amended 2026-09-20. The workbook's Version sheet lists each of its versions, with the constants and engine behind them; the spot check carries its own version and prints it on its page.

Constants derived from the documents named in params/SOURCES.md: statute text (26 USC 224, 225, 62, 63, 6721, 6722; 29 USC 203, 206, 207) from the prelim edition on uscode.house.gov; TD 10044 from FR Doc. 2026-07104, 91 FR 19026, effective 12 June 2026; the sections of 29 CFR parts 531 and 778 that the file names, from the 2025 CFR annual edition on govinfo, because ecfr.gov sits behind a bot-check gate we do not defeat; IRS FS-2026-13; the 2026 Form W-2 and its instructions. Each document, the host it came from and the date it was retrieved are logged there. Of the 60 URLs it lists, 59 carry a capture row in params/source-evidence.tsv giving the SHA-256 of the bytes it returned, their length, and a literal span found inside them. Be precise about what re-fetching proves. Re-run tools/verify_sources.py --online and most of the 59 come back byte-identical, hash and all. Some do not, and the count moves every time it is run: on the 12 September 2026 run, when the log held 39 fetched rows, it was 24 identical and 15 changed; on the 20 September run, against the 59, it was 41 and 18. None of those rows has changed. uscode.house.gov and dol.gov regenerate a page on each request, so the byte count drifts by a few dozen and the hash with it. It is one dated run, not a figure you should expect to reproduce. What holds on all 59 is the probe, a literal span from the document that must be present in the bytes for the fetch to count at all. That is the check worth running, because an HTTP 200 carrying none of the document is not a retrieval. So: a reader can re-fetch any of the 59 and confirm it still says what we quoted. A reader should not expect every hash to match, and we would rather print the drift than let a matching hash be assumed. That is a check on the documents. It is not a claim that any individual constant was read off a retained copy of that fetch. The sixtieth is Ohio's own 2026 minimum wage release, which the build machine cannot reach at all, because its network policy refuses the host. Its row says attested rather than fetched, names who read it and why, and the gate prints it under a heading of its own on every run. Two Department of Labor tables that the build machine can fetch carry the same figures. Where a source has been superseded, the superseding document governs and the constants file records which. Fifteen assumptions are recorded in the constants file and reproduced in the rules PDF; none is a silent default.

Publisher postal address:

Tie-Out Press, an imprint of Aeon Aurora LLC 377 Valley Rd, Unit 3131 Clifton, NJ 07013

Publisher email, for refund requests with the order number, upgrade requests, and FIGURE CHECK reports: support@tieoutpress.com. Company page: https://www.linkedin.com/company/tie-out-press.

Built to the 2026 Form W-2 instructions.