Pactman Developer Resources · Nonprofit verification answers for developers and compliance teams
Home  /  Artifacts  /  How to Interpret a Nonprofit’s IRS Foundation Code
Artifact · Developer How-To

How to Interpret a Nonprofit’s IRS Foundation Code

Use `foundation_code` together with `foundation_code_description`. The code identifies the IRS foundation classification returned in the Pactman response, while the description provides its human-readable meaning. Preserve `foundation_509a_status`, `foundation_type_code` and `foundation_type_description` as additional foundation-classification fields, and keep BMF subsection, Pub. 78 contribution data, source freshness and `irs_bmf_pub78_conflict` separate.

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

Direct answer

Interpret a nonprofit's IRS foundation code by reading foundation_code together with foundation_code_description.

The code is the IRS foundation-code value returned in the Pactman response, while foundation_code_description provides its textual meaning. Keep foundation_509a_status, foundation_type_code and foundation_type_description as separate supporting foundation-classification fields. Do not substitute bmf_subsection for the foundation code because subsection and foundation classification represent different dimensions of the nonprofit record.

  1. Normalize the EIN. Remove spaces or dashes so 12-3456789 becomes 123456789.
  2. Send the EIN to the Nonprofit Check Plus API. Use the single-EIN endpoint for one nonprofit or the bulk endpoint for multiple EINs.
  3. Confirm the organization. Match ein and organization_name to the nonprofit your application intended to evaluate.
  4. Confirm the BMF record when BMF context matters. Review bmf_status, bmf_ein and bmf_organization_name.
  5. Read the IRS foundation code. Use foundation_code.
  6. Read the code description. Pair it with foundation_code_description.
  7. Preserve additional foundation classification. Review foundation_509a_status, foundation_type_code and foundation_type_description.
  8. Keep BMF subsection separate. Review bmf_subsection and subsection_description independently rather than treating them as foundation-code replacements.
  9. Review Pub. 78 and source-conflict context. When relevant, evaluate pub78_verified, organization_types and irs_bmf_pub78_conflict.
  10. Check freshness and status history. Review most_recent_bmf, most_recent_pub78, organization_info_last_modified, and revocation/reinstatement fields when the workflow needs a current classification decision.

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
foundation_code Returns the IRS foundation-code value used to describe the organization's foundation classification. Store the exact code rather than deriving one from another classification field.
foundation_code_description Provides the textual description corresponding to foundation_code. Present or store it with the code so downstream users do not have to interpret the code alone.
foundation_509a_status Provides additional 509(a) foundation-status context. Preserve as a separate supporting classification field.
foundation_type_code / foundation_type_description Provides another foundation-type code and its text description in the Pactman response. Keep these fields separate from foundation_code so the original response structure is preserved.
bmf_subsection / subsection_description Describes the organization's BMF subsection classification. Use for subsection context, not as a substitute for the IRS foundation code.
pub78_verified / organization_types Provides Publication 78 presence and contribution-classification context. Preserve Pub. 78 information separately when contribution eligibility matters.
irs_bmf_pub78_conflict Indicates whether BMF and Pub. 78 differ on the organization's classification as a private foundation. Route source disagreement through explicit review or source-aware logic.
Source dates most_recent_bmf, most_recent_pub78 and organization_info_last_modified provide freshness context. Use them when deciding whether the returned classification is current enough for the workflow.
Revocation fields revocation_code, revocation_date and reinstatement_date expose revocation-related history. Keep status history separate from foundation-code interpretation, but consider it in broader eligibility workflows.

Example decision logic

A practical foundation-code interpretation layer might:

  • confirm ein and organization_name match the intended nonprofit;
  • retain foundation_code exactly as returned;
  • pair it with foundation_code_description;
  • preserve foundation_509a_status, foundation_type_code and foundation_type_description separately;
  • retain BMF subsection and Pub. 78 contribution fields as distinct classifications;
  • flag irs_bmf_pub78_conflict instead of silently choosing one source; and
  • use source dates before treating the classification as current enough for the workflow.

The supplied bulk sample shows two different foundation-code outcomes. EIN "680343125" returns foundation_code: "16", foundation_code_description: "Public charity described in section 509(a)(1) or (2)", foundation_509a_status: "Section 509(a)(2) organization", foundation_type_code: "pc" and foundation_type_description: "Public charity described in section 509(a)(1) or (2)". EIN "996103790" returns foundation_code: "04", foundation_code_description: "Private non-operating foundation (section 509(a))", foundation_509a_status: "Private non-operating foundation", foundation_type_code: "pf" and foundation_type_description: "Private non-operating foundation (section 509(a))".

Important: Do not infer the foundation code solely from bmf_subsection. The current samples can share the same BMF subsection while returning different foundation codes and foundation-type classifications.

Why use a consolidated nonprofit verification API?

Foundation-code interpretation becomes more useful when an application can receive the code, its description, 509(a) status, additional foundation-type fields, BMF subsection, Pub. 78 context, conflict information and source freshness in one normalized response.

Pactman Nonprofit Check Plus returns those signals together. The supplied single-EIN and bulk examples use the same current 43 organization-level fields, so the same foundation-code logic can be reused for interactive checks and batch workflows.

One normalized response

Retrieve the IRS foundation code, its description, 509(a) status, foundation-type fields and supporting IRS context from one Pactman organization record.

Separate source signals

Keep foundation code, foundation type, BMF subsection, Pub. 78 contribution information and irs_bmf_pub78_conflict distinct so your application preserves what each field represents.

Reusable compliance rules

Apply one foundation-code interpretation layer across grantmaking, donation, donor-advised fund, nonprofit onboarding, fintech and recurring compliance workflows.

Developer-friendly automation

Convert the returned foundation-code fields into structured application attributes instead of requiring staff to manually interpret IRS foundation classifications for each EIN.

Frequently asked questions

Which Pactman fields contain the IRS foundation code and its meaning?

Use foundation_code together with foundation_code_description. The mapping file identifies the first as the foundation code and the second as its textual description.

Is foundation_type_code the same field as foundation_code?

No. They are separate fields in the current Pactman response and should remain separate in your application. Preserve both together with their corresponding descriptions.

Can I use bmf_subsection to determine the foundation code?

Not by itself. The current API samples show the same BMF subsection value alongside different foundation codes. Use the foundation-specific fields for foundation-code interpretation.

What should I do if BMF and Pub. 78 disagree on private-foundation classification?

Review irs_bmf_pub78_conflict together with the foundation fields and the relevant source dates. Preserve the disagreement so your workflow can apply explicit source-aware logic rather than silently overwriting one classification.

Next step

Use foundation_code and foundation_code_description as a paired IRS foundation-code result, preserve the additional foundation-type and 509(a) fields separately, and apply BMF, Pub. 78, conflict and freshness logic only when the broader verification workflow requires it.

Ready to automate foundation-code interpretation?

Use Pactman Nonprofit Check Plus API to bring IRS foundation classification directly into your application.

Get an API Key →