Direct answer
An EIN by itself does not establish that an organization is tax exempt. Send the EIN to Pactman Nonprofit Check Plus API and evaluate the IRS signals returned for that organization.
For an EIN-based tax-exempt check, first confirm that ein and bmf_ein correspond to the organization you intended to check. Then evaluate bmf_status, bmf_subsection, subsection_description and exempt_status_code. If contribution deductibility also matters, review pub78_verified separately. Finally, review revocation, conflict and freshness fields before making a current-status decision.
Recommended verification flow
- Normalize the EIN. Remove spaces or dashes so
12-3456789becomes123456789. - Send the EIN to the Nonprofit Check Plus API. Use the single-EIN
nonprofitcheckendpoint for one organization. - Confirm the returned organization. Match
einandorganization_nameto the entity your application intended to check. - Confirm the EIN appears in the IRS BMF data. Review
bmf_einandbmf_status. - Identify the tax-exempt classification. Evaluate
bmf_subsection,subsection_descriptionandexempt_status_coderather than relying on the EIN alone. - Keep tax-exempt status and Pub. 78 status separate. Use
pub78_verifiedwhen Publication 78 inclusion or contribution deductibility matters to your workflow. - Review revocation and reinstatement information. Check
revocation_code,revocation_dateandreinstatement_datebefore treating a historical revocation signal as the organization's current status. - Check source conflicts and freshness. Review
irs_bmf_pub78_conflict,most_recent_bmf,most_recent_pub78andorganization_info_last_modified. - Handle religious-organization exceptions explicitly. When applicable, review
pub78_church_messageandbmf_church_messageinstead of treating a missing source record as an automatic failure.
Example request(s)
curl --request GET \
--url https://entities.pactman.org/api/entities/nonprofitcheck/v1/us/ein/YOUR_EIN \
--header 'Authorization: Bearer YOUR_API_KEY'
Implementation note: The endpoint name above reflects the Pactman single-EIN Nonprofit Check endpoint used in Pactman's Production/Customer Environment.
curl --request POST \
--url https://entities.pactman.org/api/entities/nonprofitcheckbulk/v1/us/eins \
--header 'accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '[
"YOUR_EIN_1",
"YOUR_EIN_2",
"YOUR_EIN_3",
"YOUR_EIN_4",
"YOUR_EIN_5"
]'
Implementation note: The endpoint name above reflects the Pactman single-EIN Nonprofit Check endpoint used in Pactman's Production/Customer Environment.
What your application should evaluate
| Signal | Why it matters | Typical application decision |
|---|---|---|
ein / organization_name |
Identifies the organization returned for the requested EIN. | Continue only when the response corresponds to the organization your user intended to check. |
bmf_ein / bmf_status |
bmf_status indicates whether the organization appears in the IRS Business Master File data used by Pactman, while bmf_ein identifies the EIN in that source. |
Treat these as primary BMF-presence signals for the EIN. |
bmf_subsection / subsection_description |
Provides the IRS subsection classification returned from BMF data. | Use the subsection information to determine what type of tax-exempt organization the EIN is associated with. |
exempt_status_code |
Returns the EO status code describing the type of exemption held by the organization. | Include it in the tax-exempt-status rules used by your application. |
pub78_verified |
Indicates whether the organization is included in the most recent Publication 78 data used by Pactman. | Evaluate separately when deductible-contribution eligibility is part of the question. |
| Revocation fields | revocation_code, revocation_date and reinstatement_date expose revocation-related history returned by the API. |
Do not reduce a historical revocation record to a current-status decision without evaluating reinstatement information. |
irs_bmf_pub78_conflict |
Indicates whether BMF and Pub. 78 differ on the organization's private-foundation classification. | Route conflicting records through source-aware decision logic instead of silently choosing one source. |
| Source dates | most_recent_bmf, most_recent_pub78 and organization_info_last_modified provide source or record freshness context. |
Use them when the status depends on which source record is more current. |
| Church messages | pub78_church_message and bmf_church_message can provide explanatory context for religious organizations when ordinary source-presence checks are not sufficient. |
Review the message before treating a missing BMF or Pub. 78 record as a definitive failure. |
Example decision logic
A practical implementation might treat an EIN as belonging to a tax-exempt organization only after the application has:
- matched the returned
einand organization identity to the intended entity; - confirmed the relevant BMF presence and classification signals, including
bmf_status,bmf_subsectionandexempt_status_code; - reviewed revocation and reinstatement fields instead of assuming that an EIN or BMF record alone establishes current status;
- evaluated
irs_bmf_pub78_conflictwhen the IRS sources do not align; and - considered source freshness before applying the application's final business rule.
If contribution deductibility is also part of the workflow, evaluate pub78_verified and the Pub. 78 information separately. A tax-exempt-status check and a deductible-contribution check are related, but they should not be collapsed into one field.
A single-call sample illustrates the pattern. For EIN 996589560, Pactman as at September 28th 2026 returns bmf_status: true, bmf_ein: "996589560", bmf_subsection: "03", subsection_description: "501(c)(3) Public Charity" and exempt_status_code: "01". The same response returns pub78_verified: true, while revocation_code, revocation_date and reinstatement_date are null.
Important: Do not interpret subsection_description, pub78_verified, or an EIN alone as a universal pass/fail result. Pactman returns separate IRS and compliance signals so your application can apply the policy appropriate to its use case.
Why use a consolidated nonprofit verification API?
Checking an EIN against tax-exempt data is more than confirming that the identifier exists. An application may need to match the organization, identify its BMF subsection, review its exempt-status code, check Pub. 78 when deductibility matters, account for revocation history and preserve source-freshness information.
Pactman Nonprofit Check Plus returns these signals in one normalized response. The current single-EIN and bulk samples use the same 43 organization-level response fields, making the same interpretation logic reusable across individual checks and higher-volume workflows.
One normalized response
Evaluate organization identity, IRS BMF status, Pub. 78, revocation and related classification signals without building a separate response model for each source.
Separate source signals
Keep bmf_status, pub78_verified, revocation fields and irs_bmf_pub78_conflict distinct so downstream logic can tell which source produced each signal.
Reusable compliance rules
Use the same EIN-status rules across onboarding, donations, grantmaking and recurring reviews while allowing each workflow to set its own acceptance criteria.
Developer-friendly automation
Move EIN-based tax-exempt checks into the application workflow instead of relying on a person to manually compare records for each organization.
Frequently asked questions
Does a valid EIN mean the organization is tax exempt?
No. The EIN identifies the organization returned by the API. Your application should evaluate the IRS BMF status and classification fields, including bmf_status, bmf_subsection, subsection_description and exempt_status_code, before making a tax-exempt-status decision.
Is pub78_verified the same as bmf_status?
No. bmf_status indicates that the organization appears in the Business Master File data used by Pactman. pub78_verified indicates that the organization is included in the most recent Publication 78 data set used by Pactman. They represent different source signals and should be evaluated according to the question your workflow is answering.
What if the EIN is associated with a religious organization that is missing from a source?
Review pub78_church_message and bmf_church_message when those fields are populated. The API can return explanatory context for religious organizations when ordinary source-presence checks do not tell the full story.
What if IRS BMF and Pub. 78 data do not align?
Review irs_bmf_pub78_conflict together with the underlying BMF and Pub. 78 fields and their source dates. Preserve the conflict rather than silently converting the two source records into a single yes/no value.
Related Pactman artifacts
- How to Verify a Nonprofit by EIN Using an API
- How to Check Whether a Nonprofit Is Currently Tax Exempt
- How to Check a Nonprofit in the IRS Business Master File
Next step
Use the Pactman API response to match the EIN to the intended organization, then evaluate BMF status, tax-exempt classification, revocation information and source freshness explicitly. Add Pub. 78 logic when deductible-contribution eligibility is part of the workflow rather than treating every EIN lookup as a single generic pass/fail check.
Ready to check EINs programmatically?
Use Pactman Nonprofit Check Plus API to connect EIN-based nonprofit verification directly to your application.