overtimetax

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2026 License: MIT Imports: 1 Imported by: 0

README

overtimetax

A small, dependency-free Go library for U.S. overtime pay and the federal "No Tax on Overtime" deduction introduced by the One Big Beautiful Bill Act (OBBBA, Public Law 119-21) for tax years 2025–2028.

It computes:

  • FLSA Section 7 overtime pay at time-and-a-half, and the qualified overtime premium (the extra half-rate portion OBBBA makes deductible);
  • the above-the-line overtime deduction, 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);
  • FICA (Social Security + Medicare) still owed on overtime, since the OBBBA provision is an income-tax deduction only.

Statutory parameters follow IRS Fact Sheet FS-2025-03.

Install

go get github.com/theluckystrike/overtimetax

Usage

package main

import (
	"fmt"

	"github.com/theluckystrike/overtimetax"
)

func main() {
	r := overtimetax.Estimate(50, 400, overtimetax.Single, 90000, 0.22)
	fmt.Printf("overtime pay:    $%.2f\n", r.OvertimePay)
	fmt.Printf("deductible prem: $%.2f\n", r.OvertimePremium)
	fmt.Printf("OBBBA deduction: $%.2f\n", r.Deduction)
	fmt.Printf("est. tax saved:  $%.2f\n", r.EstimatedTaxSaved)
	fmt.Printf("FICA on OT:      $%.2f\n", r.FICAOnOvertime)
}

Reference

Interactive calculator and worked examples: https://noovertimetax.com/

Disclaimer

Estimated dollar savings equal the deduction used times the filer's marginal rate and are illustrative only — not tax advice.

License

MIT

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

View Source
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).

View Source
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

func EstimatedTaxSavings(deductionUsed, marginalRate float64) float64

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

func FICAOnOvertime(overtimePay float64) float64

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

func OvertimePay(regularRate, overtimeHours float64) float64

OvertimePay returns total gross pay for overtime hours at time-and-a-half.

func OvertimePayRate

func OvertimePayRate(regularRate float64) float64

OvertimePayRate returns the FLSA overtime hourly rate (1.5x regular).

func OvertimePremium

func OvertimePremium(regularRate, overtimeHours float64) float64

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.

func Estimate

func Estimate(regularRate, overtimeHours float64, status FilingStatus, magi, marginalRate float64) Result

Estimate computes a complete overtime and OBBBA-deduction breakdown.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL