Pactman Developer Resources · Nonprofit verification answers for developers and compliance teams
Home  /  Artifacts  /  How to Determine a Nonprofit’s Current Status When IRS Data Sources Disagree
Artifact · Developer How-To

How to Determine a Nonprofit’s Current Status When IRS Data Sources Disagree

Keep each source signal separate and compare its freshness. Use `bmf_status` and `most_recent_bmf` for BMF context, `pub78_verified` and `most_recent_pub78` for Pub. 78 context, and `revocation_date` plus `reinstatement_date` for revocation history. Use `irs_bmf_pub78_conflict` only for the private-foundation classification conflict described by the supplied mapping, not as a universal IRS-conflict flag.

Updated September 28, 20266 min readFor developers, compliance teams, grantmaking platforms & fintech and nonprofit software teams

Direct answer

When IRS-derived sources disagree, keep the signals separate and compare source-specific dates instead of collapsing everything into one status field.

Use bmf_status with most_recent_bmf, pub78_verified with most_recent_pub78, and the revocation/reinstatement fields for status history. The supplied mapping defines irs_bmf_pub78_conflict specifically as disagreement between BMF and Pub. 78 on private-foundation classification.

  1. Normalize the EIN.
  2. Send the EIN to the Nonprofit Check Plus API.
  3. Confirm the organization identity.
  4. Review BMF status and date. Use bmf_status and most_recent_bmf.
  5. Review Pub. 78 status and date. Use pub78_verified and most_recent_pub78.
  6. Review classification fields. Keep BMF subsection, foundation and Pub. 78 contribution fields separate.
  7. Review revocation history. Check revocation_code, revocation_date and reinstatement_date.
  8. Review irs_bmf_pub78_conflict. Use it only for the private-foundation conflict described in the mapping.
  9. Review organization_info_last_modified.
  10. Apply a source-aware policy. Do not create a hidden universal precedence rule.

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 bulk-EIN Nonprofit Check endpoint used in Pactman's Production/Customer Environment. You can have at most 50 EINs in a bulk-EIN Nonprofit Check endpoint request.

What your application should evaluate

Signal Why it matters Typical application decision
bmf_status / most_recent_bmf Provides BMF presence and source date. Evaluate BMF claims with freshness context.
pub78_verified / most_recent_pub78 Provides Pub. 78 presence and source date. Evaluate Pub. 78 claims with freshness context.
bmf_subsection / subsection_description Preserves BMF classification. Keep it separate from foundation and Pub. 78 fields.
Foundation fields Provides separate foundation-classification dimensions. Do not infer them solely from BMF subsection.
revocation_date / reinstatement_date Represents status-event chronology. Include status history in current-status logic.
irs_bmf_pub78_conflict The mapping limits this flag to private-foundation classification disagreement. Do not generalize it to unrelated conflicts.
organization_info_last_modified Indicates when Pactman last refreshed organization details. Use as internal freshness context, not an IRS source-event date.

Example decision logic

A source-reconciliation layer might:

  • preserve BMF and Pub. 78 results separately;
  • compare most_recent_bmf and most_recent_pub78;
  • preserve foundation and subsection classifications independently;
  • review revocation and reinstatement chronology;
  • use irs_bmf_pub78_conflict only for its documented scope; and
  • route unresolved disagreements through explicit policy.

Important: The current schema does not expose one universal field that resolves every IRS-source disagreement.

Why use a consolidated nonprofit verification API?

Source disagreements are easier to reason about when each signal and its date are available in one normalized response.

Pactman Nonprofit Check Plus returns BMF, Pub. 78, revocation, foundation and freshness fields together.

One normalized response

Compare source-specific status and dates without separate ingestion pipelines.

Separate source signals

Preserve the meaning and provenance of BMF, Pub. 78 and revocation data.

Reusable compliance rules

Apply the same reconciliation policy across onboarding, donations, grants and recurring reviews.

Developer-friendly automation

Move source comparison into testable application logic.

Frequently asked questions

Is irs_bmf_pub78_conflict a universal IRS data-conflict flag?

No. The supplied mapping defines it specifically for BMF versus Pub. 78 disagreement on private-foundation classification.

Which dates should I compare for BMF and Pub. 78 freshness?

Use most_recent_bmf and most_recent_pub78.

Is organization_info_last_modified the same thing as an IRS source date?

No. It is the Pactman database refresh date for the organization details.

Should one IRS source always override another?

The supplied files do not define a universal precedence rule.

Next step

Preserve each IRS-derived signal, compare source-specific dates, and apply an explicit rule tailored to the status question your application needs to answer.

Ready to automate IRS source reconciliation?

Use Pactman Nonprofit Check Plus API to preserve source-specific nonprofit status signals and dates in one response.

Get an API Key →