By Muhammad Talha Mohsin | Published on 6/09/2025
What This Article Covers
- Why nonprofit verification matters more than ever
- What Pactman's Nonprofit Check Plus API actually does
- How it works — with real JSON and code
- How fast and reliable it is (with a graph!)
- How to use it as a developer
- Common data freshness issues — and how the API handles them
- Who should use this API
- Plans, pricing, and final thoughts
Why Verifying Charities Matters in 2025
We live in a time when donations happen with a click. Platforms, apps, and grant systems must know:
Is this nonprofit real? Is it tax-exempt? Is it clean from sanctions?
That’s where the Pactman Nonprofit Check Plus API comes in. It's designed to give real-time charity verification using official data from the IRS, OFAC, BMF, and Pub 78.
What Is the Nonprofit Check Plus API?
It’s a modern API that verifies nonprofits using their EIN (Employer Identification Number).
Here’s what it checks:
- Tax-exempt status via IRS BMF
- Inclusion in IRS Pub 78
- Absence from the OFAC SDN (Sanctions) list
- Info on deductibility and foundation type
This is not a basic database—it’s a live compliance engine built for:
- Grant platforms
- Donor-advised funds
- CRMs
- Banking apps
- Fintech payment tools
What You Get: Sample API Response
Here's what a real result from the API looks like:
{
"code": 200,
"message": "OK",
"errors": null,
"data": {
"pactman_org_url": "https://pactman.org/profile/nonprofit/aborjaily-bannish-foundation-r5U9r8yRcZ",
"organization_info_last_modified": "5/02/2025 1:01:39 AM",
"ein": "996589560",
"organization_name": "ABORJAILY BANNISH FOUNDATION",
"organization_name_aka": null,
"address_line1": "50 LOWELL AVE",
"address_line2": null,
"city": "WESTFIELD",
"state": "MA",
"state_name": "Massachusetts",
"zip": "01085-2643",
"filing_req_code": "00",
"pub78_church_message": null,
"pub78_organization_name": "Aborjaily Bannish Foundation",
"pub78_ein": "996589560",
"pub78_verified": true,
"pub78_city": "Westfield",
"pub78_state": "MA",
"pub78_indicator": "0",
"organization_types": [
{
"organization_type": "Deductions for donations to private non-operating foundations are generally limited to 50 percent of adjusted gross income (AGI). This limit increases to 60% of AGI for cash donations. For Non-Cash assets held for more than one year, the limit is 30% of AGI.",
"deductibility_limitation": "50%",
"deductibility_status_description": "PF"
}
],
"most_recent_pub78": "3/10/2025 12:00:00 AM",
"bmf_church_message": null,
"bmf_organization_name": "ABORJAILY BANNISH FOUNDATION",
"bmf_ein": "996589560",
"bmf_status": true,
"most_recent_bmf": "3/10/2025 12:00:00 AM",
"bmf_subsection": "03",
"subsection_description": "501(c)(3) Public Charity",
"foundation_code": "04",
"foundation_code_description": null,
"ruling_month": "07",
"ruling_year": "2024",
"group_exemption": "0000",
"exempt_status_code": "01",
"ofac_status": "This organization was NOT included in the Office of Foreign Assets Control Specially Designated Nationals (SDN) list.",
"revocation_code": null,
"revocation_date": null,
"reinstatement_date": null,
"irs_bmf_pub78_conflict": false,
"foundation_509a_status": "N/A",
"report_date": "6/17/2025 8:27:00 PM",
"foundation_type_code": "pf",
"foundation_type_description": "Private non-operating foundation (section 509(a))"
},
"took": 8,
"nonprofit_check_count": 1
}
💡 That means:
- The org is real
- Tax-exempt
- Not on any U.S. watchlists
How Fast and Reliable Is It?
Here’s how the API performed across 2,143 calls:
How Developers Can Use It
Example: Single EIN Lookup in Python
import requests
import json
from datetime import datetime
EIN = "996589560"
API_URL = f"https://entities.pactman.org/api/entities/nonprofitcheck/v1/us/ein/{EIN}"
response = requests.get(API_URL)
if response.status_code == 200:
raw = response.json()
data = raw["data"]
# Deductibility logic
org_types = data.get("organization_types", [])
deductibility = {
"cash": "60% of AGI",
"non_cash": "30% of AGI",
"standard": "50% of AGI"
}
if org_types:
first_type = org_types[0]
if "deductibility_limitation" in first_type:
deductibility["standard"] = first_type["deductibility_limitation"]
# Date parsing for ISO format
def to_iso(date_str):
try:
return datetime.strptime(date_str, "%m/%d/%Y %I:%M:%S %p").isoformat() + "Z"
except Exception:
return None
output = {
"status": raw["code"],
"message": raw["message"],
"data": {
"legal_name": data.get("organization_name"),
"ein": data.get("ein"),
"irs_status": data.get("subsection_description"),
"foundation_type": data.get("foundation_type_description"),
"deductibility": deductibility,
"address": {
"street": data.get("address_line1"),
"city": data.get("city"),
"state": data.get("state"),
"zip": data.get("zip")
},
"last_updated": to_iso(data.get("organization_info_last_modified"))
},
"took_ms": raw["took"]
}
print(json.dumps(output, indent=2))
else:
print("Error:", response.status_code, response.text)
API Response (Simplified for Developer Use)
{
"status": 200,
"message": "OK",
"data": {
"legal_name": "ABORJAILY BANNISH FOUNDATION",
"ein": "996589560",
"irs_status": "501(c)(3) - Public Charity",
"foundation_type": "Private non-operating foundation (section 509(a))",
"deductibility": {
"cash": "60% of AGI",
"non_cash": "30% of AGI",
"standard": "50% of AGI"
},
"address": {
"street": "50 LOWELL AVE",
"city": "WESTFIELD",
"state": "MA",
"zip": "01085-2643"
},
"last_updated": "2025-05-02T01:01:39Z"
},
"took_ms": 8
}
Key Fields for Developers
Common Use Cases
- Donation Platforms – Verify tax-deductible status before processing donations.
- Grant Management Systems – Automatically validate nonprofit eligibility.
- Financial Software – Check deductibility limits for tax reporting.
- Nonprofit Directories – Pull the latest IRS-recognized org data.
⚠️ Best Practice: Keep batches ≤ 50 EINs to avoid timeout delays.
The IRS Delay Problem — And How Pactman Solves It
Even with the best tech, government data updates lag. Here's what to expect:
🔐 But the API helps by exposing this field:
"irs_bmf_pub78_conflict": true
So your system can flag mismatches, giving your team or clients the chance to double-check.
Real Success Story: Automating Grants with DAFs
A top donor-advised fund (DAF) provider integrated Pactman and reported:
They replaced spreadsheet reviews with a smart system that "just worked."
Pricing and Access
You don’t need a credit card to start using the API.
- 🔐 Secure with API Key
- 📚 Documentation
- 💬 Support via email and online
Who Should Use This API?
If you’re building or working with:
- Fintechs managing donations
- CRMs for nonprofits
- Government grant systems
- Payment platforms needing charity compliance
- Banks and auditors
Then you need this API. It keeps your app compliant, fast, and trustworthy.
Final Thoughts
The Pactman Nonprofit Check Plus API isn’t just a charity lookup tool — it’s an insurance policy for modern financial platforms. With real-time data from the IRS and OFAC, clean JSON, developer-first architecture, and low false positives, it’s a must-have for serious platforms.
Start free today and never doubt your donations again.
🔗 Try the API Now












Top comments (3)
Very insightful and well-explained — the examples made it crystal clear.
Good read — very informative and well-structured! The real JSON examples and practical use cases made it easy to understand the API’s value.
thanks sir