Direct answer
To check whether a nonprofit is currently tax exempt, send its EIN to Pactman Nonprofit Check Plus API and evaluate the returned IRS status and classification signals instead of relying on the EIN alone.
Start with bmf_status, then review bmf_subsection, subsection_description and exempt_status_code. Next, review revocation_code, revocation_date and reinstatement_date so historical revocation information is not mistaken for the organization's current status. Use pub78_verified, irs_bmf_pub78_conflict and the source-date fields as additional context before applying your application's final rule.
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 when checking one organization. - Confirm the organization. Match
einandorganization_nameto the entity your user intended to check. - Review BMF presence. Confirm
bmf_einand evaluatebmf_status. - Review tax-exempt classification. Evaluate
bmf_subsection,subsection_descriptionandexempt_status_code. - Check revocation and reinstatement. Review
revocation_code,revocation_dateandreinstatement_datebefore treating a revocation-related record as current disqualification. - Review Pub. 78 separately. Use
pub78_einandpub78_verifiedwhen deductible-contribution eligibility matters to the workflow. - Check conflicts. Review
irs_bmf_pub78_conflictwhen BMF and Pub. 78 classification signals do not align. - Check freshness. Review
most_recent_bmf,most_recent_pub78andorganization_info_last_modifiedbefore making a current-status decision. - Handle religious-organization exceptions explicitly. When populated, review
pub78_church_messageandbmf_church_messageinstead of treating ordinary source absence as a definitive 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 |
Confirms that the returned record belongs to the nonprofit your user intended to check. | Continue only when the EIN and organization identity match the intended entity. |
bmf_ein / bmf_status |
Indicates whether the EIN appears in the IRS Business Master File data used by Pactman. | Treat BMF presence as a primary IRS-status signal before interpreting classification fields. |
bmf_subsection / subsection_description |
Identifies the IRS subsection classification returned for the organization. | Use the subsection to understand the organization's tax-exempt classification. |
exempt_status_code |
Provides the EO status code describing the type of exemption held by the organization. | Evaluate together with BMF subsection and revocation information. |
| Revocation fields | revocation_code, revocation_date and reinstatement_date expose revocation-related history returned by the API. |
Do not treat historical revocation information as current loss of exemption without reviewing reinstatement data. |
pub78_verified |
Indicates whether the organization is included in the most recent Publication 78 data set used by Pactman. | Use separately when deductible-contribution eligibility is part of the workflow. |
irs_bmf_pub78_conflict |
Indicates whether BMF and Pub. 78 differ on the organization's private-foundation classification. | Route conflicting records through source-aware logic instead of silently choosing one source. |
| Source dates | most_recent_bmf, most_recent_pub78 and organization_info_last_modified provide freshness context. |
Use them to avoid treating older source data as automatically representative of current status. |
| Church messages | pub78_church_message and bmf_church_message can provide context when religious organizations are not represented by ordinary source-presence rules. |
Review the messages before treating source absence as a final current-status decision. |
Example decision logic
A practical implementation might treat a nonprofit as currently tax exempt only after the application has:
- matched the returned
einandorganization_nameto the intended nonprofit; - confirmed relevant BMF presence through
bmf_statusandbmf_ein; - evaluated
bmf_subsection,subsection_descriptionandexempt_status_code; - reviewed
revocation_code,revocation_dateandreinstatement_date; - evaluated
irs_bmf_pub78_conflictwhen IRS source classifications do not align; and - considered source freshness before applying the final current-status rule.
If tax-deductible contribution eligibility is also part of the decision, evaluate pub78_verified separately. Current tax-exempt status and Pub. 78 inclusion are related, but they are not the same API signal.
The supplied bulk sample illustrates this separation. For EIN "680343125", Pactman returns bmf_status: true, 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 hard-code "currently tax exempt" as a single-field check. The Nonprofit Check Plus API exposes BMF classification, revocation history, Pub. 78, source conflicts and freshness separately so your application can apply the rule appropriate to its use case.
Why use a consolidated nonprofit verification API?
Determining whether a nonprofit is currently tax exempt may require more than confirming that an EIN exists. A production workflow may need to identify the current IRS classification, account for revocation and reinstatement, preserve Pub. 78 as a separate signal, and compare source freshness when data does not line up.
Pactman Nonprofit Check Plus returns those signals in one normalized response. The supplied single-EIN and bulk samples use the same current 43 organization-level fields, so the same interpretation logic can be reused across individual and batch verification workflows.
One normalized response
Evaluate EIN identity, BMF status, tax-exempt classification, revocation, Pub. 78 and freshness signals from one Pactman response model.
Separate source signals
Keep bmf_status, pub78_verified, revocation fields and irs_bmf_pub78_conflict distinct so downstream logic retains the meaning and source of each signal.
Reusable compliance rules
Apply the same current-tax-exempt logic across onboarding, donations, grantmaking and recurring reviews while allowing each workflow to define its own acceptance criteria.
Developer-friendly automation
Move current tax-exempt verification into the application workflow instead of requiring a person to manually compare IRS status, Pub. 78 and revocation information for every EIN.
Frequently asked questions
Is bmf_status: true enough to prove a nonprofit is currently tax exempt?
Not by itself. Use bmf_status as a BMF-presence signal, then evaluate bmf_subsection, subsection_description, exempt_status_code, revocation information and source freshness before applying your final current-status rule.
Does pub78_verified: true mean the same thing as current tax-exempt status?
No. pub78_verified represents inclusion in the most recent Publication 78 data used by Pactman. It is especially relevant when deductible-contribution eligibility matters, but it should remain separate from BMF status and revocation logic.
What if the nonprofit appears in revocation data?
Review revocation_code, revocation_date and reinstatement_date together. A revocation record can be historical, so current status should not be inferred from revocation history alone.
What if BMF and Pub. 78 disagree?
Review irs_bmf_pub78_conflict together with the underlying BMF and Pub. 78 fields and their source dates. Preserve the disagreement instead of silently converting the records into one status.
Related Pactman artifacts
- How to Check if an EIN Belongs to a Tax-Exempt Organization
- How to Verify a 501(c)(3) Organization Using Its EIN
- How to Check if a Nonprofit Has Lost Its Tax-Exempt Status
Next step
Use the Pactman API response to confirm the nonprofit's identity, evaluate BMF classification and exemption status, then explicitly handle revocation, Pub. 78, source conflicts and freshness before deciding whether the organization is currently tax exempt under your application's rules.
Ready to automate current tax-exempt checks?
Use Pactman Nonprofit Check Plus API to connect nonprofit tax-exempt verification directly to your application.