---
title: "Borrower Escrow Statement Auditor"
method: POST
path: "/v1/tools/audit_borrower_escrow_stmt"
tags: ["escrow", "mortgage-servicing", "statement-audit", "mcp:audit_borrower_escrow_stmt"]
---

# Borrower Escrow Statement Auditor

`POST /v1/tools/audit_borrower_escrow_stmt`

## Request

- Base URL: `https://ainumbers.co`
- URL: `https://ainumbers.co/v1/tools/audit_borrower_escrow_stmt`
- Auth: none declared

Audits a servicer escrow accounting statement from borrower-supplied values only: recomputes the aggregate accounting trial running balance month by month, compares the servicer stated end-of-month balances line by line, flags each discrepant line, checks the stated cushion against the one-sixth-of-annual-disbursements cap, and classifies the recomputed account as balanced, shortage, surplus, or deficiency. Identifier-like fields are refused, never echoed; over 12 monthly periods is refused.

**Tool URL:** https://ainumbers.co/chaingraph/732-borrower-escrow-auditor.html
**AP2/Policy Mandate export:** yes

## Request body

- object
  - `starting_balance` number, required: Stated opening escrow balance at the start of the computation year, in dollars. Required.
  - `monthly_payments` number[], required: Stated monthly escrow deposit values, one per month, at most 12 entries. Values only - never dates or identifiers.
  - `disbursements` number[], required: Stated monthly escrow disbursement values, one per month, at most 12 entries. Values only.
  - `stated_balances` number[], required: The servicer statement end-of-month balance values, one per month. Compared line by line against the recomputation.
  - `stated_cushion` number: Optional: the servicer stated/target cushion amount. Checked against the one-sixth cap when supplied.
  - `borrower_current` boolean: Optional: whether the borrower is current at analysis time. A refund-band surplus without it holds the audit for manual review.
  - `monthly_escrow_payment` number: Optional: the borrower's monthly escrow payment in dollars, the base for the one-month shortage threshold. Defaults to the mean of monthly_payments.
  - `servicer_chosen_course` 'do_nothing' | 'repay_within_30_days' | 'repay_equal_monthly_12_plus_months': Optional: the course the servicer chose: do_nothing, repay_within_30_days or repay_equal_monthly_12_plus_months. Reported as permitted or not.

## Response `200`

Successful tool execution result

- object
  - `verdict` string
  - `account_status` string, nullable
  - `periods_analyzed` integer
  - `recomputed_balances` number[]
  - `recomputed_low_point` number
  - `target_low_point` number
  - `total_annual_disbursements` number
  - `cushion_cap_amount` number
  - `stated_cushion` number, nullable
  - `cushion_within_cap` boolean, nullable
  - `shortage_amount` number
  - `surplus_amount` number
  - `shortage_threshold_base` number
  - `shortage_threshold_base_source` string
  - `shortage_at_or_above_one_month_payment` boolean, nullable
  - `shortage_permitted_courses` string[]
  - `servicer_course_permitted` boolean, nullable
  - `surplus_refund_required` boolean
  - `surplus_refund_unverified` boolean
  - `discrepancies` object
  - `evidence` object
  - `manual_review_required` boolean

---

[API](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite.md) · [All operations](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/llms.txt) · [OpenAPI document](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/revisions/b462e4f5bb28?raw)
