Debt-to-Income Calculator
calculate_debt_to_incomeCalculation, not advice. Verify with a professional before acting. Calculate your debt-to-income ratio and check qualification for conventional, FHA, VA, and USDA mortgage programs. Accepts existing debts and an optional proposed new debt or home price. Returns current DTI, front-end and back-end ratios with proposed housing, maximum affordable home price, and what-if scenarios showing the resulting DTI and which programs would then qualify if a given debt were paid off, plus income-increase and home-price-reduction variants. Includes the 10-month rule (Fannie Mae) for debts near payoff. qualification..qualification_status is a tri-state verdict ('qualifies' | 'underwriting_dependent' | 'ineligible'): 'underwriting_dependent' means the manual-underwriting baseline is exceeded but further underwriting may still approve it, an automated-underwriting system for conventional and FHA, either automated or manual underwriting for USDA, or a supervisory underwriter's written justification under 38 CFR 36.4340(c)(2) for VA (never an automated decision), so qualification..qualifies=false does NOT by itself mean the borrower is blocked. Read qualification_status, not the bare qualifies boolean, for the real answer; qualification..note explains the specific underwriting or hard-cap context, naming which mechanism applies. VA's back-end overage alone never returns 'ineligible' either (38 CFR 36.4340(c)(2)/(c)(3) both contemplate approval above 41%), and conventional is now the only program that ever returns 'ineligible', since FHA, VA and USDA are each disclosure-only above their baselines.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| toolArguments | Yes | JSON object with these parameters: gross_monthly_income: decimal > 0 (REQUIRED; OR provide annual_income instead) annual_income: decimal > 0 (alternative to gross_monthly_income; divided by 12) additional_income: decimal >= 0 (optional, default 0; side income, rental income, bonuses. Monthly.) existing_debts: array of debt objects (optional, can be empty): - name: string (optional label, e.g. 'Car Loan') - type: 'auto' | 'student' | 'credit_card' | 'personal' | 'mortgage' | 'heloc' | 'child_support' | 'other' - monthly_payment: decimal > 0 (REQUIRED per debt) - balance: decimal (optional; for payoff cost analysis in what-if scenarios) - apr_pct: decimal 0-100 as PERCENTAGE (optional) - months_remaining: int (optional; used for 10-month rule exclusion) proposed_debt: object (optional; OR use proposed_home_price instead): - name: string (optional) - type: 'auto' | 'student' | 'credit_card' | 'personal' | 'mortgage' | 'heloc' | 'child_support' | 'other' (optional, default 'mortgage') - monthly_payment: decimal > 0 (REQUIRED) - includes_tax_insurance: bool (optional, default true; if false and type is mortgage, warns that lenders use PITI) proposed_home_price: decimal > 0 (optional; auto-calculates full PITI. Cannot combine with proposed_debt.) proposed_down_payment_pct: decimal 0-99.9 as PERCENTAGE (optional, default 20) proposed_rate_pct: decimal 0-20 as PERCENTAGE (optional, default 7.0 with warning) proposed_term_years: int 1-40 (optional, default 30) property_tax_annual: decimal >= 0 (optional. For the PITI estimate, uses 0.88% national average if omitted) home_insurance_annual: decimal >= 0 (optional. Uses 0.65% national average if omitted) pmi_monthly: decimal >= 0 (optional. Auto-estimated at 0.5% of loan when LTV > 80%. Feeds the conventional-basis PITI, so it moves with_proposed.front_end_dti, with_proposed.back_end_dti, with_proposed.front_end_breakdown, the conventional qualification row, and what_if.scenarios[].new_front_end_dti / new_back_end_dti. VA carries no PMI, and FHA/USDA always compute their own upfront-plus-annual mortgage insurance instead, at every LTV, never this override) hoa_monthly: decimal >= 0 (optional, default 0) include_what_if: bool (optional, default true; generate scenarios to improve DTI) transaction_purpose: 'purchase' | 'refinance' | 'streamlined_assist' (optional, default 'purchase') Affects USDA only, and only what is disclosed. USDA's 32% PITI and 44% Total Debt figures are purchase-transaction waiver conditions (HB-1-3555 11.3.A.2), disclosed rather than applied as ceilings: Senaro cannot observe how the file is underwritten, so a USDA ratio overage is never 'ineligible' on any transaction purpose. For a refinance, 11.3.B states debt ratios 'are not limited to the maximum purchase debt ratio thresholds', so where the note fires it names both figures and states that neither applies. Streamlined-assist refinances require no debt ratio calculation at all. Conventional, FHA and VA are unaffected. family_size: int 1-20 (optional; must be supplied together with property_state, or neither fires) property_state: two-letter USPS state code, or 'DC'/'PR'/'GU'/'VI'/'AS'/'MP' (optional; must be supplied together with family_size) Together these compute the VA residual income guideline (38 CFR 36.4340(e)) in va_residual_income_guideline: the dollar amount VA's tables require for this family size, region, and loan amount (derived from proposed_home_price; not computable without it), plus the 38 CFR 36.4340(c)(3) review-waiver figure. Computed only for family_size 1-7 and a property_state among the 50 states, DC, or PR (not GU, VI, AS, or MP; 38 CFR 36.4340(e) assigns no region to those four); outside those bounds, or without proposed_home_price, va_residual_income_guideline.status reads 'not_computable' with the reason instead. This block alone is a LOOKUP, not a verdict: it never compares against your actual residual income by itself. monthly_taxes_and_retirement_withholding: decimal >= 0 (optional; your federal, state, and FICA tax withholding, PLUS any amount paid or withheld for retirement, monthly. 38 CFR 36.4340(f)(13) treats these as one class of deduction from gross income.) monthly_maintenance_and_utilities: decimal >= 0 (optional; estimated monthly maintenance and utilities for the proposed property. 38 CFR 36.4340 calls for a realistic estimate of this figure for the property and local utility rates and sets no numeric multiplier itself, but VA underwriting guidance (the Lender's Handbook, Pamphlet 26-7) publishes a per-square-foot multiplier for this same estimate; applying it needs the property's square footage, which this tool does not currently collect, so Senaro has no default to offer here and you supply the aggregate monthly amount instead.) Supplying BOTH of these, together with proposed_home_price and a computable family_size/ property_state above, computes qualification.va.residual_income_comparison: your ACTUAL monthly residual income, its ratio to the va_residual_income_guideline figure, and whether residual_income_meets_review_waiver_margin (residual income at or above 120% of the guideline) is met. The shelter expense used here excludes any PMI (VA loans carry no monthly PMI; 38 CFR 36.4313(e) sets a funding fee instead, commonly financed into the loan -- see va_funding_fee_financed_monthly below). 38 CFR 36.4340(c)(3)'s review-waiver condition is CONJUNCTIVE: it also requires the back-end debt-to-income ratio (qualification.va.your_back_end) to exceed 41%, which this field does not by itself confirm -- check both fields together. Even when both hold, (c)(3) only WAIVES a second-level review requirement; it is not itself an approval. Whether this file is actually approved is an underwriting determination Senaro does not make and no input combination here determines. Missing any one of the needed inputs reads qualification.va.residual_income_comparison.status 'not_computable' with every reason named. va_funding_fee_financed_monthly: decimal >= 0 (optional; the additional monthly payment from financing a VA funding fee into the loan balance, if any. 38 CFR 36.4313(e)'s applicable percentage depends on down payment, prior VA-loan use, and service category, none of which Senaro collects, so there is no default; if omitted while any VA figure that depends on it is produced -- qualification.va.your_back_end and its verdict, any what_if VA ratio, what_if.max_affordable_home.va, or the residual-income comparison above -- a VA_FUNDING_FEE_NOT_MODELED warning discloses that no fee is assumed. The home-price-reduction what_if scenario's hypothetical price is fixed before the fee is considered, so a supplied fee is scaled to that EXACT hypothetical loan size, since 38 CFR 36.4313(e)'s fee is a percentage of loan principal. what_if.max_affordable_home.va is a two-pass approximation instead, so its supplied fee is scaled to an ESTIMATE of the hypothetical loan size, not the exact figure reported; the PMI, tax, and insurance reservation itself is an EXACT closed-form solve, so only this fee-scaling step is approximate. Without proposed_home_price there is no reference loan size to scale from either way, so the raw fee is reserved unscaled instead and a VA_FUNDING_FEE_NOT_SCALED warning discloses it -- mutually exclusive with VA_FUNDING_FEE_NOT_MODELED by construction, since one requires the fee omitted and the other requires it supplied.) |