Raw schema
{
"type": "object",
"properties": {
"jurisdiction": {
"type": "string",
"enum": [
"il",
"va",
"ca",
"ny",
"pa"
]
},
"filingStatus": {
"type": "string",
"enum": [
"single",
"mfj",
"mfs",
"hoh",
"qss"
],
"description": "REQUIRED in practice: the federal filing status — drives the state bracket schedule, standard deduction column, and exemption structure. The filingJoint/filingHoh/filingHohOrQss booleans are legacy aliases; when filingStatus is present it wins."
},
"federalAGI": {
"type": "number",
"description": "federal Form 1040 line 11 (from compute_return, verbatim). REQUIRED for il/va/ca/ny — the composer refuses without it. NOT used by PA (class-based: pass the pa* class fields instead)."
},
"federalEITC": {
"$ref": "#/properties/federalAGI",
"description": "federal EIC, line 27a (from compute_return)"
},
"wages": {
"$ref": "#/properties/federalAGI",
"description": "federal line 1a wages (NY IT-201 line 1)"
},
"additions": {
"$ref": "#/properties/federalAGI",
"description": "total state additions to federal AGI (e.g. NY 414(h) A-104 + IRC-125 A-101; VA Schedule ADJ line 2 codes). GATE RULE: coded addition/subtraction line-item arrays sitting under a false 'do you have additions/subtractions' boolean are inactive template rows (especially $1-$4 placeholder amounts) — transcribe $0 for them and disclose; the gate controls for these arrays"
},
"subtractions": {
"$ref": "#/properties/federalAGI",
"description": "total state subtractions OTHER than the automatic ones (taxable social security / unemployment have their own inputs below; e.g. NY S-136 alimony paid, IL retirement subtraction)"
},
"exemptions": {
"type": "integer",
"description": "personal + dependent exemption COUNT (self + spouse + dependents)"
},
"ageOrBlindBoxes": {
"type": "integer",
"description": "count of age-65+/blind boxes checked (taxpayer/spouse, per box)"
},
"dependents": {
"type": "integer",
"description": "dependent count (CA dependent exemption credits; NY $1,000 exemptions)"
},
"stateWithholding": {
"$ref": "#/properties/federalAGI",
"description": "state income tax withheld (IL line 25 / VA 19a / CA 71 / NY 72). CONVENTIONS: IL line 25 sums state withholding from EVERY document (W-2s + all 1099s). NY line 72 = W-2 box 17 NYS withholding PLUS NY-coded state withholding from 1099s whose PAYER has an in-state (NY) address; NY-coded withholding printed by an OUT-OF-STATE-addressed payer is NOT included; disclose any excluded amount in notes. VA 19a = the PRIMARY taxpayer's withholding from EVERY document type (W-2, 1099, VK-1 — Form 760 line 19 instructions name all three; the payer's address does NOT matter for VA, unlike NY); a jointly-issued document's state withholding splits 50/50 between 19a/19b with the odd dollar to the primary."
},
"spouseStateWithholding": {
"$ref": "#/properties/federalAGI",
"description": "VA line 19b spouse withholding (spouse's own W-2/1099/VK-1 boxes + spouse's half of jointly-issued documents' withholding, odd dollar to the primary)"
},
"cityWithholding": {
"$ref": "#/properties/federalAGI",
"description": "NY line 73 NYC withholding"
},
"yonkersWithholding": {
"$ref": "#/properties/federalAGI",
"description": "NY line 74 Yonkers withholding (W-2 box 19 with a Yonkers locality)"
},
"estimatedPayments": {
"$ref": "#/properties/federalAGI",
"description": "state estimated payments ONLY (extension payments and prior-year credited overpayments have their own lines where the form provides them)"
},
"priorYearOverpaymentCredited": {
"$ref": "#/properties/federalAGI",
"description": "prior-year state overpayment applied toward this year's estimated tax. VA 760 line 21 (its own printed line — never fold into line 20 estimated payments). Other states: folded into the estimated-payments line."
},
"extensionPayment": {
"$ref": "#/properties/federalAGI",
"description": "payment made with an extension request. VA 760 line 22 (its own line, never folded into the estimated-payments line). NY IT-201 line 75 is the COMBINED line — 'estimated tax payments and amount paid with Form IT-370' — so for NY this is added into the same line as estimatedPayments, not kept separate."
},
"taxableSocialSecurity": {
"$ref": "#/properties/federalAGI",
"description": "federally TAXABLE social security (Form 1040 line 6b, from compute_return). REQUIRED whenever nonzero: VA (760 line 5 subtraction), CA (Schedule CA line 6 col B), and NY (IT-201 line 27) all subtract it — the composer applies the subtraction automatically; do NOT also fold it into the generic subtractions total."
},
"unemploymentCompensation": {
"$ref": "#/properties/federalAGI",
"description": "unemployment compensation included in federal AGI (Schedule 1 line 7). REQUIRED whenever nonzero: VA fully subtracts it (Va. Code § 58.1-322.02(9), Schedule ADJ) and CA excludes it (Schedule CA line 7 col B) — the composer subtracts automatically for those states; do NOT also fold it into the generic subtractions total. IL and NY tax it (no subtraction)."
},
"claimedAsDependent": {
"type": "boolean",
"description": "someone else can claim this taxpayer as a dependent (carry the prior-year 1040 'Someone can claim: You as a dependent' checkbox forward as a continuing condition unless the current-year interview contradicts it). IL: zeroes the line 10 exemption allowance when base income exceeds the exemption amount. VA: limits the standard deduction to earned income."
},
"useTax": {
"$ref": "#/properties/federalAGI",
"description": "consumer use / sales-use tax owed on the return"
},
"nonrefundableCredits": {
"$ref": "#/properties/federalAGI",
"description": "state NONREFUNDABLE credits without an oracle target — capped at the state tax due by the composer (an excess never creates a refund). VA: do NOT put the low-income credit or any VA EITC election here — passing it forces a legacy capped path; instead pass federalEITC (+ vaFamilyVagi if testing the low-income credit) and the composer computes and SELECTS the Form 760 line 23 credit itself (TY2025 refundable VA EITC = 20% of federal EIC, uncapped — it dominates whenever federal EITC > 0). IL: pass ICR raw inputs instead where fields exist."
},
"refundableCredits": {
"$ref": "#/properties/federalAGI",
"description": "state refundable credits, e.g. the NY credit block: ESCC + NYS EIC + IT-216 + NYC EIC + NYC school tax + NYC child care (WITHOUT their own oracle target, self-computed per the us.ny.parameters citation and disclosed) PLUS us.ny.it214 (the Real Property Tax Credit, which DOES have an oracle target as of TY2025 v5 — pass its computed answer here, not a hand-derived percentage of rent)"
},
"ilPropertyTaxPaid": {
"$ref": "#/properties/federalAGI",
"description": "IL property tax on principal residence, net of business-use portion"
},
"ilK12Expenses": {
"$ref": "#/properties/federalAGI",
"description": "IL qualified K-12 education expenses (before the $250 floor)"
},
"ilTeacherExpenses": {
"$ref": "#/properties/federalAGI",
"description": "IL Schedule 1299-C educator materials expenses"
},
"ilChildUnder12": {
"type": "boolean",
"description": "IL CTC gate: a QUALIFYING CHILD (§ 152(c) lineage — child/stepchild/foster/sibling or their descendants) under age 12. A qualifying-relative/ODC-only dependent does NOT satisfy this even if under 12; leave false."
},
"ilEitcOverride": {
"$ref": "#/properties/federalAGI",
"description": "us.il.eitc oracle target's answer (35 ILCS 5/212(a)(vi), (b-5), (b-10): 20% of the federal EITC recomputed WITHOUT the § 32(c)(1)(A)(ii) childless age gate) — WINS over the generic 20%-of-federalEITC line-29 computation when present. MUST be used (not merely optional) for a taxpayer age 18-24 or 65+ with NO qualifying children: federalEITC alone is correctly $0 for that population under federal law, so line 29 = 20% x federalEITC would wrongly zero out Illinois' decoupled credit — pass us.il.eitc's computed answer instead. Safe to pass for every IL EITC claimant (agrees with the generic computation outside the decoupled population)."
},
"vaAgeDeduction": {
"$ref": "#/properties/federalAGI",
"description": "OVERRIDE ONLY — pass vaAgeQualifyingFull/vaAgeQualifyingTested instead and the composer computes the age deduction itself (including the AFAGI social-security exclusion agents routinely miss). When splitting an odd joint total between spouses (Form 760 lines 4a/4b), the odd dollar goes to the SPOUSE."
},
"vaAgeQualifyingFull": {
"type": "integer",
"description": "count of filers (taxpayer/spouse) born ON OR BEFORE January 1, 1939 — each gets the UNCONDITIONAL $12,000 age deduction (no income test)"
},
"vaAgeQualifyingTested": {
"type": "integer",
"description": "count of filers born January 2, 1939 - January 1, 1961 (65+ for 2025 but income-tested): the composer computes $12,000 each, reduced dollar-for-dollar by AFAGI over $50,000 single / $75,000 married — where AFAGI = federal AGI MINUS the federally taxable social security (the SS exclusion is the step agents miss; Va. Code § 58.1-322.03(2))"
},
"vaRefundableEitc": {
"$ref": "#/properties/federalAGI",
"description": "OVERRIDE ONLY — the composer now computes the Form 760 line 23 credit itself from federalEITC + the eligibility inputs below. If passed, this refundable amount wins over the computed selection."
},
"vaSpouseTaxAdjustment": {
"$ref": "#/properties/federalAGI",
"description": "OVERRIDE ONLY — the composer now computes the VA Spouse Tax Adjustment worksheet itself when vaYourVagi/vaSpouseVagi are provided. If passed, this amount wins."
},
"vaYourVagi": {
"$ref": "#/properties/federalAGI",
"description": "PRIMARY taxpayer's separate VAGI (MFJ only — the 760 instructions' 'Worksheet for Determining Separate Virginia Adjusted Gross Income': own wages/SE/pensions, own share of joint items 50/50, own age deduction and subtractions). Enables the composer's Spouse Tax Adjustment worksheet (Form 760 line 17). vaYourVagi + vaSpouseVagi must equal line 9 VAGI."
},
"vaSpouseVagi": {
"$ref": "#/properties/federalAGI",
"description": "spouse's separate VAGI for the STA worksheet (Form 760 line 17 box; MFJ only)"
},
"vaYourAgeBlindBoxes": {
"type": "integer",
"description": "STA worksheet Part 1 line 2: PRIMARY taxpayer's 65+/blind box count (0-2) — per-spouse exemption = boxes x $800 + $930"
},
"vaSpouseAgeBlindBoxes": {
"type": "integer",
"description": "STA worksheet Part 1 line 2: spouse's 65+/blind box count (0-2)"
},
"vaFamilyVagi": {
"$ref": "#/properties/federalAGI",
"description": "Schedule ADJ line 10 total family VAGI (you + spouse + dependents' VAGI) for the Credit for Low-Income Individuals poverty test; defaults to line 9 VAGI when omitted"
},
"vaItemizing": {
"type": "boolean",
"description": "taxpayer itemized federally (VA requires the same election, Va. Code § 58.1-322.03(1)) — enables the VA Schedule A computation from the component inputs below; Form 760 line 10 replaces the line 11 standard deduction"
},
"vaItemizedMedical": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A line 1: total medical/dental expenses BEFORE any floor (VA applies its own 10%-of-FAGI floor — Virginia deconforms from the federal 7.5% floor)"
},
"vaItemizedStateLocalIncomeTaxes": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A line 5a when INCOME taxes are claimed (mutually exclusive with sales taxes)"
},
"vaItemizedSalesTaxes": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A line 5a when the general SALES tax election was made federally — capped at the Virginia SALT cap ($40,000; $20,000 MFS for TY2025)"
},
"vaItemizedRealEstateTaxes": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A line 5b real estate taxes — NOT subject to the SALT cap for Virginia"
},
"vaItemizedPersonalPropertyTaxes": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A line 5c personal property taxes — NOT subject to the SALT cap for Virginia"
},
"vaItemizedOtherTaxes": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A line 6 other taxes (foreign income tax etc.)"
},
"vaItemizedMortgageInterest": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A home mortgage interest and points (federal Schedule A amount)"
},
"vaItemizedInvestmentInterest": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A investment interest (protected from the overall limitation)"
},
"vaItemizedCharitable": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A charitable contributions (federal Schedule A amount)"
},
"vaItemizedCasualty": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A casualty/theft losses (protected from the overall limitation)"
},
"vaItemizedGambling": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A gambling losses (§ 165(d), limited to winnings; protected from the overall limitation)"
},
"vaItemizedOther": {
"$ref": "#/properties/federalAGI",
"description": "VA Sch A other itemized deductions"
},
"vaScheduleAdjDeductions": {
"$ref": "#/properties/federalAGI",
"description": "Schedule ADJ line 9 total deductions (deduction CODES like 105 continuing-teacher-education, 199 other) — prints on Form 760 line 13; these are DEDUCTIONS from VAGI, never income subtractions on line 7"
},
"caCalEITC": {
"$ref": "#/properties/federalAGI",
"description": "us.ca.caleitc result (pass the oracle target's answer)"
},
"caYCTC": {
"$ref": "#/properties/federalAGI",
"description": "us.ca.yctc result (pass the oracle target's answer)"
},
"caItemizedDeductions": {
"$ref": "#/properties/federalAGI",
"description": "CA itemized deduction total (Schedule CA Part II, line 29) — agent-computed per Schedule CA's own itemized rules WITH disclosure (differs from the federal Schedule A: no SALT cap, mortgage/medical add-backs, etc.). Form 540 line 18 takes the GREATER of this or the CA standard deduction; omit to use the standard deduction only."
},
"caRentersCredit": {
"$ref": "#/properties/federalAGI",
"description": "us.ca.renters_credit result (pass the oracle target's answer) — nonrefundable, joins the exemption credits in the line-48 subtraction from tax."
},
"caAmt": {
"$ref": "#/properties/federalAGI",
"description": "OVERRIDE for Form 540 line 61 — prefer caIsoPreference + caAmtTaxesAddback so the composer builds Schedule P AMTI and evaluates us.ca.amt itself; a passed caAmt wins."
},
"caBhst": {
"$ref": "#/properties/federalAGI",
"description": "us.ca.bhst result (pass the oracle target's answer) — Form 540 line 62 Behavioral Health Services Tax (R&TC § 17043, 1% of CA taxable income over $1,000,000); added into line 64 total tax when nonzero."
},
"caEducatorExpensesDeducted": {
"$ref": "#/properties/federalAGI",
"description": "federal educator-expense deduction claimed (§ 62(a)(2)(D)) — California does NOT conform: the composer ADDS it back on Schedule CA (line 11 col C). Pass the federal amount actually deducted (both spouses' combined)."
},
"caHsaDeduction": {
"$ref": "#/properties/federalAGI",
"description": "federal HSA deduction (Form 8889 line 13) — California does not conform to § 223: the composer ADDS it back for CA"
},
"caHsaTaxableDistribution": {
"$ref": "#/properties/federalAGI",
"description": "HSA distribution amount taxed federally (Form 8889 line 16) — not income for California: the composer SUBTRACTS it for CA"
},
"caAb5GrossIncomeAddition": {
"$ref": "#/properties/federalAGI",
"description": "gross income from businesses where the worker is classified as an EMPLOYEE for California (AB 5/Dynamex reclassification; the intake's ca_form540_schca.add_gross_income field) — Schedule CA WAGE addition, col C"
},
"caAb5NetLossAddition": {
"$ref": "#/properties/federalAGI",
"description": "net losses from businesses where the worker is an employee for California (intake ca_form540_schca.add_net_loss) — the federal Schedule C loss is disallowed for CA: Schedule CA BUSINESS addition, col C"
},
"caDepreciationAddition": {
"$ref": "#/properties/federalAGI",
"description": "CA depreciation-difference addition: federal depreciation (with § 168(k) bonus, which California NEVER conforms to) minus CA depreciation (plain MACRS on the same asset). Positive = CA income addition (Schedule CA col C on the business/rents line). Compute per-asset and disclose."
},
"caTaxableEarlyDistribution": {
"$ref": "#/properties/federalAGI",
"description": "retirement-plan early distribution amount subject to the FEDERAL § 72(t) additional tax — California imposes its own 2.5% additional tax on the same base (R&TC § 17085(c)(1), FTB 3805P); the composer computes 2.5% and prints it on Form 540 line 63"
},
"caIsoPreference": {
"$ref": "#/properties/federalAGI",
"description": "ISO exercise spread AMT preference (§ 56(b)(3) as modified by R&TC § 17062) — with caAmtTaxesAddback this lets the composer BUILD Schedule P AMTI itself (AMTI = line 19 taxable income + taxes deducted in the CA itemized deduction + this preference; standard deduction added back instead when not itemizing) and evaluate us.ca.amt internally; caAmt (a precomputed answer) wins if both are given"
},
"caAmtTaxesAddback": {
"$ref": "#/properties/federalAGI",
"description": "taxes actually included in the CA itemized deduction (property taxes etc. surviving the Schedule CA SALT adjustments) — the Schedule P line 2 addback used when the composer builds AMTI from caIsoPreference; $0 when not itemizing (the composer adds back the standard deduction instead)"
},
"nyHouseholdCredit": {
"$ref": "#/properties/federalAGI",
"description": "NYS household credit from table 2 (us.ny.parameters citation)"
},
"nycTaxableIncome": {
"$ref": "#/properties/federalAGI",
"description": "NYC taxable income (IT-201 line 47) if NYC resident"
},
"nycHouseholdCredit": {
"$ref": "#/properties/federalAGI",
"description": "NYC household credit from table 5"
},
"yonkersSurcharge": {
"$ref": "#/properties/federalAGI",
"description": "us.ny.yonkers_surcharge result (pass the oracle target's answer) — 16.75% of the Yonkers worksheet's netted base (nyYonkersBase). Added into line 62's total and printed on its own line (IT-201 LINE 55, not 54 — line 54 is MCTMT) when nonzero."
},
"paGrossCompensation": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 1a: W-2 BOX 16 total (NOT Box 1 — 401(k)/elective deferrals are PA-taxable; eligible retirement distributions are exempt and excluded). Falls back to the shared wages input when omitted (composer discloses). Include taxable early-distribution amounts under the cost-recovery method."
},
"paUnreimbursedExpenses": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 1b: Schedule UE unreimbursed employee business expenses (a compensation-class expense, never a line-10 deduction)"
},
"paInterest": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 2: PA-taxable interest (gross class — no expenses; includes commercial-annuity interest taxable as PA interest)"
},
"paDividends": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 3: PA-taxable dividends INCLUDING mutual-fund capital-gain distributions (PA classifies them as dividends, not gains)"
},
"paBusinessNet": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 4, TAXPAYER's own net business/profession/farm income or LOSS (negative allowed; within-class netting of the taxpayer's own activities only — a loss never crosses classes or spouses)"
},
"paSpouseBusinessNet": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 4, SPOUSE's own net business income or loss (kept separate: PA never nets one spouse's loss against the other's income)"
},
"paPropertyNet": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 5, taxpayer's own net gain/loss from sale/exchange/disposition of property (negative allowed; no carryover)"
},
"paSpousePropertyNet": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 5, spouse's own net property gain/loss"
},
"paRentRoyaltyNet": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 6, taxpayer's own net rents/royalties/patents/copyrights (short-term rentals under 30 days are BUSINESS income, line 4)"
},
"paSpouseRentRoyaltyNet": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 6, spouse's own net rent/royalty amount"
},
"paEstateTrust": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 7: estate/trust income (PA Schedule J; an estate or trust cannot distribute a loss — never negative)"
},
"paGambling": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 8: gambling and lottery winnings net of wager costs (noncash PA Lottery prizes exempt; cash prizes taxable)"
},
"paStudentLoanInterest": {
"$ref": "#/properties/federalAGI",
"description": "Schedule O code S: student loan interest PAID (new deduction for 2025; the composer caps at $2,500 — pass the uncapped amount)"
},
"pa529Contributions": {
"$ref": "#/properties/federalAGI",
"description": "Schedule O code T: § 529 contributions, ALREADY capped at $19,000 per beneficiary per taxpayer-spouse (2025); no deduction for rollovers/beneficiary changes"
},
"paAbleContributions": {
"$ref": "#/properties/federalAGI",
"description": "Schedule O code A: PA ABLE contributions, capped at the federal gift-tax exclusion ($19,000 for 2025)"
},
"paMsaHsaContributions": {
"$ref": "#/properties/federalAGI",
"description": "Schedule O codes M/H: MSA + HSA contributions at the federally-allowed amounts"
},
"paSpDependentChildren": {
"type": "integer",
"description": "Schedule SP dependent CHILDREN count (child/stepchild/adopted; grandchild of a grandparent; foster child of a foster parent — never other relatives) claimable as federal dependents; each adds $9,500 to the Tax Forgiveness eligibility-income threshold"
},
"paEligibilityAddbacks": {
"$ref": "#/properties/federalAGI",
"description": "Schedule SP Section III nontaxable add-backs (gifts, inheritances, insurance proceeds, non-PA income, nontaxable military pay, excluded home-sale gain, educational assistance, outside cash support). NOT Social Security, eligible retirement benefits, child support, or workers' comp."
},
"paResidentCredit": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 22: resident credit for tax paid other states (Schedule G-L; not for reciprocal-state compensation: IN/MD/NJ/OH/VA/WV). Subtracts BEFORE Tax Forgiveness — the composer handles the ordering."
},
"paScheduleDcCredit": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 23 component: the Child and Dependent Care Enhancement credit — pass us.pa.cdcc's computed answer (= 100% of the federal Form 2441 line 9a tentative credit; refundable)"
},
"paScheduleOcCredits": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 23 component: Schedule OC restricted credits total (transcribed; no oracle target)"
},
"paNrk1Withholding": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 17: nonresident tax withheld from PA Schedule(s) NRK-1"
},
"paPenaltiesInterest": {
"$ref": "#/properties/federalAGI",
"description": "PA-40 line 27: penalties and interest incl. estimated-underpayment penalty (REV-1630)"
},
"asOf": {
"type": "string",
"description": "year-end date, e.g. 2025-12-31 — REQUIRED"
},
"filingJoint": {
"type": "boolean"
},
"filingHoh": {
"type": "boolean"
},
"filingHohOrQss": {
"type": "boolean"
}
},
"required": [
"jurisdiction",
"asOf"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}