Skip to main content
QSBSCalc
Methodology

Methodology
and validation.

Every output the decoder produces is reproducible from the closed-form formulas on this page. The validation harness reproduces six fixtures to the cent on every release.

Last updated: May 11, 2026

Inputs

The decoder takes six inputs per issuance:

  • Issuance date (ISO yyyy-mm-dd)
  • Exit date (ISO yyyy-mm-dd)
  • Gross-asset value at issuance (USD)
  • Basis at issuance (USD)
  • Realized gain at exit (USD; negative = loss path)
  • State of residence at exit (2-letter code)
Rule-set

Rule-set selection

ruleSet = (issuanceDate > "2025-07-04") ? "post-OBBBA" : "pre-OBBBA"

The boundary is strict — stock issued on 2025-07-04 itself falls under pre-OBBBA per the statutory effective-date language ("issued after the date of enactment").

Hold tier

Hold tier

years = (exitDate − issuanceDate) / 365.25

Pre-OBBBA:

  • years ≥ 5 → 100% exclusion
  • years < 5 → 0% exclusion (consider §1045 rollover)

Post-OBBBA:

  • years ≥ 5 → 100%
  • 4 ≤ years < 5 → 75%
  • 3 ≤ years < 4 → 50%
  • years < 3 → 0% (§1045 candidate)
Issuer qualification

Issuer qualification

issuerQualifies = grossAssetAtIssuance ≤ ceiling
  • Pre-OBBBA ceiling = $50,000,000
  • Post-OBBBA ceiling = $75,000,000

If false, no §1202 exclusion is available regardless of hold period. The result card shows the "issuer-disqualified" verdict.

Per-issuer cap

Per-issuer cap

perIssuerCap = max(statutoryFixedCap, 10 × basis)
  • Pre-OBBBA fixed cap = $10,000,000
  • Post-OBBBA fixed cap = $15,000,000 (indexed for inflation annually starting 2027 — current implementation uses base $15M)
Eligible gain

Eligible gain

eligibleGain = min(gain, perIssuerCap)
overCapSlice = max(0, gain − eligibleGain)
Federal exclusion

Federal exclusion + tax

federalExclusion = eligibleGain × exclusionPct
partialUnexcluded = eligibleGain − federalExclusion
federalUnexcludedGain = partialUnexcluded + overCapSlice
federalTaxOnUnexcluded = (partialUnexcluded × 0.28) + (overCapSlice × (0.20 + 0.038))

The 28% rate applies only to the partial-exclusion slice of the in-cap gain (per §1202(a)). The over-cap slice is taxed at the baseline LTCG rate (20%) plus NIIT (3.8%) — not at 28%.

State overlay

State overlay

For each state, conformity ∈ { full, partial, decouple, no-tax }.

State add-back of the federal exclusion:

  • full → 0 (state honors federal 1:1)
  • partial → 0.5 × federalExclusion (PA/NJ approximation; per-state /states/[code] documents the exact rule)
  • decouple → 1.0 × federalExclusion (state taxes 100% of gain)
  • no-tax → 0 and topMarginalRate = 0
stateTaxable = federalUnexcludedGain + stateAddBack
stateTax = stateTaxable × topMarginalRate
Combined

Combined

combinedTax = federalTaxOnUnexcluded + stateTax
effectiveRate = combinedTax / gain
Portfolio

Portfolio aggregation

For multi-issuance portfolios, each row is computed independently with its own rule set, state, and hold tier. The aggregate is the simple sum across rows. effectiveRate at the portfolio level = combinedTax / sum(positive gains).

Validation harness

Validation harness

The decoder engine ships with a vitest test suite that reproduces six closed-form fixtures to the cent. The suite runs on every build via npm run test. The fixtures include:

  1. Pre-OBBBA, 5+ year hold, $8M gain in CA — full federal exclusion, 100% state add-back.
  2. Post-OBBBA, 4-year hold, $5M gain in TX — 75% tier, 28% on unexcluded, no state tax.
  3. Post-OBBBA, 5+ year hold, $30M gain in NY — capped at $15M, over-cap slice at baseline LTCG.
  4. High-basis founder: 10× basis ($30M) beats $15M fixed cap.
  5. Issuer disqualified: $90M gross assets exceeds $75M ceiling.
  6. Loss position routed to §1244.

What the decoder does not model

  • AMT interaction (§1202 has a permanent AMT-preference removal post-TCJA — not modeled because no preference applies).
  • State-specific QSBS overlays beyond conformity (e.g., Colorado's in-state small-business subtraction, Ohio's small-business-investor deduction).
  • Multi-jurisdiction state-residency questions (taxpayer who moved states mid-hold).
  • Partnership-level pass-through with §1202(g) holder-by-holder allocations.
  • Gift-transfer attribution (§1202(h)(2) tacked holding period for gifts).
  • Trust ownership and the §1202 grantor-trust rules.
  • Prior §1045 rollover history affecting current cap.
  • NIIT-related thresholds, MFJ split brackets, and additional Medicare tax interactions.

These are out-of-scope for the calculator-first decoder. Use a CPA or Enrolled Agent for any of them.