@trajectonomics/tax 0.2.0-alpha.0 → 0.2.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -0
- package/dist/{clamp-Bse4u0H-.mjs → clamp-CdcDymBJ.mjs} +52 -13
- package/dist/clamp-CdcDymBJ.mjs.map +1 -0
- package/dist/{clamp-BKG7kjVf.cjs → clamp-DWYNU1V8.cjs} +57 -12
- package/dist/clamp-DWYNU1V8.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/th/index.cjs +1069 -1
- package/dist/th/index.cjs.map +1 -1
- package/dist/th/index.d.cts +415 -1
- package/dist/th/index.d.mts +415 -1
- package/dist/th/index.mjs +1062 -2
- package/dist/th/index.mjs.map +1 -1
- package/dist/us/index.cjs +130 -28
- package/dist/us/index.cjs.map +1 -1
- package/dist/us/index.d.cts +21 -1
- package/dist/us/index.d.mts +21 -1
- package/dist/us/index.mjs +130 -29
- package/dist/us/index.mjs.map +1 -1
- package/package.json +2 -1
- package/dist/clamp-BKG7kjVf.cjs.map +0 -1
- package/dist/clamp-Bse4u0H-.mjs.map +0 -1
package/dist/us/index.d.cts
CHANGED
|
@@ -394,6 +394,7 @@ export declare enum UsStateField {
|
|
|
394
394
|
Surtax = "state.surtax",
|
|
395
395
|
SurtaxThreshold = "state.surtaxThreshold",
|
|
396
396
|
PhaseOutThreshold = "state.phaseOutThreshold",
|
|
397
|
+
PhaseOutReductionStep = "state.phaseOutReductionStep",
|
|
397
398
|
CreditsPersonal = "state.credits.personal",
|
|
398
399
|
CreditsDependent = "state.credits.dependent",
|
|
399
400
|
CreditsClaimedNonRefundable = "state.credits.claimedNonRefundable",
|
|
@@ -572,11 +573,15 @@ type UsStatePerStatus = Readonly<Record<UsFilingStatus, number>>;
|
|
|
572
573
|
/**
|
|
573
574
|
* Linear phase-out to zero: the allowed share falls from 1 to 0 as federal AGI rises from
|
|
574
575
|
* `start` to `start + width` (Maine standard deduction, 36 M.R.S. § 5124-C(2)).
|
|
576
|
+
*
|
|
577
|
+
* When `reductionStep` is set, the removed amount is rounded down to that multiple in major
|
|
578
|
+
* dollars before subtraction (South Carolina SCIAD, S.C. Code § 12-6-1140(15)(c)).
|
|
575
579
|
*/
|
|
576
580
|
interface UsStateLinearPhaseOut {
|
|
577
581
|
readonly kind: "linear";
|
|
578
582
|
readonly start: UsStatePerStatus;
|
|
579
583
|
readonly width: UsStatePerStatus;
|
|
584
|
+
readonly reductionStep?: number;
|
|
580
585
|
}
|
|
581
586
|
/**
|
|
582
587
|
* Stepped disallowance: `ratePerStep` of the amount is disallowed for each `step` dollars, or
|
|
@@ -603,6 +608,20 @@ interface UsStateTieredPhaseOut {
|
|
|
603
608
|
}
|
|
604
609
|
/** Statutory income-based reduction of a deduction or exemption. */
|
|
605
610
|
type UsStatePhaseOut = UsStateLinearPhaseOut | UsStateSteppedPhaseOut | UsStateTieredPhaseOut;
|
|
611
|
+
/**
|
|
612
|
+
* Verification levels for a state's 2026 parameter table, from the strongest to the weakest.
|
|
613
|
+
*
|
|
614
|
+
* - `unconfirmed`: neither an official document nor a matching secondary report was read.
|
|
615
|
+
* - `reported`: only secondary reports (news, vendor summaries) agree with the table.
|
|
616
|
+
* - `partial`: an official document confirms some figures (rates or amounts) but not all.
|
|
617
|
+
* - `official`: an official state document or enacted bill confirms every figure.
|
|
618
|
+
*
|
|
619
|
+
* Every level is recorded per state in `references/SOURCES.md` with the document URL and
|
|
620
|
+
* retrieval date.
|
|
621
|
+
*/
|
|
622
|
+
export declare const US_STATE_VERIFICATION_LEVELS: readonly ["official", "partial", "reported", "unconfirmed"];
|
|
623
|
+
/** How far a state's 2026 parameter table is verified against an official document. */
|
|
624
|
+
type UsStateVerification = (typeof US_STATE_VERIFICATION_LEVELS)[number];
|
|
606
625
|
/** Surtax threshold: one amount for every filing status, or an amount per filing status. */
|
|
607
626
|
type UsStateSurtaxThreshold = number | Readonly<Record<UsFilingStatus, number>>;
|
|
608
627
|
/** Optional millionaire or high-income surtax applied above a taxable-income threshold. */
|
|
@@ -624,6 +643,7 @@ interface UsStateParameters {
|
|
|
624
643
|
readonly surtax?: UsStateSurtax;
|
|
625
644
|
readonly standardDeductionPhaseOut?: UsStatePhaseOut;
|
|
626
645
|
readonly dependentExemptionPhaseOut?: UsStatePhaseOut;
|
|
646
|
+
readonly verification: UsStateVerification;
|
|
627
647
|
}
|
|
628
648
|
/**
|
|
629
649
|
* Consolidated statutory parameter table for all 50 US states and the District of Columbia
|
|
@@ -645,5 +665,5 @@ export declare const us: TaxSystem<UsTaxInput, "USD", UsTaxBreakdown>;
|
|
|
645
665
|
* @statute IRC § 1 et seq.; state individual income tax statutes for Tax Year 2026.
|
|
646
666
|
*/
|
|
647
667
|
export declare function calculateUsTax(input: UsTaxInput): TaxResult<"USD", UsTaxBreakdown>;
|
|
648
|
-
export { type UsAdjustmentsBreakdown, type UsAdjustmentsInput, type UsAmtBreakdown, type UsChildCreditsBreakdown, type UsCreditsBreakdown, type UsCreditsInput, type UsEducationCreditStudent, type UsEducationCreditsBreakdown, type UsEitcBreakdown, type UsFicaBreakdown, UsPayrollField as UsFicaField, type UsFilingStatus, type UsIncomeInput, type UsItemizedBreakdown, type UsItemizedDeductionsInput, type UsNiitBreakdown, type UsPreferentialSlice, type UsScheduleSeBreakdown, type UsStandardDeductionBreakdown, type UsStateBreakdown, type UsStateCode, type UsStateCreditsBreakdown, type UsStateCreditsInput, type UsStateParameters, type UsStateSurtax, type UsStateTaxType, type UsTaxBreakdown, type UsTaxInput };
|
|
668
|
+
export { type UsAdjustmentsBreakdown, type UsAdjustmentsInput, type UsAmtBreakdown, type UsChildCreditsBreakdown, type UsCreditsBreakdown, type UsCreditsInput, type UsEducationCreditStudent, type UsEducationCreditsBreakdown, type UsEitcBreakdown, type UsFicaBreakdown, UsPayrollField as UsFicaField, type UsFilingStatus, type UsIncomeInput, type UsItemizedBreakdown, type UsItemizedDeductionsInput, type UsNiitBreakdown, type UsPreferentialSlice, type UsScheduleSeBreakdown, type UsStandardDeductionBreakdown, type UsStateBreakdown, type UsStateCode, type UsStateCreditsBreakdown, type UsStateCreditsInput, type UsStateParameters, type UsStateSurtax, type UsStateTaxType, type UsStateVerification, type UsTaxBreakdown, type UsTaxInput };
|
|
649
669
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/us/index.d.mts
CHANGED
|
@@ -394,6 +394,7 @@ export declare enum UsStateField {
|
|
|
394
394
|
Surtax = "state.surtax",
|
|
395
395
|
SurtaxThreshold = "state.surtaxThreshold",
|
|
396
396
|
PhaseOutThreshold = "state.phaseOutThreshold",
|
|
397
|
+
PhaseOutReductionStep = "state.phaseOutReductionStep",
|
|
397
398
|
CreditsPersonal = "state.credits.personal",
|
|
398
399
|
CreditsDependent = "state.credits.dependent",
|
|
399
400
|
CreditsClaimedNonRefundable = "state.credits.claimedNonRefundable",
|
|
@@ -572,11 +573,15 @@ type UsStatePerStatus = Readonly<Record<UsFilingStatus, number>>;
|
|
|
572
573
|
/**
|
|
573
574
|
* Linear phase-out to zero: the allowed share falls from 1 to 0 as federal AGI rises from
|
|
574
575
|
* `start` to `start + width` (Maine standard deduction, 36 M.R.S. § 5124-C(2)).
|
|
576
|
+
*
|
|
577
|
+
* When `reductionStep` is set, the removed amount is rounded down to that multiple in major
|
|
578
|
+
* dollars before subtraction (South Carolina SCIAD, S.C. Code § 12-6-1140(15)(c)).
|
|
575
579
|
*/
|
|
576
580
|
interface UsStateLinearPhaseOut {
|
|
577
581
|
readonly kind: "linear";
|
|
578
582
|
readonly start: UsStatePerStatus;
|
|
579
583
|
readonly width: UsStatePerStatus;
|
|
584
|
+
readonly reductionStep?: number;
|
|
580
585
|
}
|
|
581
586
|
/**
|
|
582
587
|
* Stepped disallowance: `ratePerStep` of the amount is disallowed for each `step` dollars, or
|
|
@@ -603,6 +608,20 @@ interface UsStateTieredPhaseOut {
|
|
|
603
608
|
}
|
|
604
609
|
/** Statutory income-based reduction of a deduction or exemption. */
|
|
605
610
|
type UsStatePhaseOut = UsStateLinearPhaseOut | UsStateSteppedPhaseOut | UsStateTieredPhaseOut;
|
|
611
|
+
/**
|
|
612
|
+
* Verification levels for a state's 2026 parameter table, from the strongest to the weakest.
|
|
613
|
+
*
|
|
614
|
+
* - `unconfirmed`: neither an official document nor a matching secondary report was read.
|
|
615
|
+
* - `reported`: only secondary reports (news, vendor summaries) agree with the table.
|
|
616
|
+
* - `partial`: an official document confirms some figures (rates or amounts) but not all.
|
|
617
|
+
* - `official`: an official state document or enacted bill confirms every figure.
|
|
618
|
+
*
|
|
619
|
+
* Every level is recorded per state in `references/SOURCES.md` with the document URL and
|
|
620
|
+
* retrieval date.
|
|
621
|
+
*/
|
|
622
|
+
export declare const US_STATE_VERIFICATION_LEVELS: readonly ["official", "partial", "reported", "unconfirmed"];
|
|
623
|
+
/** How far a state's 2026 parameter table is verified against an official document. */
|
|
624
|
+
type UsStateVerification = (typeof US_STATE_VERIFICATION_LEVELS)[number];
|
|
606
625
|
/** Surtax threshold: one amount for every filing status, or an amount per filing status. */
|
|
607
626
|
type UsStateSurtaxThreshold = number | Readonly<Record<UsFilingStatus, number>>;
|
|
608
627
|
/** Optional millionaire or high-income surtax applied above a taxable-income threshold. */
|
|
@@ -624,6 +643,7 @@ interface UsStateParameters {
|
|
|
624
643
|
readonly surtax?: UsStateSurtax;
|
|
625
644
|
readonly standardDeductionPhaseOut?: UsStatePhaseOut;
|
|
626
645
|
readonly dependentExemptionPhaseOut?: UsStatePhaseOut;
|
|
646
|
+
readonly verification: UsStateVerification;
|
|
627
647
|
}
|
|
628
648
|
/**
|
|
629
649
|
* Consolidated statutory parameter table for all 50 US states and the District of Columbia
|
|
@@ -645,5 +665,5 @@ export declare const us: TaxSystem<UsTaxInput, "USD", UsTaxBreakdown>;
|
|
|
645
665
|
* @statute IRC § 1 et seq.; state individual income tax statutes for Tax Year 2026.
|
|
646
666
|
*/
|
|
647
667
|
export declare function calculateUsTax(input: UsTaxInput): TaxResult<"USD", UsTaxBreakdown>;
|
|
648
|
-
export { type UsAdjustmentsBreakdown, type UsAdjustmentsInput, type UsAmtBreakdown, type UsChildCreditsBreakdown, type UsCreditsBreakdown, type UsCreditsInput, type UsEducationCreditStudent, type UsEducationCreditsBreakdown, type UsEitcBreakdown, type UsFicaBreakdown, UsPayrollField as UsFicaField, type UsFilingStatus, type UsIncomeInput, type UsItemizedBreakdown, type UsItemizedDeductionsInput, type UsNiitBreakdown, type UsPreferentialSlice, type UsScheduleSeBreakdown, type UsStandardDeductionBreakdown, type UsStateBreakdown, type UsStateCode, type UsStateCreditsBreakdown, type UsStateCreditsInput, type UsStateParameters, type UsStateSurtax, type UsStateTaxType, type UsTaxBreakdown, type UsTaxInput };
|
|
668
|
+
export { type UsAdjustmentsBreakdown, type UsAdjustmentsInput, type UsAmtBreakdown, type UsChildCreditsBreakdown, type UsCreditsBreakdown, type UsCreditsInput, type UsEducationCreditStudent, type UsEducationCreditsBreakdown, type UsEitcBreakdown, type UsFicaBreakdown, UsPayrollField as UsFicaField, type UsFilingStatus, type UsIncomeInput, type UsItemizedBreakdown, type UsItemizedDeductionsInput, type UsNiitBreakdown, type UsPreferentialSlice, type UsScheduleSeBreakdown, type UsStandardDeductionBreakdown, type UsStateBreakdown, type UsStateCode, type UsStateCreditsBreakdown, type UsStateCreditsInput, type UsStateParameters, type UsStateSurtax, type UsStateTaxType, type UsStateVerification, type UsTaxBreakdown, type UsTaxInput };
|
|
649
669
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/us/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as usd, d as
|
|
1
|
+
import { a as usd, d as toMinorUnits, f as multiplySafeInteger, h as TaxValidationError, n as evaluateBrackets, p as validateMonetaryAmount, s as applyPercentage, t as clampCap, u as fromMinorUnits } from "../clamp-CdcDymBJ.mjs";
|
|
2
2
|
// src/us/parameters/amt.ts
|
|
3
3
|
/**
|
|
4
4
|
* Statutory 2026 Alternative Minimum Tax (AMT) exemptions, phaseouts, and rates.
|
|
@@ -423,6 +423,7 @@ let UsStateField = /* @__PURE__ */ function(UsStateField) {
|
|
|
423
423
|
UsStateField["Surtax"] = "state.surtax";
|
|
424
424
|
UsStateField["SurtaxThreshold"] = "state.surtaxThreshold";
|
|
425
425
|
UsStateField["PhaseOutThreshold"] = "state.phaseOutThreshold";
|
|
426
|
+
UsStateField["PhaseOutReductionStep"] = "state.phaseOutReductionStep";
|
|
426
427
|
UsStateField["CreditsPersonal"] = "state.credits.personal";
|
|
427
428
|
UsStateField["CreditsDependent"] = "state.credits.dependent";
|
|
428
429
|
UsStateField["CreditsClaimedNonRefundable"] = "state.credits.claimedNonRefundable";
|
|
@@ -513,6 +514,7 @@ function defineState(def) {
|
|
|
513
514
|
personalCredit: exemptionAmounts(personalCredit[0], personalCredit[1], personalCredit[2]),
|
|
514
515
|
dependentExemption: def.dependentExemption ?? 0,
|
|
515
516
|
dependentCredit: def.dependentCredit ?? 0,
|
|
517
|
+
verification: def.verification,
|
|
516
518
|
...optionalRules(def)
|
|
517
519
|
};
|
|
518
520
|
}
|
|
@@ -532,6 +534,7 @@ const FLAT_STATES_A = [
|
|
|
532
534
|
defineState({
|
|
533
535
|
code: "AZ",
|
|
534
536
|
name: "Arizona",
|
|
537
|
+
verification: "unconfirmed",
|
|
535
538
|
type: "flat",
|
|
536
539
|
single: [[0, .025]],
|
|
537
540
|
mfj: [[0, .025]],
|
|
@@ -545,6 +548,7 @@ const FLAT_STATES_A = [
|
|
|
545
548
|
defineState({
|
|
546
549
|
code: "CO",
|
|
547
550
|
name: "Colorado",
|
|
551
|
+
verification: "unconfirmed",
|
|
548
552
|
type: "flat",
|
|
549
553
|
single: [[0, .044]],
|
|
550
554
|
mfj: [[0, .044]],
|
|
@@ -553,6 +557,7 @@ const FLAT_STATES_A = [
|
|
|
553
557
|
defineState({
|
|
554
558
|
code: "GA",
|
|
555
559
|
name: "Georgia",
|
|
560
|
+
verification: "official",
|
|
556
561
|
type: "flat",
|
|
557
562
|
single: [[0, .0499]],
|
|
558
563
|
mfj: [[0, .0499]],
|
|
@@ -566,6 +571,7 @@ const FLAT_STATES_A = [
|
|
|
566
571
|
defineState({
|
|
567
572
|
code: "ID",
|
|
568
573
|
name: "Idaho",
|
|
574
|
+
verification: "reported",
|
|
569
575
|
type: "flat",
|
|
570
576
|
single: [[4811, .053]],
|
|
571
577
|
mfj: [[9622, .053]],
|
|
@@ -574,6 +580,7 @@ const FLAT_STATES_A = [
|
|
|
574
580
|
defineState({
|
|
575
581
|
code: "IL",
|
|
576
582
|
name: "Illinois",
|
|
583
|
+
verification: "reported",
|
|
577
584
|
type: "flat",
|
|
578
585
|
single: [[0, .0495]],
|
|
579
586
|
mfj: [[0, .0495]],
|
|
@@ -584,6 +591,7 @@ const FLAT_STATES_A = [
|
|
|
584
591
|
defineState({
|
|
585
592
|
code: "IN",
|
|
586
593
|
name: "Indiana",
|
|
594
|
+
verification: "reported",
|
|
587
595
|
type: "flat",
|
|
588
596
|
single: [[0, .0295]],
|
|
589
597
|
mfj: [[0, .0295]],
|
|
@@ -594,6 +602,7 @@ const FLAT_STATES_A = [
|
|
|
594
602
|
defineState({
|
|
595
603
|
code: "IA",
|
|
596
604
|
name: "Iowa",
|
|
605
|
+
verification: "official",
|
|
597
606
|
type: "flat",
|
|
598
607
|
single: [[0, .038]],
|
|
599
608
|
mfj: [[0, .038]],
|
|
@@ -607,6 +616,7 @@ const FLAT_STATES_B = [
|
|
|
607
616
|
defineState({
|
|
608
617
|
code: "KY",
|
|
609
618
|
name: "Kentucky",
|
|
619
|
+
verification: "official",
|
|
610
620
|
type: "flat",
|
|
611
621
|
single: [[0, .035]],
|
|
612
622
|
mfj: [[0, .035]],
|
|
@@ -619,6 +629,7 @@ const FLAT_STATES_B = [
|
|
|
619
629
|
defineState({
|
|
620
630
|
code: "MA",
|
|
621
631
|
name: "Massachusetts",
|
|
632
|
+
verification: "reported",
|
|
622
633
|
type: "flat",
|
|
623
634
|
single: [[0, .05]],
|
|
624
635
|
mfj: [[0, .05]],
|
|
@@ -637,6 +648,7 @@ const FLAT_STATES_B = [
|
|
|
637
648
|
defineState({
|
|
638
649
|
code: "MI",
|
|
639
650
|
name: "Michigan",
|
|
651
|
+
verification: "reported",
|
|
640
652
|
type: "flat",
|
|
641
653
|
single: [[0, .0425]],
|
|
642
654
|
mfj: [[0, .0425]],
|
|
@@ -647,6 +659,7 @@ const FLAT_STATES_B = [
|
|
|
647
659
|
defineState({
|
|
648
660
|
code: "MS",
|
|
649
661
|
name: "Mississippi",
|
|
662
|
+
verification: "unconfirmed",
|
|
650
663
|
type: "flat",
|
|
651
664
|
single: [[1e4, .04]],
|
|
652
665
|
mfj: [[1e4, .04]],
|
|
@@ -657,6 +670,7 @@ const FLAT_STATES_B = [
|
|
|
657
670
|
defineState({
|
|
658
671
|
code: "NC",
|
|
659
672
|
name: "North Carolina",
|
|
673
|
+
verification: "official",
|
|
660
674
|
type: "flat",
|
|
661
675
|
single: [[0, .0399]],
|
|
662
676
|
mfj: [[0, .0399]],
|
|
@@ -665,6 +679,7 @@ const FLAT_STATES_B = [
|
|
|
665
679
|
defineState({
|
|
666
680
|
code: "PA",
|
|
667
681
|
name: "Pennsylvania",
|
|
682
|
+
verification: "unconfirmed",
|
|
668
683
|
type: "flat",
|
|
669
684
|
single: [[0, .0307]],
|
|
670
685
|
mfj: [[0, .0307]],
|
|
@@ -673,6 +688,7 @@ const FLAT_STATES_B = [
|
|
|
673
688
|
defineState({
|
|
674
689
|
code: "UT",
|
|
675
690
|
name: "Utah",
|
|
691
|
+
verification: "official",
|
|
676
692
|
type: "flat",
|
|
677
693
|
single: [[0, .0445]],
|
|
678
694
|
mfj: [[0, .0445]],
|
|
@@ -689,6 +705,7 @@ const FLAT_STATES_B = [
|
|
|
689
705
|
const FLAT_STATES_C = [defineState({
|
|
690
706
|
code: "LA",
|
|
691
707
|
name: "Louisiana",
|
|
708
|
+
verification: "official",
|
|
692
709
|
type: "flat",
|
|
693
710
|
single: [[0, .03]],
|
|
694
711
|
mfj: [[0, .03]],
|
|
@@ -700,6 +717,7 @@ const FLAT_STATES_C = [defineState({
|
|
|
700
717
|
}), defineState({
|
|
701
718
|
code: "OH",
|
|
702
719
|
name: "Ohio",
|
|
720
|
+
verification: "partial",
|
|
703
721
|
type: "flat",
|
|
704
722
|
single: [[26050, .0275]],
|
|
705
723
|
mfj: [[26050, .0275]],
|
|
@@ -724,6 +742,7 @@ function noTaxState(code, name) {
|
|
|
724
742
|
return defineState({
|
|
725
743
|
code,
|
|
726
744
|
name,
|
|
745
|
+
verification: "official",
|
|
727
746
|
type: "none",
|
|
728
747
|
single: [[0, 0]],
|
|
729
748
|
mfj: [[0, 0]],
|
|
@@ -758,6 +777,7 @@ const NO_TAX_STATES = [
|
|
|
758
777
|
const US_2026_STATE_AL = defineState({
|
|
759
778
|
code: "AL",
|
|
760
779
|
name: "Alabama",
|
|
780
|
+
verification: "unconfirmed",
|
|
761
781
|
type: "progressive",
|
|
762
782
|
single: [
|
|
763
783
|
[0, .02],
|
|
@@ -785,14 +805,16 @@ const US_2026_STATE_AL = defineState({
|
|
|
785
805
|
/**
|
|
786
806
|
* 2026 Arkansas individual income tax parameters.
|
|
787
807
|
*
|
|
788
|
-
* Brackets from the DFA 2026 withholding formula (0% to $5,599, then 2%, 3%, 3.4%
|
|
789
|
-
* 3.
|
|
808
|
+
* Brackets from the DFA 2026 withholding formula now served (0% to $5,599, then 2%, 3%, 3.4%
|
|
809
|
+
* to $26,399 and 3.70% above), with the $2,470 deduction and the $29 per-exemption credit. The formula is a single-employee formula and prints no joint table, so the joint
|
|
810
|
+
* schedule the engine applies to married filers stays unconfirmed.
|
|
790
811
|
*
|
|
791
812
|
* @statute Ark. Code Ann. § 26-51-201
|
|
792
813
|
*/
|
|
793
814
|
const US_2026_STATE_AR = defineState({
|
|
794
815
|
code: "AR",
|
|
795
816
|
name: "Arkansas",
|
|
817
|
+
verification: "partial",
|
|
796
818
|
type: "progressive",
|
|
797
819
|
single: [
|
|
798
820
|
[5600, .02],
|
|
@@ -814,14 +836,17 @@ const US_2026_STATE_AR = defineState({
|
|
|
814
836
|
/**
|
|
815
837
|
* 2026 California individual income tax parameters.
|
|
816
838
|
*
|
|
817
|
-
* FTB 2026
|
|
818
|
-
* $491 per dependent)
|
|
839
|
+
* FTB 2026 rate schedules for all three filing statuses. The 2026 standard deduction
|
|
840
|
+
* ($5,900/$11,800) and exemption credits ($158/$316, $491 per dependent) are still the
|
|
841
|
+
* 2025 values x 1.034 because FTB has not published the 2026 index. 1% mental health services
|
|
842
|
+
* surtax above $1,000,000.
|
|
819
843
|
*
|
|
820
844
|
* @statute Cal. Rev. & Tax. Code § 17041
|
|
821
845
|
*/
|
|
822
846
|
const US_2026_STATE_CA = defineState({
|
|
823
847
|
code: "CA",
|
|
824
848
|
name: "California",
|
|
849
|
+
verification: "partial",
|
|
825
850
|
type: "progressive",
|
|
826
851
|
single: [
|
|
827
852
|
[0, .01],
|
|
@@ -877,6 +902,7 @@ const US_2026_STATE_CA = defineState({
|
|
|
877
902
|
const US_2026_STATE_CT = defineState({
|
|
878
903
|
code: "CT",
|
|
879
904
|
name: "Connecticut",
|
|
905
|
+
verification: "official",
|
|
880
906
|
type: "progressive",
|
|
881
907
|
single: [
|
|
882
908
|
[0, .02],
|
|
@@ -922,6 +948,7 @@ const US_2026_STATE_CT = defineState({
|
|
|
922
948
|
const US_2026_STATE_DC = defineState({
|
|
923
949
|
code: "DC",
|
|
924
950
|
name: "District of Columbia",
|
|
951
|
+
verification: "unconfirmed",
|
|
925
952
|
type: "progressive",
|
|
926
953
|
single: [
|
|
927
954
|
[0, .04],
|
|
@@ -956,6 +983,7 @@ const US_2026_STATE_DC = defineState({
|
|
|
956
983
|
const US_2026_STATE_DE = defineState({
|
|
957
984
|
code: "DE",
|
|
958
985
|
name: "Delaware",
|
|
986
|
+
verification: "unconfirmed",
|
|
959
987
|
type: "progressive",
|
|
960
988
|
single: [
|
|
961
989
|
[2e3, .022],
|
|
@@ -990,6 +1018,7 @@ const US_2026_STATE_DE = defineState({
|
|
|
990
1018
|
const US_2026_STATE_HI = defineState({
|
|
991
1019
|
code: "HI",
|
|
992
1020
|
name: "Hawaii",
|
|
1021
|
+
verification: "official",
|
|
993
1022
|
type: "progressive",
|
|
994
1023
|
single: [
|
|
995
1024
|
[0, .014],
|
|
@@ -1050,6 +1079,7 @@ const US_2026_STATE_HI = defineState({
|
|
|
1050
1079
|
const US_2026_STATE_KS = defineState({
|
|
1051
1080
|
code: "KS",
|
|
1052
1081
|
name: "Kansas",
|
|
1082
|
+
verification: "unconfirmed",
|
|
1053
1083
|
type: "progressive",
|
|
1054
1084
|
single: [[0, .052], [23e3, .0558]],
|
|
1055
1085
|
mfj: [[0, .052], [46e3, .0558]],
|
|
@@ -1070,6 +1100,7 @@ const US_2026_STATE_KS = defineState({
|
|
|
1070
1100
|
const US_2026_STATE_MD = defineState({
|
|
1071
1101
|
code: "MD",
|
|
1072
1102
|
name: "Maryland",
|
|
1103
|
+
verification: "official",
|
|
1073
1104
|
type: "progressive",
|
|
1074
1105
|
single: [
|
|
1075
1106
|
[0, .02],
|
|
@@ -1119,6 +1150,7 @@ const US_2026_STATE_MD = defineState({
|
|
|
1119
1150
|
const US_2026_STATE_ME = defineState({
|
|
1120
1151
|
code: "ME",
|
|
1121
1152
|
name: "Maine",
|
|
1153
|
+
verification: "official",
|
|
1122
1154
|
type: "progressive",
|
|
1123
1155
|
single: [
|
|
1124
1156
|
[0, .058],
|
|
@@ -1182,6 +1214,7 @@ const US_2026_STATE_ME = defineState({
|
|
|
1182
1214
|
const US_2026_STATE_MN = defineState({
|
|
1183
1215
|
code: "MN",
|
|
1184
1216
|
name: "Minnesota",
|
|
1217
|
+
verification: "official",
|
|
1185
1218
|
type: "progressive",
|
|
1186
1219
|
single: [
|
|
1187
1220
|
[0, .0535],
|
|
@@ -1252,6 +1285,7 @@ const US_2026_STATE_MN = defineState({
|
|
|
1252
1285
|
const US_2026_STATE_MO = defineState({
|
|
1253
1286
|
code: "MO",
|
|
1254
1287
|
name: "Missouri",
|
|
1288
|
+
verification: "official",
|
|
1255
1289
|
type: "progressive",
|
|
1256
1290
|
single: [
|
|
1257
1291
|
[1348, .02],
|
|
@@ -1282,6 +1316,7 @@ const US_2026_STATE_MO = defineState({
|
|
|
1282
1316
|
const US_2026_STATE_MT = defineState({
|
|
1283
1317
|
code: "MT",
|
|
1284
1318
|
name: "Montana",
|
|
1319
|
+
verification: "partial",
|
|
1285
1320
|
type: "progressive",
|
|
1286
1321
|
single: [[0, .047], [47500, .0565]],
|
|
1287
1322
|
mfj: [[0, .047], [95e3, .0565]],
|
|
@@ -1296,6 +1331,7 @@ const US_2026_STATE_MT = defineState({
|
|
|
1296
1331
|
const US_2026_STATE_ND = defineState({
|
|
1297
1332
|
code: "ND",
|
|
1298
1333
|
name: "North Dakota",
|
|
1334
|
+
verification: "unconfirmed",
|
|
1299
1335
|
type: "progressive",
|
|
1300
1336
|
single: [[48475, .0195], [244825, .025]],
|
|
1301
1337
|
mfj: [[80975, .0195], [298075, .025]],
|
|
@@ -1312,6 +1348,7 @@ const US_2026_STATE_ND = defineState({
|
|
|
1312
1348
|
const US_2026_STATE_NE = defineState({
|
|
1313
1349
|
code: "NE",
|
|
1314
1350
|
name: "Nebraska",
|
|
1351
|
+
verification: "unconfirmed",
|
|
1315
1352
|
type: "progressive",
|
|
1316
1353
|
single: [
|
|
1317
1354
|
[0, .0246],
|
|
@@ -1336,6 +1373,7 @@ const US_2026_STATE_NE = defineState({
|
|
|
1336
1373
|
const US_2026_STATE_NJ = defineState({
|
|
1337
1374
|
code: "NJ",
|
|
1338
1375
|
name: "New Jersey",
|
|
1376
|
+
verification: "unconfirmed",
|
|
1339
1377
|
type: "progressive",
|
|
1340
1378
|
single: [
|
|
1341
1379
|
[0, .014],
|
|
@@ -1370,6 +1408,7 @@ const US_2026_STATE_NJ = defineState({
|
|
|
1370
1408
|
const US_2026_STATE_NM = defineState({
|
|
1371
1409
|
code: "NM",
|
|
1372
1410
|
name: "New Mexico",
|
|
1411
|
+
verification: "unconfirmed",
|
|
1373
1412
|
type: "progressive",
|
|
1374
1413
|
single: [
|
|
1375
1414
|
[0, .015],
|
|
@@ -1401,6 +1440,7 @@ const US_2026_STATE_NM = defineState({
|
|
|
1401
1440
|
const US_2026_STATE_NY = defineState({
|
|
1402
1441
|
code: "NY",
|
|
1403
1442
|
name: "New York",
|
|
1443
|
+
verification: "partial",
|
|
1404
1444
|
type: "progressive",
|
|
1405
1445
|
single: [
|
|
1406
1446
|
[0, .039],
|
|
@@ -1452,6 +1492,7 @@ const US_2026_STATE_NY = defineState({
|
|
|
1452
1492
|
const US_2026_STATE_OK = defineState({
|
|
1453
1493
|
code: "OK",
|
|
1454
1494
|
name: "Oklahoma",
|
|
1495
|
+
verification: "unconfirmed",
|
|
1455
1496
|
type: "progressive",
|
|
1456
1497
|
single: [
|
|
1457
1498
|
[3750, .025],
|
|
@@ -1481,6 +1522,7 @@ const US_2026_STATE_OK = defineState({
|
|
|
1481
1522
|
const US_2026_STATE_OR = defineState({
|
|
1482
1523
|
code: "OR",
|
|
1483
1524
|
name: "Oregon",
|
|
1525
|
+
verification: "unconfirmed",
|
|
1484
1526
|
type: "progressive",
|
|
1485
1527
|
single: [
|
|
1486
1528
|
[0, .0475],
|
|
@@ -1512,6 +1554,7 @@ const US_2026_STATE_OR = defineState({
|
|
|
1512
1554
|
const US_2026_STATE_RI = defineState({
|
|
1513
1555
|
code: "RI",
|
|
1514
1556
|
name: "Rhode Island",
|
|
1557
|
+
verification: "unconfirmed",
|
|
1515
1558
|
type: "progressive",
|
|
1516
1559
|
single: [
|
|
1517
1560
|
[0, .0375],
|
|
@@ -1531,28 +1574,52 @@ const US_2026_STATE_RI = defineState({
|
|
|
1531
1574
|
/**
|
|
1532
1575
|
* 2026 South Carolina individual income tax parameters.
|
|
1533
1576
|
*
|
|
1534
|
-
*
|
|
1577
|
+
* Act 110 of 2026 (H.4216, ratified R 117, signed 2026-03-30) replaces the 0% / 3% / 6%
|
|
1578
|
+
* schedule with a 1.99% band to $30,000 and 5.21% above, expressed in the act as "5.21% times
|
|
1579
|
+
* the amount minus $966" (5.21% x 30,000 - 1.99% x 30,000 = 966, so the two bands meet at
|
|
1580
|
+
* $597). It also replaces the federal standard deduction with the South Carolina Income
|
|
1581
|
+
* Adjusted Deduction (SCIAD) of $15,000 single and separate, $22,500 head of household,
|
|
1582
|
+
* $30,000 joint, reduced by (federal AGI - start) / width and floored to $10.
|
|
1583
|
+
*
|
|
1584
|
+
* The $30,000 bracket is indexed under § 12-6-520 and the dependent exemption is indexed
|
|
1585
|
+
* annually; neither 2026 amount is published, so the $4,930 exemption is carried forward
|
|
1586
|
+
* without a 2026 source and the table is recorded as partial. The act also
|
|
1587
|
+
* raised the earned income tax credit to 125% of the federal credit capped at $200; no state
|
|
1588
|
+
* EITC is modelled in this engine.
|
|
1589
|
+
*
|
|
1590
|
+
* @statute S.C. Code §§ 12-6-510(C) (as amended by Act 110 of 2026), 12-6-1140(15)
|
|
1535
1591
|
*/
|
|
1592
|
+
/** Both filing-status axes share one table: the act taxes South Carolina taxable income the same way. */
|
|
1593
|
+
const SC_TIERS = [[0, .0199], [3e4, .0521]];
|
|
1536
1594
|
const US_2026_STATE_SC = defineState({
|
|
1537
1595
|
code: "SC",
|
|
1538
1596
|
name: "South Carolina",
|
|
1597
|
+
verification: "partial",
|
|
1539
1598
|
type: "progressive",
|
|
1540
|
-
single:
|
|
1541
|
-
|
|
1542
|
-
[3640, .03],
|
|
1543
|
-
[18230, .06]
|
|
1544
|
-
],
|
|
1545
|
-
mfj: [
|
|
1546
|
-
[0, 0],
|
|
1547
|
-
[3640, .03],
|
|
1548
|
-
[18230, .06]
|
|
1549
|
-
],
|
|
1599
|
+
single: SC_TIERS,
|
|
1600
|
+
mfj: SC_TIERS,
|
|
1550
1601
|
std: [
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1602
|
+
15e3,
|
|
1603
|
+
3e4,
|
|
1604
|
+
22500
|
|
1554
1605
|
],
|
|
1555
|
-
dependentExemption: 4930
|
|
1606
|
+
dependentExemption: 4930,
|
|
1607
|
+
standardDeductionPhaseOut: {
|
|
1608
|
+
kind: "linear",
|
|
1609
|
+
start: {
|
|
1610
|
+
single: 4e4,
|
|
1611
|
+
married_filing_jointly: 8e4,
|
|
1612
|
+
married_filing_separately: 4e4,
|
|
1613
|
+
head_of_household: 6e4
|
|
1614
|
+
},
|
|
1615
|
+
width: {
|
|
1616
|
+
single: 55e3,
|
|
1617
|
+
married_filing_jointly: 11e4,
|
|
1618
|
+
married_filing_separately: 55e3,
|
|
1619
|
+
head_of_household: 82500
|
|
1620
|
+
},
|
|
1621
|
+
reductionStep: 10
|
|
1622
|
+
}
|
|
1556
1623
|
});
|
|
1557
1624
|
// src/us/state/parameters/progressive/va.ts
|
|
1558
1625
|
/**
|
|
@@ -1563,6 +1630,7 @@ const US_2026_STATE_SC = defineState({
|
|
|
1563
1630
|
const US_2026_STATE_VA = defineState({
|
|
1564
1631
|
code: "VA",
|
|
1565
1632
|
name: "Virginia",
|
|
1633
|
+
verification: "reported",
|
|
1566
1634
|
type: "progressive",
|
|
1567
1635
|
single: [
|
|
1568
1636
|
[0, .02],
|
|
@@ -1593,6 +1661,7 @@ const US_2026_STATE_VA = defineState({
|
|
|
1593
1661
|
const US_2026_STATE_VT = defineState({
|
|
1594
1662
|
code: "VT",
|
|
1595
1663
|
name: "Vermont",
|
|
1664
|
+
verification: "unconfirmed",
|
|
1596
1665
|
type: "progressive",
|
|
1597
1666
|
single: [
|
|
1598
1667
|
[0, .0335],
|
|
@@ -1620,6 +1689,7 @@ const US_2026_STATE_VT = defineState({
|
|
|
1620
1689
|
const US_2026_STATE_WI = defineState({
|
|
1621
1690
|
code: "WI",
|
|
1622
1691
|
name: "Wisconsin",
|
|
1692
|
+
verification: "unconfirmed",
|
|
1623
1693
|
type: "progressive",
|
|
1624
1694
|
single: [
|
|
1625
1695
|
[0, .035],
|
|
@@ -1671,6 +1741,7 @@ const PROGRESSIVE_STATES = [
|
|
|
1671
1741
|
defineState({
|
|
1672
1742
|
code: "WV",
|
|
1673
1743
|
name: "West Virginia",
|
|
1744
|
+
verification: "official",
|
|
1674
1745
|
type: "progressive",
|
|
1675
1746
|
single: [
|
|
1676
1747
|
[0, .0211],
|
|
@@ -1693,6 +1764,24 @@ const PROGRESSIVE_STATES = [
|
|
|
1693
1764
|
}),
|
|
1694
1765
|
US_2026_STATE_WI
|
|
1695
1766
|
];
|
|
1767
|
+
// src/us/state/parameters/verification.ts
|
|
1768
|
+
/**
|
|
1769
|
+
* Verification levels for a state's 2026 parameter table, from the strongest to the weakest.
|
|
1770
|
+
*
|
|
1771
|
+
* - `unconfirmed`: neither an official document nor a matching secondary report was read.
|
|
1772
|
+
* - `reported`: only secondary reports (news, vendor summaries) agree with the table.
|
|
1773
|
+
* - `partial`: an official document confirms some figures (rates or amounts) but not all.
|
|
1774
|
+
* - `official`: an official state document or enacted bill confirms every figure.
|
|
1775
|
+
*
|
|
1776
|
+
* Every level is recorded per state in `references/SOURCES.md` with the document URL and
|
|
1777
|
+
* retrieval date.
|
|
1778
|
+
*/
|
|
1779
|
+
const US_STATE_VERIFICATION_LEVELS = [
|
|
1780
|
+
"official",
|
|
1781
|
+
"partial",
|
|
1782
|
+
"reported",
|
|
1783
|
+
"unconfirmed"
|
|
1784
|
+
];
|
|
1696
1785
|
// src/us/state/parameters/index.ts
|
|
1697
1786
|
/**
|
|
1698
1787
|
* Consolidated statutory parameter table for all 50 US states and the District of Columbia
|
|
@@ -2548,10 +2637,18 @@ function calculateUsStateCredits(taxBeforeCreditsCents, personalCreditCents, dep
|
|
|
2548
2637
|
function cents(amounts, status, currency) {
|
|
2549
2638
|
return toMinorUnits(amounts[status], currency, "state.phaseOutThreshold");
|
|
2550
2639
|
}
|
|
2640
|
+
function reductionStepCents(step, currency) {
|
|
2641
|
+
validateMonetaryAmount(step, "state.phaseOutReductionStep");
|
|
2642
|
+
const centsPerStep = toMinorUnits(step, currency, "state.phaseOutReductionStep");
|
|
2643
|
+
if (centsPerStep < 1) throw new TaxValidationError("state.phaseOutReductionStep", step, "Reduction step must be at least one minor unit");
|
|
2644
|
+
return centsPerStep;
|
|
2645
|
+
}
|
|
2551
2646
|
function linearReduction(amountCents, excessCents, rule, status, currency) {
|
|
2552
2647
|
const widthCents = cents(rule.width, status, currency);
|
|
2553
2648
|
if (excessCents >= widthCents) return amountCents;
|
|
2554
|
-
return Math.round(amountCents * excessCents / widthCents);
|
|
2649
|
+
if (rule.reductionStep === void 0) return Math.round(amountCents * excessCents / widthCents);
|
|
2650
|
+
const step = reductionStepCents(rule.reductionStep, currency);
|
|
2651
|
+
return Math.floor(amountCents * excessCents / (widthCents * step)) * step;
|
|
2555
2652
|
}
|
|
2556
2653
|
function steppedReduction(amountCents, excessCents, rule, status, currency) {
|
|
2557
2654
|
const steps = Math.ceil(excessCents / cents(rule.step, status, currency));
|
|
@@ -2567,12 +2664,15 @@ function tieredReduction(amountCents, agiCents, rule, status, currency) {
|
|
|
2567
2664
|
/**
|
|
2568
2665
|
* Applies a statutory income-based phase-out to a deduction or exemption.
|
|
2569
2666
|
*
|
|
2570
|
-
* Math: linear removes amount x (AGI - start) / width
|
|
2571
|
-
* amount for each step or fraction above start
|
|
2572
|
-
* rate x (AGI up to second - start) + secondRate x (AGI -
|
|
2573
|
-
* amount. Nothing is removed at or below the start
|
|
2574
|
-
*
|
|
2575
|
-
*
|
|
2667
|
+
* Math: linear removes amount x (AGI - start) / width, rounded down to any `reductionStep`
|
|
2668
|
+
* multiple; stepped removes ratePerStep of the amount for each step or fraction above start
|
|
2669
|
+
* (capped at 100%); tiered removes rate x (AGI up to second - start) + secondRate x (AGI -
|
|
2670
|
+
* second), capped at maxShare of the amount. Nothing is removed at or below the start
|
|
2671
|
+
* threshold.
|
|
2672
|
+
* Units: AGI and amounts are integer cents; thresholds and any reduction step are major dollars
|
|
2673
|
+
* converted to cents.
|
|
2674
|
+
* Throws: TaxValidationError if a threshold cannot be represented as safe integer cents, or if
|
|
2675
|
+
* a reduction step is negative or below one minor unit.
|
|
2576
2676
|
*
|
|
2577
2677
|
* @param amountCents Deduction or exemption before the phase-out, in integer cents.
|
|
2578
2678
|
* @param agiCents Federal adjusted gross income in integer cents.
|
|
@@ -2580,7 +2680,8 @@ function tieredReduction(amountCents, agiCents, rule, status, currency) {
|
|
|
2580
2680
|
* @param phaseOut Optional statutory phase-out rule.
|
|
2581
2681
|
* @param currency Supported statutory currency threaded for minor-unit conversion.
|
|
2582
2682
|
* @returns The amount still allowed after the phase-out, in integer cents.
|
|
2583
|
-
* @statute 36 M.R.S. § 5124-C(2); Minn. Stat. §§ 290.0121 subd. 2,
|
|
2683
|
+
* @statute 36 M.R.S. § 5124-C(2); S.C. Code § 12-6-1140(15); Minn. Stat. §§ 290.0121 subd. 2,
|
|
2684
|
+
* 290.0123 subd. 5.
|
|
2584
2685
|
*/
|
|
2585
2686
|
function applyUsStatePhaseOut(amountCents, agiCents, status, phaseOut, currency) {
|
|
2586
2687
|
if (!phaseOut) return amountCents;
|
|
@@ -2892,6 +2993,6 @@ const us = {
|
|
|
2892
2993
|
function calculateUsTax(input) {
|
|
2893
2994
|
return us.calculate(input);
|
|
2894
2995
|
}
|
|
2895
|
-
export { US_2026_ABOVE_THE_LINE_CAPS, US_2026_ADDITIONAL_STANDARD_DEDUCTION, US_2026_AMT, US_2026_CREDITS, US_2026_ITEMIZED, US_2026_NIIT, US_2026_ORDINARY_BRACKETS, US_2026_PARAMETERS, US_2026_PAYROLL, US_2026_PREFERENTIAL_BRACKETS, US_2026_STANDARD_DEDUCTION, US_2026_STATE_PARAMETERS, US_STATE_CODES, UsAdjustmentField, UsAmtField, UsCreditField, UsDeductionField, UsPayrollField as UsFicaField, UsPayrollField, UsIncomeField, UsStateField, UsTaxField, calculateUsTax, us };
|
|
2996
|
+
export { US_2026_ABOVE_THE_LINE_CAPS, US_2026_ADDITIONAL_STANDARD_DEDUCTION, US_2026_AMT, US_2026_CREDITS, US_2026_ITEMIZED, US_2026_NIIT, US_2026_ORDINARY_BRACKETS, US_2026_PARAMETERS, US_2026_PAYROLL, US_2026_PREFERENTIAL_BRACKETS, US_2026_STANDARD_DEDUCTION, US_2026_STATE_PARAMETERS, US_STATE_CODES, US_STATE_VERIFICATION_LEVELS, UsAdjustmentField, UsAmtField, UsCreditField, UsDeductionField, UsPayrollField as UsFicaField, UsPayrollField, UsIncomeField, UsStateField, UsTaxField, calculateUsTax, us };
|
|
2896
2997
|
|
|
2897
2998
|
//# sourceMappingURL=index.mjs.map
|