CDFI / Nonprofit Lending Metro 2 Reporting Guide
- Recommended Account Types: 01 (Unsecured) for credit-builder, 18 (Installment sales) for microloans, 65 (Commercial) for small business, 26 (First lien) for mortgages.
- Verify your EIN via /api/cdfi/nonprofit-verification (IRS Tax Exempt Organization Search) to unlock the nonprofit pricing tier.
- Verify CDFI Fund certification via /api/cdfi/certification-lookup (nightly-synced cache from cdfifund.gov).
- Grant-funded tier (cdfi_grant_funded boolean) unlocks discounted billing — v1 is a manual approval flag, no billing automation yet.
- $0-scheduled-payment loans (some training-portfolio products) need a Special Comment to avoid bureau confusion.
Account Type cheat sheet by product
CDFI portfolios span the full account-type spectrum — from $300 credit-builder loans to $5M small-business loans. The CDFI validation profile is permissive (no hard allow-list) but surfaces a warning when a loan's account type doesn't match the recommended code for that product class.
| Product | Portfolio Type | Account Type | Terms Frequency |
|---|---|---|---|
| Credit-builder (share-secured) | I | 03 | M |
| Credit-builder (unsecured) | I | 01 | M |
| Microloan | I | 18 | M |
| Small business loan | I | 65 | M |
| Mortgage (first lien) | M | 26 | M |
| Mortgage (junior lien) | M | 27 | M |
Verification flow — 501(c)(3) and CDFI Fund
Verification is the gate that unlocks the nonprofit pricing tier and the verified badge. Both lookups are cached on the company record after the first successful verification; you don't need to re-verify on every login.
- 501(c)(3) — POST /api/cdfi/nonprofit-verification with { ein: '12-3456789' }. Returns the IRS TEOS payload + sets companies.nonprofit_status.
- CDFI Fund certification — POST /api/cdfi/certification-lookup with { ein: '12-3456789' }. Looks up against the nightly-synced cdfi_certified_orgs table and sets companies.cdfi_certification.
- Both verifications write audit-log entries with source='cdfi_verification' so your board can audit when verifications were performed.
Grant-funded loans + $0-payment patterns
Many CDFIs run sponsor-subsidized programs where the borrower's scheduled payment is $0 (e.g. Mastercard Center for Inclusive Growth, MetLife Foundation). These look like reporting errors to bureaus unless you set the right Special Comment.
- Sponsor-subsidized 0% loan: status 11 + Special Comment indicating the sponsor relationship.
- Training-portfolio loan with delayed first payment: status 11 + Terms Frequency D (deferred) until first cycle begins.
- Grant-forgiveness on milestone completion: status 13 (Paid/Closed) + Special Comment DF (Discharged/Forgiven).
Status code playbook
Standard CRRG statuses apply. The CDFI profile doesn't disable any global rules — it just surfaces account-type recommendations by product.
- 11 — Current
- 13 — Paid/Closed
- 61–85 — Delinquency buckets (30/60/90/120/150)
- 97 — Charged off
- DA — DO NOT USE for obsolescence; omit the tradeline instead
Adverse action notices
ECOA + FCRA require adverse-action notices when credit data drove a denial. The /metro2/cdfi-training module 'adverse-action-notices' walks through the templates; the short version is below.
- FCRA §615(a) notice trigger: any time credit data contributed to a denial.
- ECOA §202.9 statement: must state the specific reasons for denial (separate from the FCRA notice).
- 25-month recordkeeping requirement under Regulation B.
- For grant-program denials, document the eligibility criteria + the credit data used.
Sample CSV column dictionary
Most CDFI loan-management exports look like this. The seeded 'CDFI — Credit-builder loan' template auto-detects these column names.
| Your column | Metro 2 target |
|---|---|
| loan_id | consumer_account_number |
| principal_amount | highest_credit_or_original_loan_amount |
| current_balance | current_balance |
| borrower_first_name | first_name |
| borrower_last_name | surname |
| origination_date | date_opened |
| scheduled_payment | scheduled_payment_amount |
| actual_payment | actual_payment_amount |
| term_months | terms_duration |
Test checklist
Before flipping the switch to live transmission:
- Verify your EIN against the IRS Tax Exempt Organization Search (POST /api/cdfi/nonprofit-verification).
- If certified by the CDFI Fund, verify via POST /api/cdfi/certification-lookup.
- Generate a sample file via /api/metro2-records/generate-file?environment=test and run it through the in-app validator.
- Confirm Account Type matches the recommended code for each product class (warnings are not errors but indicate misalignment).
- For sponsor-subsidized loans, confirm the Special Comment is set correctly.
- Confirm no record has status DA.