CDFI / Nonprofit Lending Metro 2 Reporting Guide

    TL;DR
    • 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.

    ProductPortfolio TypeAccount TypeTerms Frequency
    Credit-builder (share-secured)I03M
    Credit-builder (unsecured)I01M
    MicroloanI18M
    Small business loanI65M
    Mortgage (first lien)M26M
    Mortgage (junior lien)M27M

    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 columnMetro 2 target
    loan_idconsumer_account_number
    principal_amounthighest_credit_or_original_loan_amount
    current_balancecurrent_balance
    borrower_first_namefirst_name
    borrower_last_namesurname
    origination_datedate_opened
    scheduled_paymentscheduled_payment_amount
    actual_paymentactual_payment_amount
    term_monthsterms_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.
    CDFI / Nonprofit Lending Metro 2 Reporting Guide | Metro2