Technical writing
IRS Exempt Organizations BMF: Recognition, Coverage, and Blind Spots
The IRS Exempt Organizations Business Master File — the EO BMF — is a monthly account/status extract. Most current rows carry STATUS 01, but the live files also contain STATUS 02, 12, and 25; those codes do not all describe the same legal posture. Each row is keyed by an Employer Identification Number and includes classification and filing fields. It is not a census: the IRS says the extract excludes self-declared organizations and churches or other organizations that were not required to apply and did not apply. It is a useful EO-account layer, but a recognition cohort must be explicitly filtered and current status, financial disclosure, and institutional identity each require their own checks.
What the EO BMF Is
The Business Master File is an internal IRS accounting database. The public EO BMF extract contains account rows relevant to exempt-organization administration. A favorable exemption determination is generally represented in the current public files by STATUS 01 or the legacy STATUS 02, but the extract also carries other documented account postures. The STATUS value therefore has to be retained and decoded before a row is described as part of a recognition cohort.
In the August 11, 2026 four-file snapshot, STATUS 01 accounts for 1,949,212 rows, STATUS 12 for 6,640, STATUS 25 for 847, and STATUS 02 for 641. Current IRS material describes STATUS 12 as an EO return-filing account without a favorable exemption determination, including certain § 4947(a)(2) trust accounts, and STATUS 25 as a private foundation terminating that status under § 507(b)(1)(B). Publication 5926 and the observed live file do not fully agree about inclusion of STATUS 12, so the acquisition receipt must preserve both the observed values and the source-version caveat. File presence alone does not establish uniform recognition, current operation, or good standing.
The IRS publishes the EO BMF through the Tax Exempt Organization Search (TEOS) system and as downloadable bulk extracts. The IRS labels the fourth file “Region 4: All Other Areas”; it includes Puerto Rico and other territory codes, international entries, and rows without a state code. The files are refreshed monthly. The site's served data is stored in a normalized table named irs_bmf, but it is currently a partial snapshot with one row per ingested EIN—not a complete copy of the current four-file source. The catalog displays the served count beside the August 11 source benchmark while that ingestion gap remains unreconciled.
The Core Identifier: EIN, Name, and Address
Every record in the EO BMF is anchored on three fields that together identify the organization.
- Employer Identification Number (EIN). A nine-digit federal taxpayer identifier, conventionally written as two digits, a hyphen, and seven digits (
13-1837418). The EIN is the stable join key across IRS recognition, revocation, and filing records that carry it. USAspending recipient search does not expose EIN; it uses recipient name, UEI, and legacy DUNS. An IRS-to-USAspending join therefore requires a separate official source that explicitly maps the exact EIN to the exact UEI. The EIN must always be handled as a string because some EINs have leading zeros that integer parsing silently destroys. - Legal name. The organization's name as recorded by the IRS, in a fixed-width uppercase field. This is the legal name on the determination, which frequently differs from the public-facing brand a nonprofit uses (“doing business as” names are not the primary name field). Name strings are unstandardized, abbreviated to fit field-width limits, and inconsistent in their treatment of articles, ampersands, and punctuation. Within IRS sources that carry it, the exact EIN is the dependable join key. Across systems, publication requires an official identifier bridge such as an exact EIN-to-UEI mapping; a name alone is insufficient.
- Mailing address. Street or PO box, city, state, and ZIP. This is the address of record with the IRS, often the address of the organization's accountant, registered agent, or treasurer rather than a program site. For geographic analysis the state and ZIP are usable in aggregate, but a single organization's address should not be read as the location where it actually delivers services.
The 501(c) Subsection Taxonomy
The single most important classification field in the EO BMF is the subsection code, which records the paragraph of Internal Revenue Code Section 501(c) under which the organization is exempt. The popular shorthand “a nonprofit” collapses a legally diverse set of categories that have very different rules about political activity, deductibility of contributions, and permitted purposes. The subsection code disambiguates them.
| Subsection | Category | Typical examples | Donations deductible? |
|---|---|---|---|
| 501(c)(3) | Charitable, religious, educational, scientific, literary | Charities, universities, hospitals, churches, museums, foundations | Generally; verify the IRS deductibility code and current record |
| 501(c)(4) | Social welfare organizations | Advocacy groups, civic leagues, volunteer fire companies | No (but may lobby and do limited politics) |
| 501(c)(5) | Labor, agricultural, and horticultural organizations | Labor unions, farm bureaus | No |
| 501(c)(6) | Business leagues and trade associations | Chambers of commerce, professional associations, trade groups | No (dues may be partly deductible as business expense) |
| 501(c)(7) | Social and recreational clubs | Country clubs, hobby clubs, fraternities and sororities | No |
| 501(c)(8) | Fraternal beneficiary societies | Lodges providing member benefits (life insurance, etc.) | Limited (only for (c)(3) purposes) |
| 501(c)(9) | Voluntary employees' beneficiary associations | Employee benefit trusts (VEBAs) | No |
| 501(c)(19) | Veterans' organizations | VFW posts, American Legion posts | Often yes (war veterans organizations) |
In the four-file IRS source snapshot dated August 11, 2026, subsection 03 appears on 1,634,789 of 1,957,340 BMF rows (83.52 percent), a large majority of that extract. These are source rows, not a claim about every operating nonprofit. The (c)(3) designation is the one most people mean when they say “a nonprofit.” Contributions to many 501(c)(3) organizations are deductible as charitable gifts, but the BMF's DEDUCTIBILITY field and current IRS record must be checked rather than treating the subsection alone as the donor verdict.
Many other subsections generally do not offer charitable-contribution deductibility, subject to subsection-specific rules and the source deductibility code; 501(c)(8) and 501(c)(19) records illustrate why an absolute rule is wrong. The subsection still matters for classification, but it does not by itself establish current deductibility, political permissions, or compliance.
NTEE Codes, Foundation Type, and the Size Fields
Beyond the subsection, the EO BMF carries several coded fields that describe what the organization does, what its tax-law character is, and how large it is.
NTEE code. The National Taxonomy of Exempt Entities is a hierarchical classification system developed by the National Center for Charitable Statistics to describe the activities of nonprofit organizations. The full NTEE code is an alphanumeric string in which the first letter denotes one of 26 major groups — A for Arts, Culture and Humanities; B for Education; E for Health Care; P for Human Services; T for Philanthropy and Grantmaking; X for Religion-Related; and so on — and the following two alphanumeric characters refine the classification into specific subsectors. The NTEE code is the field that lets an analyst ask sector questions: how many human-services nonprofits operate in a state, how the arts sector compares to the environmental sector by count and size, or which subsector is growing fastest. NTEE coverage in the BMF is imperfect; a meaningful fraction of records have a missing or unclassified NTEE code, particularly older organizations and very small ones.
Foundation type code. For 501(c)(3) organizations, a numeric foundation code records the organization's tax-law character: whether it is a public charity and, if so, under which test it qualifies, or whether it is a private foundation. This code is the machine-readable encoding of the public charity versus private foundation distinction discussed in the next section. Codes in one range correspond to the various public charity classifications under Sections 509(a)(1) through 509(a)(4) and 170(b)(1)(A); other values indicate private foundations and private operating foundations.
Ruling or determination date. The month and year the IRS issued the determination recognizing exemption, stored as a six-digit YYYYMM value. The ruling date is a rough proxy for organizational age — though it reflects when the IRS ruled, not necessarily when the organization was founded — and it is useful for cohort analysis of the sector's growth over time.
Financial amount and band fields. The EO BMF carries coded ranges inASSET_CD and INCOME_CD, and also carriesASSET_AMT, INCOME_AMT, and REVENUE_AMT values from the latest reflected return when available. A band code of 4 indicates $100,000 to $499,999; code 9 indicates $50 million and above. The band codes cannot be summed as dollars, while the amount fields must retain the source tax period and can be blank, zero, stale, or absent for nonfilers. Filing-level analysis should use the dated Form 990 record and form type.
Deductibility code. A field that records whether, and to what extent, contributions to the organization are tax-deductible. For most 501(c)(3) public charities the value indicates that contributions are deductible; for organizations in non-deductible subsections it indicates that they are not. The deductibility code is the field a donor verification workflow checks, and it tracks the IRS Publication 78 data described below.
Public Charity vs Private Foundation
Within the 501(c)(3) universe, the law draws a sharp line between public charities and private foundations, and the EO BMF's foundation type code records which side of that line each organization falls on. The distinction is not cosmetic; it determines which IRS form the organization files, what excise taxes apply, how much a donor can deduct, and what rules govern its grantmaking and self-dealing.
A public charity can qualify through different legal routes. Institutional categories under § 170(b)(1)(A)(i)–(iii) include churches, schools, and hospitals without requiring them to pass the clause-(vi) public-support fraction. Other organizations can qualify through the public-support tests in § 170(b)(1)(A)(vi) or § 509(a)(2). The classification therefore must not be treated as a direct measurement of donor breadth or institutional accountability. Contributions to public charities generally receive the most favorable deduction limits.
A private foundation is, by default, what a 501(c)(3) organization is unless it qualifies as a public charity. Private foundations are typically funded by a single source — an individual, a family, or a corporation — and often exist primarily to make grants to other charities rather than to operate programs directly. Private foundations are subject to a separate statutory regime. Nonoperating private foundations generally calculate a distributable amount from a minimum investment return based on noncharitable-use assets rather than total net asset value. Most domestic tax-exempt private foundations owe an excise tax on net investment income, while qualifying exempt operating foundations under § 4940(d) do not. Private-foundation rules also address self-dealing and business holdings. Private operating foundations conduct their own charitable programs and have different distribution treatment.
This is the distinction the foundation type code encodes, and it is why a single integer in the BMF can answer questions like “how many private grantmaking foundations exist in a given state” or “what share of the charitable sector is operating charities versus endowed grantmakers.”
Publication 78, TEOS, and the Form 990 Family
The EO BMF sits at the center of a cluster of IRS publications and filing requirements that together make up the public record of the exempt sector.
Publication 78 and TEOS. IRS Publication 78 is the historical name for the cumulative list of organizations eligible to receive tax-deductible charitable contributions. It has been folded into the Tax Exempt Organization Search (TEOS), the public web tool the IRS operates for checking an organization's status. TEOS lets anyone confirm whether an organization is currently recognized as exempt, whether contributions to it are deductible, whether it appears on the Automatic Revocation List, and whether it has filed the e-Postcard. The Pub 78 deductibility data is one of the underlying components TEOS exposes; the deductibility code in the BMF tracks it. Pub. 78 and TEOS are strong confirmation sources when an organization appears, but a missing result is not a universal denial: a church that never sought recognition, and some subordinates covered by a group ruling, can still receive deductible contributions. A donor-facing conclusion may require the organization's exact legal identity, group-ruling relationship, and current IRS documentation.
The Form 990 family. Many tax-exempt organizations must file an annual information return or notice with the IRS, and which version they file depends on size and classification. Churches and certain related entities generally fall within a filing exception:
- Form 990. The full information return, required of larger organizations (generally those with gross receipts at or above $200,000 or total assets at or above $500,000). It discloses revenue, expenses, executive compensation, governance practices, and program accomplishments, and it is the richest public financial document most nonprofits produce.
- Form 990-EZ. A shorter return for mid-sized organizations below the full 990 thresholds but above the e-Postcard threshold.
- Form 990-PF. The return required of every private foundation regardless of size. The 990-PF discloses the foundation's investments, its grants paid (often grantee by grantee), and its compliance with the payout requirement, making it the primary source for foundation grantmaking research.
- Form 990-N (e-Postcard). A minimal electronic notice for the smallest organizations, those with gross receipts normally at or below $50,000. It captures little financial detail and basic identifying information. It satisfies the annual-notice requirement for organizations required to file it; filing-exempt churches do not acquire that obligation merely because they appear in the BMF.
BMF presence does not itself create a filing requirement. Automatic revocation applies only after an organization fails for three consecutive years to file a return or notice it was required to file. A recognized church can remain filing-exempt, so neither a missing return nor a revocation-list row may be flattened into a current violation without reconciliation.
The Automatic Revocation List
Before 2006, very small nonprofits had no annual filing obligation at all, which meant the IRS had no systematic way to learn that an organization had become defunct. The Pension Protection Act of 2006 changed this by requiring nearly all exempt organizations to file annually — the smallest via the new Form 990-N e-Postcard — and by imposing an automatic consequence for failure: any organization that fails to file a required annual return or notice for three consecutive years automatically loses its tax-exempt status by operation of law.
The IRS publishes the resulting Automatic Revocation of Exemption List, commonly called the Auto-Revocation List or Revocation List, identifying organizations whose exempt status was revoked for this three-year non-filing failure, along with the effective date of revocation and the date the IRS posted it. The list is large — hundreds of thousands of organizations have been auto-revoked since the provision took effect — and it is a critical historical companion to the BMF. It must be reconciled with the current BMF, Pub. 78, and any later determination or reinstatement record rather than treated alone as a current-status verdict.
Revocation is not necessarily permanent. An organization that was auto-revoked can apply forreinstatement of its exempt status, and the IRS offers streamlined reinstatement procedures, including routes to retroactive reinstatement when their requirements are met. Reinstated organizations can return to current IRS recognition data. The IRS also cautions that a church may appear on the automatic-revocation list yet remain tax-exempt because churches are not required to seek recognition or file annual returns. No one source is a universal current-status verdict.
What People Actually Use It For
The EO BMF is one of the most widely used open federal datasets outside of pure economic statistics, precisely because so many decisions hinge on whether an organization is a legitimate, recognized nonprofit. The recurring use cases:
- Nonprofit sector mapping. Researchers, journalists, and policymakers use the BMF to describe the size and shape of the charitable sector — counts by state, by subsector, by NTEE group, by age cohort, by size band. It is a denominator for many claims about the organizations carried in the extract. It cannot supply a denominator for every tax-exempt organization or for churches as a whole.
- Grantee due diligence. A funder can use IRS recognition, foundation type, and revocation history when the recipient and grant rules require a recognized public charity. The exact requirements depend on the funding program, and a BMF non-match alone does not establish that a church is ineligible.
- Donor deductibility verification. Individuals and corporate giving programs use the deductibility code and Pub. 78 / TEOS as confirmation when the exact organization appears. A missing church or group subordinate requires follow-up rather than an automatic conclusion that a gift is nondeductible or the organization is illegitimate.
- Foundation research. The BMF identifies private foundations by their foundation type code, and joining to Form 990-PF data reveals who funds whom. Nonprofits seeking funding use this to build prospect lists of foundations active in their subsector and region.
- Compliance follow-up. State charity regulators, watchdogs, and investigative journalists cross-reference recognition, solicitation-registration, revocation, filing, and official enforcement records. A mismatch is a lead for source review, not a fraud label; an adverse claim requires an identified agency or court action.
- Sector economic analysis. Economists combine BMF size codes with 990 financial data to estimate the nonprofit sector's contribution to GDP, employment, and wages, and to study how the sector responds to recessions, policy changes, and shifts in charitable giving.
Python: Downloading and Aggregating the EO BMF
The script downloads the four region CSV extracts, compares their complete source headers, then retains only SUBSECTION, STATUS, NTEE_CD, andFOUNDATION. It reports the observed STATUS distribution, filters the recognition cohort to STATUS 01/02, and produces subsection, valid-NTEE-major, and foundation-code distributions. It does not retain names, EINs, in-care-of fields, street addresses, or other source columns that the aggregate analysis does not need.
import io
import re
import zipfile
from collections import defaultdict
import pandas as pd
import requests
# ---------------------------------------------------------------------------
# IRS Exempt Organizations Business Master File (EO BMF) sector analysis
#
# Source: IRS Tax Exempt Organization Search bulk downloads
# Landing page:
# https://www.irs.gov/charities-non-profits/exempt-organizations-business-master-file-extract-eo-bmf
#
# The IRS publishes the EO BMF as four region files (CSV), refreshed monthly:
# eo1.csv Region 1 (Northeast)
# eo2.csv Region 2 (Mid-Atlantic / Great Lakes)
# eo3.csv Region 3 (Gulf Coast / Pacific Coast)
# eo4.csv Region 4: All Other Areas (including Puerto Rico/territories,
# international, and uncoded rows)
#
# This script downloads all four current files, concatenates them, and prints
# the observed row count. A production acquisition manifest should separately
# preserve the source posting date and hashes; never hard-code a historical
# count as though it were source-current.
# ---------------------------------------------------------------------------
BASE = "https://www.irs.gov/pub/irs-soi"
REGION_FILES = ["eo1.csv", "eo2.csv", "eo3.csv", "eo4.csv"]
STATUS_LABELS = {
"01": "unconditional exemption",
"02": "conditional exemption (legacy status)",
"12": "EO account without a favorable exemption determination; return-filing status",
"25": "private-foundation status termination under 507(b)(1)(B)",
}
HEADERS = {"User-Agent": "research@example.com (nonprofit-sector research project)"}
ANALYSIS_COLUMNS = [
"SUBSECTION", "STATUS", "NTEE_CD", "FOUNDATION",
]
# -- 1. Download and concatenate the four region extracts ---------------------
def load_eo_bmf() -> pd.DataFrame:
"""Download all four EO BMF region CSVs and return a single DataFrame."""
frames = []
required_columns = set(ANALYSIS_COLUMNS)
expected_headers = None
for fname in REGION_FILES:
url = BASE + "/" + fname
print("downloading " + url + " ...")
resp = requests.get(url, headers=HEADERS, timeout=120)
resp.raise_for_status()
# Validate the complete source header before projecting safe columns.
header_only = pd.read_csv(io.BytesIO(resp.content), nrows=0)
observed_headers = tuple(header_only.columns)
if not required_columns.issubset(observed_headers):
missing = sorted(required_columns.difference(observed_headers))
raise RuntimeError(fname + " is missing required EO BMF columns: " + str(missing))
if expected_headers is None:
expected_headers = observed_headers
elif observed_headers != expected_headers:
raise RuntimeError(fname + " does not share the reviewed EO BMF header")
df = pd.read_csv(
io.BytesIO(resp.content),
usecols=ANALYSIS_COLUMNS,
dtype={"NTEE_CD": str, "STATUS": str},
low_memory=False,
)
df["region_file"] = fname
frames.append(df)
print(" " + fname + ": " + str(len(df)) + " rows")
combined = pd.concat(frames, ignore_index=True)
status_raw = combined["STATUS"].astype("string").str.strip()
if status_raw.isna().any() or status_raw.eq("").any():
raise RuntimeError("EO BMF contains a missing STATUS value")
if not status_raw.str.fullmatch(r"\d{2}").all():
raise RuntimeError("EO BMF contains a malformed STATUS value")
combined["STATUS_NORM"] = status_raw
observed_statuses = set(combined["STATUS_NORM"].unique())
unexpected_statuses = observed_statuses.difference(STATUS_LABELS)
if unexpected_statuses:
raise RuntimeError("unreviewed EO BMF STATUS values: " + str(sorted(unexpected_statuses)))
print("total EO-BMF account/status rows: " + str(len(combined)))
for status, count in combined["STATUS_NORM"].value_counts().sort_index().items():
print(" STATUS " + status + " " + STATUS_LABELS[status] + ": " + str(count))
return combined
# -- 2. Decode the 501(c) subsection into a human-readable label --------------
SUBSECTION_LABELS = {
2: "501(c)(2) title-holding corporations",
3: "501(c)(3) charitable / religious / educational",
4: "501(c)(4) social welfare organizations",
5: "501(c)(5) labor and agricultural organizations",
6: "501(c)(6) business leagues / trade associations",
7: "501(c)(7) social and recreational clubs",
8: "501(c)(8) fraternal beneficiary societies",
9: "501(c)(9) voluntary employees beneficiary assns",
10: "501(c)(10) domestic fraternal societies",
19: "501(c)(19) veterans organizations",
}
def subsection_label(code) -> str:
try:
return SUBSECTION_LABELS.get(int(code), "501(c)(" + str(int(code)) + ") other")
except (ValueError, TypeError):
return "unknown / non-501(c)"
# -- 3. Decode the NTEE major group (first letter of the NTEE code) -----------
NTEE_MAJOR_GROUPS = {
"A": "Arts, Culture & Humanities",
"B": "Education",
"C": "Environment",
"D": "Animal-Related",
"E": "Health Care",
"F": "Mental Health & Crisis Intervention",
"G": "Diseases, Disorders & Medical Disciplines",
"H": "Medical Research",
"I": "Crime & Legal-Related",
"J": "Employment",
"K": "Food, Agriculture & Nutrition",
"L": "Housing & Shelter",
"M": "Public Safety, Disaster Preparedness & Relief",
"N": "Recreation & Sports",
"O": "Youth Development",
"P": "Human Services",
"Q": "International, Foreign Affairs & National Security",
"R": "Civil Rights, Social Action & Advocacy",
"S": "Community Improvement & Capacity Building",
"T": "Philanthropy, Voluntarism & Grantmaking",
"U": "Science & Technology",
"V": "Social Science",
"W": "Public & Societal Benefit",
"X": "Religion-Related",
"Y": "Mutual & Membership Benefit",
"Z": "Unknown / Unclassified",
}
NTEE_PATTERN = re.compile(r"^[A-Z][A-Z0-9]{2,3}$")
def ntee_major(ntee_cd) -> str:
if not isinstance(ntee_cd, str):
return "Unclassified (no NTEE code)"
normalized = ntee_cd.strip().upper()
if not NTEE_PATTERN.fullmatch(normalized):
return "Unclassified (blank or malformed NTEE code)"
letter = normalized[:1]
return NTEE_MAJOR_GROUPS.get(letter, "Unclassified (no NTEE code)")
# -- 4. Main -----------------------------------------------------------------
bmf_accounts = load_eo_bmf()
bmf = bmf_accounts[bmf_accounts["STATUS_NORM"].isin(["01", "02"])].copy()
if bmf.empty:
raise RuntimeError("EO BMF returned an empty STATUS 01/02 recognition cohort")
print("recognized STATUS 01/02 cohort: " + str(len(bmf)))
print("STATUS 12 and 25 rows remain separate from recognition-cohort aggregates")
# Counts by 501(c) subsection -------------------------------------------------
bmf["subsection_label"] = bmf["SUBSECTION"].apply(subsection_label)
by_subsection = (
bmf.groupby("subsection_label").size().sort_values(ascending=False)
)
print("\nRecognized STATUS 01/02 rows by 501(c) subsection (top 12):")
for label, n in by_subsection.head(12).items():
print(" " + label.ljust(48) + str(n).rjust(10))
# 501(c)(3) share of the whole register --------------------------------------
total = len(bmf)
c3 = int((bmf["SUBSECTION"].astype("Int64") == 3).sum())
print("\nRecognized STATUS 01/02 501(c)(3) rows: " + str(c3)
+ " (" + str(round(100 * c3 / total, 1)) + "% of recognition cohort)")
# Counts by NTEE major group (charitable orgs only) --------------------------
c3_only = bmf[bmf["SUBSECTION"].astype("Int64") == 3].copy()
c3_only["ntee_major"] = c3_only["NTEE_CD"].apply(ntee_major)
by_ntee = c3_only.groupby("ntee_major").size().sort_values(ascending=False)
print("\nRecognized STATUS 01/02 501(c)(3) rows by valid NTEE major group:")
for label, n in by_ntee.items():
print(" " + label.ljust(46) + str(n).rjust(10))
# Foundation type breakdown for 501(c)(3) orgs -------------------------------
# IRS FOUNDATION codes: 02/03 are private operating foundations; 04 is a
# private non-operating foundation; 10 is church; 15 is publicly supported
# under 170(b)(1)(A)(vi); 16-18 and 21-24 are other public-charity support types.
found_counts = c3_only.groupby("FOUNDATION").size().sort_values(ascending=False)
print("\n501(c)(3) foundation-type code distribution (top 10):")
for code, n in found_counts.head(10).items():
print(" foundation code " + str(code).rjust(3) + ": " + str(n).rjust(10))
The complete header is checked before safe-column projection, so a region-level schema mismatch cannot be hidden by usecols. STATUS values outside the reviewed set fail closed. NTEE values must match ^[A-Z][A-Z0-9]{2,3}$; blanks and malformed short values remain unclassified instead of leaking into a major-group count. This aggregate sample deliberately cannot perform an EIN join. A separate exact-identifier workflow may join IRS sources only after it defines a need for EIN and applies its own minimization and release controls. For status research, reconcile a filtered recognition cohort and Pub. 78 with automatic-revocation history and later determination or reinstatement records. Do not automatically drop or label a church from a revocation-list hit alone.
Caveats and Limitations
Recognition is not operating status. This is the cardinal caveat. The BMF carries IRS account/status data. It does not confirm that an organization is currently operating, delivering programs, or unchanged since the source filing. Some defunct organizations can remain until later IRS processing, while some valid churches never enter the extract at all. Presence and absence therefore answer different, limited questions.
Revocation processing lags. The auto-revocation mechanism is triggered by three consecutive years of failing to submit a required annual return or notice. Churches generally have no annual filing duty, so a church-related revocation-list row needs separate reconciliation. For organizations subject to the rule, there is an inherent multi-year gap before automatic revocation and another processing interval before later reinstatement or source-record changes appear. The BMF posting date describes the extract snapshot, not when the underlying organizational event occurred.
Asset and income are coded ranges. The size fields are bands, not exact figures, and they are derived from whatever return the organization most recently filed, which may be stale. They are suitable for stratifying the population into size classes and for filtering to the financially significant tail, but they cannot be summed, averaged into a sector total, or treated as precise. Any analysis that needs real dollars must go to the Form 990 data.
Churches and the BMF gap. A structural omission in the EO BMF is religious congregations. Churches, their integrated auxiliaries, and conventions or associations of churches are automatically considered tax-exempt under 501(c)(3) and arenot required to apply for recognition or to file annual Form 990 returns. A church that does not apply can be absent from the BMF. Coverage through an individual determination and coverage as a subordinate under a central organization's group ruling must be distinguished; a subordinate need not submit its own exemption application. The religion-related NTEE group also includes religiously affiliated schools, charities, and other entities that are not themselves churches. The BMF therefore cannot establish the number of churches or the size of the religious sector; it reports only the organizations carried in the extract and their source classifications.
NTEE and name-field imperfections. NTEE classification is incomplete, with many records carrying no usable code, so sector counts based on NTEE understate the total and should be reported with the unclassified share visible. The name field is uppercase, abbreviated, and inconsistent, so deduplication and cross-dataset matching must be done on EIN, never on name. And the address of record is frequently an administrative address, not a program location. State aggregates therefore describe the source address-of-record field, not verified operating or service geography.
Taken together, these caveats point to a single discipline: treat the EO BMF as an IRS account/status extract and derive a recognition cohort only after explicit STATUS filtering. Join that bounded cohort to Form 990 returns only for filing-reported financials, and reconcile current BMF/Pub. 78 data with revocation history and later IRS records. Keep firmly in mind what the file structurally cannot see — the churches that never applied and the organizations that quietly stopped operating but remain in the data.
Related writing
For another federal disclosure regime built on a single taxpayer identifier — where a filer's EIN ties together a web of public filings — see SEC Form 4 Insider Trading: The Federal Database Behind Corporate Insider Stock Transactions.
Grantee due diligence with the EO BMF is one half of the federal grants picture; the awards themselves flow through the systems described in Grants.gov: The Federal Database Behind $500 Billion in Annual Federal Grant Opportunities.
To follow federal money from prime recipients down to the nonprofits that ultimately receive it, see USASpending Subawards: The Federal Database Behind Sub-Grant and Sub-Contract Flow Tracking.