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.
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 endpoint for one nonprofit or the bulk endpoint for multiple EINs.
- Confirm the organization. Match
einandorganization_nameto the nonprofit your application intended to evaluate. - Confirm the BMF record when BMF context matters. Review
bmf_status,bmf_einandbmf_organization_name. - Read the IRS foundation code. Use
foundation_code. - Read the code description. Pair it with
foundation_code_description. - Preserve additional foundation classification. Review
foundation_509a_status,foundation_type_codeandfoundation_type_description. - Keep BMF subsection separate. Review
bmf_subsectionandsubsection_descriptionindependently rather than treating them as foundation-code replacements. - Review Pub. 78 and source-conflict context. When relevant, evaluate
pub78_verified,organization_typesandirs_bmf_pub78_conflict. - 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
einandorganization_namematch the intended nonprofit; - retain
foundation_codeexactly as returned; - pair it with
foundation_code_description; - preserve
foundation_509a_status,foundation_type_codeandfoundation_type_descriptionseparately; - retain BMF subsection and Pub. 78 contribution fields as distinct classifications;
- flag
irs_bmf_pub78_conflictinstead 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.
Related Pactman artifacts
- How to Determine Whether a Nonprofit Is a Public Charity or Private Foundation
- How to Interpret IRS BMF Data for a Nonprofit
- How to Determine a Nonprofit’s IRS Subsection From Its EIN
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.