---
title: "Self-employed mortgage qualification worksheet: 2-year-average (or declining-income) qualifying income with add-backs, front/back DTI limits, the max home price you qualify for, and the full monthly PITI (principal, interest, tax, insurance, PMI, HOA) at that price. The flagship engine, as an agent-callable signed report."
method: POST
path: "/v1/reports/mortgage-qualification"
tags: ["Lending"]
---

# Self-employed mortgage qualification worksheet: 2-year-average (or declining-income) qualifying income with add-backs, front/back DTI limits, the max home price you qualify for, and the full monthly PITI (principal, interest, tax, insurance, PMI, HOA) at that price. The flagship engine, as an agent-callable signed report.

`POST /v1/reports/mortgage-qualification`

## Request

- Base URL: `` (relative, and it does not resolve against the document’s source URL)
- URL: `/v1/reports/mortgage-qualification`
- Auth: none declared

Self-employed mortgage qualification worksheet: 2-year-average (or declining-income) qualifying income with add-backs, front/back DTI limits, the max home price you qualify for, and the full monthly PITI (principal, interest, tax, insurance, PMI, HOA) at that price. The flagship engine, as an agent-callable signed report.

Payment: x402 ($1.00 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: qualifying income = 2-yr avg net SE income (+add-backs), year-1 only if declining; max price fits min(front-DTI, back-DTI) housing budget and full PITI; PMI applied above 80% LTV

## Request body

- object
  - `year1NetIncome` number, required
  - `year2NetIncome` number, required
  - `addBacks` number
  - `monthlyDebts` number
  - `downPayment` number
  - `interestRatePct` number
  - `termYears` 15 | 20 | 30
  - `propertyTaxPct` number
  - `annualInsurance` number
  - `monthlyHOA` number
  - `frontDTIPct` number
  - `backDTIPct` number
  - `pmiRatePct` number

## Response `200`

Verified result + provenance (formula, sources, reproducible SHA-256 hash).

## Other responses

- `400`: Invalid input (no charge) — body echoes the JSON Schema.
- `402`: Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote.

---

[API](https://skmtc.dev/x402toll/apis/tollbooth-verified-calculators-for-ai-agents.md) · [All operations](https://skmtc.dev/x402toll/apis/tollbooth-verified-calculators-for-ai-agents/llms.txt) · [OpenAPI document](https://skmtc.dev/x402toll/apis/tollbooth-verified-calculators-for-ai-agents/revisions/60cb70a3e1a5?raw)
