Documentation
¶
Overview ¶
Package overtimetax computes U.S. overtime pay and estimates the federal "No Tax on Overtime" deduction created by the One Big Beautiful Bill Act (OBBBA, Public Law 119-21) for tax years 2025 through 2028.
It covers three related calculations:
- FLSA Section 7 overtime pay and the qualified overtime PREMIUM (the extra half of "time-and-a-half" that OBBBA makes deductible);
- the above-the-line overtime deduction itself, applying the statutory annual caps ($12,500 single / $25,000 joint) and the MAGI phase-out ($150,000 single / $300,000 joint, reduced $100 per $1,000 over);
- the FICA (Social Security + Medicare) tax that still applies to overtime, since the OBBBA provision is an income-tax deduction only.
All statutory parameters follow IRS Fact Sheet FS-2025-03. The deduction applies to the overtime PREMIUM only, never to regular wages, and reduces taxable income rather than being a credit; estimated dollar savings equal the deduction used times the filer's marginal rate and are illustrative, not tax advice.
The reference calculator and worked examples this package mirrors live at https://noovertimetax.com/ — an interactive OBBBA overtime-deduction tool.
Example:
prem := overtimetax.OvertimePremium(30, 10) // $30/hr, 10 OT hours
ded := overtimetax.Deduction(prem, overtimetax.Single, 90000)
fmt.Printf("premium $%.2f, deduction $%.2f\n", prem, ded)
Index ¶
- Constants
- func Deduction(overtimePremium float64, status FilingStatus, magi float64) float64
- func EstimatedTaxSavings(deductionUsed, marginalRate float64) float64
- func FICAOnOvertime(overtimePay float64) float64
- func OvertimePay(regularRate, overtimeHours float64) float64
- func OvertimePayRate(regularRate float64) float64
- func OvertimePremium(regularRate, overtimeHours float64) float64
- type FilingStatus
- type Result
Constants ¶
const ( CapSingle = 12500.0 // max annual deduction, single/MFS CapJoint = 25000.0 // max annual deduction, MFJ PhaseoutStartSingle = 150000.0 // MAGI where phase-out begins, single PhaseoutStartJoint = 300000.0 // MAGI where phase-out begins, joint PhaseoutPer1000 = 100.0 // deduction reduced $100 per $1,000 over )
Statutory OBBBA "No Tax on Overtime" parameters (IRS FS-2025-03, USD/annual).
const ( OvertimeMultiplier = 1.5 // FLSA Section 7 time-and-a-half PremiumFraction = 0.5 // deductible premium = 0.5 x regular rate SocialSecurityRate = 0.062 // employee OASDI rate MedicareRate = 0.0145 // employee Medicare rate FICARate = SocialSecurityRate + MedicareRate )
FLSA and FICA constants (2025).
Variables ¶
This section is empty.
Functions ¶
func Deduction ¶
func Deduction(overtimePremium float64, status FilingStatus, magi float64) float64
Deduction returns the allowable above-the-line overtime deduction for a given qualified overtime premium, filing status and modified AGI. The result is the premium limited to the statutory cap, then reduced $100 per $1,000 of MAGI above the phase-out threshold, floored at zero.
func EstimatedTaxSavings ¶
EstimatedTaxSavings estimates the federal income-tax dollars saved by the deduction: deduction used times the marginal rate. This is an illustrative flat-rate estimate, not tax advice.
func FICAOnOvertime ¶
FICAOnOvertime returns the employee FICA (Social Security + Medicare) tax owed on overtime pay. OBBBA is an income-tax deduction only, so FICA still applies to the full overtime wages.
func OvertimePay ¶
OvertimePay returns total gross pay for overtime hours at time-and-a-half.
func OvertimePayRate ¶
OvertimePayRate returns the FLSA overtime hourly rate (1.5x regular).
func OvertimePremium ¶
OvertimePremium returns the qualified overtime PREMIUM: the extra half-rate pay above what the same hours would earn at the regular rate. This is the only portion that OBBBA makes deductible.
Types ¶
type FilingStatus ¶
type FilingStatus int
FilingStatus selects the applicable caps and phase-out thresholds.
const ( // Single covers single and married-filing-separately filers. Single FilingStatus = iota // Joint covers married-filing-jointly filers. Joint )
type Result ¶
type Result struct {
RegularRate float64 // input hourly rate
OvertimeHours float64 // input overtime hours
Status FilingStatus
MAGI float64
MarginalRate float64
OvertimePay float64 // gross overtime wages (1.5x)
OvertimePremium float64 // deductible premium portion (0.5x)
Deduction float64 // allowable OBBBA deduction after cap + phase-out
EstimatedTaxSaved float64 // deduction x marginal rate (estimate)
FICAOnOvertime float64 // FICA still owed on overtime pay
}
Result is a full breakdown for a block of overtime work.