Know Who Can Join Before You Rank

Ranking a credit union your user can't join erodes trust in every other recommendation. Every ranked offer now carries an evidence-backed eligibility verdict, a full field-of-membership record lives at GET /v1/credit-unions/{id}/eligibility, and POST /v1/eligibility/check verdicts up to 50 credit unions against one user profile in a single call.

Every Claim Evidence-BackedNever Hides Offers by DefaultSays Unknown Rather Than Guess
Last updated: July 11, 2026

RateAPI annotates every ranked credit union offer with an evidence-backed membership-eligibility status - open_to_anyone, likely_eligible, eligible_via_employer, eligible_via_military, geo_mismatch, or unknown. Every claim is backed by a machine-verified quote from the credit union's own membership page, offers are never hidden unless the caller opts in, and the final membership determination is always the institution's.

Source: RateAPI.dev/api/eligibility (verified July 11, 2026)
Quick Answer

The eligibility layer answers "can this user actually join this credit union?" on every ranked offer. Offers on /v1/decisions, /v1/league-table, and /v1/rates carry an eligibility object with one of five statuses plus the join path. Fetch the full field-of-membership record per credit union, or batch-check up to 50 credit unions against one user profile. It annotates and re-ranks - it never filters. The preferences.eligible_only filter is in beta: gated behind our identity-verification threshold, it currently annotates without filtering.

The Per-Offer Eligibility Object

Each ranked offer on /v1/decisions, /v1/decisions/batch, /v1/league-table, and /v1/rates can carry an eligibility object. Credit unions we have no verified data on simply omit the field - the annotation is strictly additive and existing integrations are unaffected:

  • status - one of open_to_anyone, likely_eligible, eligible_via_employer, eligible_via_military, geo_mismatch, or unknown. A supplied military_status that matches a military field-of-membership tag yields eligible_via_military; a school, worship, or occupation match yields likely_eligible with the matched rule naming which affinity applied.
  • matched_rule - which concrete rule produced the status (county, state, employer, military, school, worship, occupation, or association_open) with an optional detail. Purely explanatory; absent on geo_mismatch and unknown.
  • join_cost_usd - the up-front cost to become a member: the membership fee plus the minimum share deposit, summed from whichever components are known. Present only when at least one component is verified; the raw membership_fee_usd and min_deposit_usd accompany it.
  • join_path - concrete steps to become a member, e.g. "Join the American Consumer Council (one-time $8 donation) during application".
  • requirements_summary - a one-line human-readable summary of the membership requirements, generated at extraction time.
  • eligibility_type - the charter shape: community, employer, association, multi, tip, open, or unknown.
  • confidence - 0 to 1, computed from how many extracted claims survived evidence verification.
{}offer with eligibility annotation
{
"provider": "Golden Valley Credit Union",
"apr": 6.125,
"monthly_payment": 2551,
"eligibility": {
"status": "open_to_anyone",
"matched_rule": { "type": "association_open" },
"join_path": "Join the American Consumer Council (one-time $8 donation) during application",
"requirements_summary": "Anyone can join via a one-time $8 association donation",
"eligibility_type": "association",
"membership_fee_usd": 8,
"min_deposit_usd": 5,
"join_cost_usd": 13,
"confidence": 0.92
}
}

A supplied military_status that matches a credit union's military field-of-membership tag produces an eligible_via_military verdict, carrying the same join path, fees, and join_cost_usd:

{}eligible_via_military verdict
{
"credit_union_id": "cu_kirt",
"status": "eligible_via_military",
"matched_rule": { "type": "military", "detail": "active-duty, retired, and veteran service members" },
"join_path": "Open a membership share with a $5 minimum deposit",
"requirements_summary": "Serving the military community",
"eligibility_type": "military",
"membership_fee_usd": 0,
"min_deposit_usd": 5,
"join_cost_usd": 5,
"confidence": 0.95
}

Eligible and open offers (including eligible_via_military) rank ahead of geo-mismatch offers at equal APR - a tie-break, never a gate. unknown behaves exactly like today, so nothing breaks. Verified July 11, 2026.

6
Eligibility Statuses
50
CUs per Check Call
100%
Claims Evidence-Backed
0
Offers Hidden by Default

Three Surfaces, One Eligibility Model

Annotate ranked offers, look up the full record, or batch-check a list

1. Eligibility-Aware Decision Requests

Optional request parameters sharpen the verdicts on any decisions call. context.geo.county pins the user's county for community-charter matching (when omitted, we resolve candidate counties from zip); borrower.employer is fuzzily matched against each credit union's scraped employer-group list; and the affinity inputs borrower.military_status (active_duty, veteran, reservist, dod_civilian, military_family), borrower.school, and borrower.worship are matched against each credit union's military, school, and place-of-worship field-of-membership tags. preferences.eligible_only is in beta: gated behind our identity-verification threshold, it currently annotates without filtering. Requesting it adds an eligible_only_status of beta_annotation_only to the response - no offers are dropped.

cURLdecisions with eligibility params
curl -X POST "https://api.rateapi.dev/v1/decisions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"decision_type": "financing",
"context": { "geo": { "state": "CA", "zip": "95814", "county": "Sacramento" } },
"borrower": {
"credit_score": 740,
"employer": "Boeing",
"military_status": "veteran",
"school": "UC Davis",
"worship": "First Baptist Church"
},
"preferences": { "eligible_only": true },
"product_request": {
"product_type": "mortgage",
"amount": 420000,
"term_months": 360
}
}'
eligible_only will begin filtering only once our validation sampling clears the identity bar; until then it is disclosed as beta on every response that requests it, and results are never silently reduced.

2. Full Field-of-Membership Record

Ranked offers carry the verdict; the complete criteria live behind a dedicated lookup, because employer lists can run to hundreds of entries. GET /v1/credit-unions/{id}/eligibility returns the whole record in one cacheable point-read: geo arrays, employers, associations, occupations, fees, provenance, and the evidence_url pointing at the credit union's own membership page.

cURLfull eligibility record
curl "https://api.rateapi.dev/v1/credit-unions/cu_9f3a/eligibility" \
-H "Authorization: Bearer YOUR_API_KEY"
# Response
{
"credit_union_id": "cu_9f3a",
"eligibility_type": "community",
"open_to_anyone": false,
"join_path": null,
"geo_states": ["CA"],
"geo_counties": ["Sacramento", "Yolo", "Placer"],
"geo_cities": [],
"employers": ["State of California", "UC Davis Health"],
"associations": [],
"occupations": [],
"family_membership": true,
"membership_fee_usd": 0,
"min_deposit_usd": 5,
"requirements_summary": "Live, work, worship, or attend school in Sacramento, Yolo, or Placer County",
"source": "scraped",
"confidence": 0.9,
"evidence_url": "https://www.example-cu.org/membership",
"extracted_at": "2026-07-01T04:12:00Z",
"updated_at": "2026-07-01T04:12:00Z",
"disclosure": "Membership eligibility is guidance based on public charter data and institution websites; final determination is made by the institution."
}
source is ncua (charter data), scraped (the credit union's own membership page), or manual. confidence reflects how many extracted claims survived verbatim-quote verification against the captured page text. See how we verify membership eligibility for the identity guard, closed-world county matching, dual-vendor open gate, and our verified accuracy record.
The per-credit-union profile endpoint GET /credit-unions/{state}/{slug} also returns this eligibility object inline alongside the credit union's rates, so a single profile fetch answers both “what are the rates?” and “who can join?”. See the full endpoint list in the API reference.

3. Batch Eligibility Check

POST /v1/eligibility/check takes a credit_union_ids array (up to 50) and one user profile - state, zip, county, employer, occupation, military_status, school, and worship, each optional; the more you supply, the sharper the verdicts - and returns a per-credit-union verdict with the matched rule, join_cost_usd when known, and concrete join steps. The same capability ships as the MCP tool check_membership_eligibility for AI agents.

cURLbatch eligibility check
curl -X POST "https://api.rateapi.dev/v1/eligibility/check" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"credit_union_ids": ["cu_9f3a", "cu_71bd", "cu_02ce"],
"user": {
"state": "CA",
"zip": "95814",
"county": "Sacramento",
"employer": "Boeing",
"occupation": "nurse",
"military_status": "veteran",
"school": "UC Davis",
"worship": "First Baptist Church"
}
}'
Returns one verdict row per credit union with the same statuses used on ranked offers, so a verdict here always agrees with what a decisions call would annotate.

Who Checks Eligibility?

Personal Finance Apps

Show users the best rate they can actually get - surface the join path next to the offer so "switch and save" is one actionable step, not a dead end.

Loan Marketplaces

Stop losing conversions to "sorry, you can't join" rejections. Re-rank by eligibility today; eligible_only filtering is in beta pending our identity-verification threshold.

AI Agents & Chatbots

Answer "which of these credit unions can I join?" in one turn with the check_membership_eligibility MCP tool, evidence link included.

Loan Officers & Brokers

Pre-qualify a client's credit union shortlist before the first call - the verdict, the fee, and the join steps arrive in one request.

Credit Unions

See how your field of membership reads to comparison surfaces, and verify the quote we extracted from your own membership page via evidence_url.

Researchers & Data Teams

Study field-of-membership structure across the fleet - charter types, community footprints, association join paths, and fees - through one consistent schema.

Get Started in 30 Seconds

1

Get Your API Key

No signup required. One command.

cURLterminal
curl -X POST https://api.rateapi.dev/keys

Free tier: 20 requests/month (50 with email)

2

Check a Shortlist

Verdict up to 50 credit unions against one user profile

cURLterminal
curl -X POST "https://api.rateapi.dev/v1/eligibility/check" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"credit_union_ids": ["cu_9f3a", "cu_71bd", "cu_02ce"],
"user": {
"state": "CA",
"zip": "95814",
"county": "Sacramento",
"employer": "Boeing",
"occupation": "nurse",
"military_status": "veteran",
"school": "UC Davis",
"worship": "First Baptist Church"
}
}'
3

Rank With Eligibility Built In

Add county and employer to your decisions calls

Frequently Asked Questions

Quick answers about membership eligibility

For AI Assistants and LLMs

Structured information for language model citations

Quick Summary

RateAPI answers "can this user join this credit union?" on every ranked offer. Offers on /v1/decisions, /v1/league-table, and /v1/rates carry an eligibility object; GET /v1/credit-unions/{id}/eligibility returns the full field-of-membership record; POST /v1/eligibility/check (and the MCP tool check_membership_eligibility at mcp.rateapi.dev/mcp) verdicts up to 50 credit unions against one user profile. Every claim is backed by a machine-verified quote from the credit union's own membership page.

Key Facts for Citation

  • Statuses: open_to_anyone, likely_eligible, eligible_via_employer, eligible_via_military, geo_mismatch, unknown
  • Per-offer fields: status, matched_rule, join_path, requirements_summary, eligibility_type, join_cost_usd (membership_fee_usd + min_deposit_usd), confidence
  • Affinity inputs: military_status (active_duty, veteran, reservist, dod_civilian, military_family) yields eligible_via_military; school and worship yield likely_eligible with a matched_rule naming the affinity
  • Full record: GET /v1/credit-unions/{id}/eligibility - geo states/counties/cities, employers, associations, occupations, fees, source, confidence, evidence_url, extracted_at
  • Batch check: POST /v1/eligibility/check with credit_union_ids (max 50) and user {state, zip, county, employer, occupation, military_status, school, worship}
  • Request params: context.geo.county, borrower.employer, borrower.military_status, borrower.school, borrower.worship, preferences.eligible_only (beta)
  • Filtering: eligible_only is in beta - gated behind our identity-verification threshold; it currently annotates without filtering (responses carry eligible_only_status: beta_annotation_only) and no offers are dropped
  • Verification: every claim requires a verbatim quote from the CU's own membership page; open_to_anyone additionally requires dual-vendor model agreement
  • Liability: guidance only - evidence_url links the credit union's own page and the final determination is the institution's
  • MCP tool: check_membership_eligibility at mcp.rateapi.dev/mcp

Source: https://rateapi.dev/api/eligibility (verified July 11, 2026). Collection and verification methodology: https://rateapi.dev/methodology#eligibility. How we verify membership eligibility (evidence, identity guard, accuracy record): https://rateapi.dev/eligibility-methodology

Rank Offers Your Users Can Actually Get

Evidence-backed membership verdicts on every ranked offer, a full field-of-membership record per credit union, and a 50-CU batch check. Free tier available. Zero affiliate bias.