One source of truth
Eligibility, calculator, and audit all read the same table. No 'spreadsheet drift' between teams.
FFIEC-aligned area median income lookups by state + county FIPS, percent-of-AMI calculation with family-size adjustments, and eligibility integration with the pricing engine. One source of truth, one API surface, no spreadsheets.
Overview
AMI areas are keyed by (stateCode, countyFips). The percent-of-AMI endpoint applies the FFIEC family-size adjustment factors and returns a precise percent value. The pricing engine consumes the same data via Stage 1 eligibility — when a program restricts to ≤80% AMI, the engine looks up the borrower's percent-of-AMI from the same table powering the API.
AMI tables are loaded by version + year and addressable by state + county FIPS. Family-size adjustment factors follow FFIEC formulas.
Stage 1 eligibility uses the same AMI table the API returns. No reconciliation, no skew, no 'wait, which AMI was that?'
Every lookup can specify a year so historical replay against the right AMI table is one parameter away.
Admin endpoints for paginated area listing and detail. Useful for downstream BI tooling.
Anonymous AMI lookups are available on the marketing-side calculator at /resources/calculators/ami — useful for sales conversations.
Applies the FFIEC factor automatically; the response carries both the unadjusted median and the adjusted median for transparency.
How it works
Numbered steps from input to output. Each step maps to a specific subsystem you can inspect via OpenTelemetry.
FIPS codes are stable. The API resolves the area row from the active table for the requested year (default: current).
FFIEC publishes household-size adjustment factors for 1-8 person households. The endpoint applies the factor and returns the adjusted median.
If annualIncome is supplied, the response includes the percent-of-AMI rounded to one decimal place.
Stage 1 eligibility queries the AMI service through the platform's internal client; the table version used is logged with the quote's correlationId.
Pass tableYear in the lookup or the as-of timestamp on a pricing replay; the engine pulls the AMI snapshot that was active then.
Hands on
Live cURL sample — copy, paste, ship.
# Lookup AMI and percent-of-AMI in one call
curl 'https://api.ratestack.com/v1/ami/percent?\
stateCode=CA&countyFips=06037&familySize=4&annualIncome=98000' \
-H "X-API-Key: $RATESTACK_KEY"
# Returns the active AMI table with the calculation
{
"stateCode": "CA",
"countyFips": "06037",
"areaName": "Los Angeles County",
"familySize": 4,
"annualIncome": 98000,
"medianIncome": 95800,
"adjustedMedian": 95800,
"percentOfAmi": 102.3,
"tableYear": 2025
}Why this matters
Eligibility, calculator, and audit all read the same table. No 'spreadsheet drift' between teams.
Disputes about a 2024-Q3 program eligibility check against AMI replay correctly because the year-tagged table is still queryable.
The public AMI calculator lives on the marketing site and turns into a perfect lead-in: 'See your borrower's percent-of-AMI in 5 seconds.'
Frequently asked
Annually with the FFIEC release. Each release lands as a new year-tagged table; historical years remain queryable indefinitely.
Not currently — RateStack uses FFIEC keying so federal and state programs reconcile. If you need custom geographies, contact us.
FFIEC publishes both. We use county-level FIPS as the canonical key and resolve metro/non-metro derivations server-side.
Indirectly — the eligibility audit captures which AMI table version was used. You can replay any prior quote with the corresponding AMI snapshot for HMDA reconciliation.
Related capabilities
Ready to see it on your data?
We'll spin you a sandbox, load your actual ratesheets, and walk you through this capability against your top scenarios.