Skip to content

Plinth for spreadsheets

=PLINTH(range, field)

Every grant itemized in a US Form 990, 990-EZ or 990-PF, as one formula. A column of EINs or organization names in, a column of answers out: what a funder gave and to whom, who funds a nonprofit, the latest filed financials. The grant graph is on a free key. Figures are read from named filings, FY2017 to FY2023 complete.

Google Sheets

Copy the template sheet. The script comes with the copy, the Examples tab already has live formulas, and the Fields tab lists everything the function answers. Then Extensions → Plinth → Open Plinth and paste a key.

Template sheet being publishedGet a free key →

The one-time authorization asks for three things: the current spreadsheet, requests to data.useplinth.com, and the sidebar. Your key is stored in your own Google account, never in the sheet, so sharing a sheet never shares a key.

In a cell

=PLINTH(A2:A50, "grants_made_total")
every itemized grant each funder in A2:A50 made, all years
=PLINTH(A2:A50, "grants_made_total", 2023)
the same, filing year 2023 only
=PLINTH(A2, "top_funder")
the funder that reported the most dollars to the organization in A2
=PLINTH(A2, "grants_to_total", , "043407816")
what the funder in A2 reported granting to that recipient
=PLINTH(A2:A50, "total_revenue")
latest filed revenue (Plus or Pro key)
=PLINTH(A2:A50, "compliance")
clear, review, adverse or not_screened (Pro key)

The range may hold EINs, with or without the hyphen and with a leading zero lost to the spreadsheet, or organization names. A name resolves when exactly one organization files under it; otherwise the sidebar's Resolve names turns the column into EINs through the keyless search and notes what each matched. One API call per 50 rows, so a 500-row column is ten calls.

A cell that is not an answer is a marker, never a blank or a zero:

Fields

The same list the function offers as autocomplete and GET /api/v1/batch/fields serves. “Year” says whether the optional third argument filters the grants or is ignored because the field reads the latest filing.

Identity

FieldNeedsYearWhat it is
nameFreeignoredOrganization name as filed on its latest return, or in the IRS Business Master File when it does not e-file.
stateFreeignoredTwo-letter state as filed.
urlFreeignoredThe organization's public page on data.useplinth.com, every figure linked to its filing.
cityPlus or ProignoredCity from the IRS Business Master File.
zipPlus or ProignoredFive-digit ZIP as filed.

Grants made

FieldNeedsYearWhat it is
grants_made_totalFreefiltersSum of the itemized grants this organization reported making, whole dollars, over every filing year we hold or the one year given.
grants_made_countFreefiltersNumber of itemized grant lines this organization reported making.
recipients_countFreefiltersDistinct recipient organizations with a resolved EIN. Grants to individuals and unresolved names are not counted.
grants_made_first_yearFreeignoredEarliest filing year with an itemized grant from this organization.
grants_made_last_yearFreeignoredLatest filing year with an itemized grant from this organization.
top_recipientFreefiltersThe recipient that received the most dollars from this organization, by name where we can resolve one.

Grants received

FieldNeedsYearWhat it is
grants_received_totalFreefiltersSum of the grants other filers reported making to this organization, whole dollars. Only grants itemized on a funder's return appear.
grants_received_countFreefiltersNumber of grant lines other filers reported making to this organization.
funders_countFreefiltersDistinct funders that reported a grant to this organization.
top_funderFreefiltersThe funder that reported the most dollars to this organization.

Between two organizations

FieldNeedsYearWhat it is
grants_to_total+ recipient EINFreefiltersDollars this organization reported granting to the organization in the `to` argument. The row's organization is the funder; `to` is the recipient.
grants_to_count+ recipient EINFreefiltersGrant lines from this organization to the organization in `to`.

Classification

FieldNeedsYearWhat it is
ntee_codePlus or ProignoredNTEE code from the Business Master File. Blank where the IRS carries none, which is common.
causePlus or ProignoredThe NTEE major group as a cause label.
subsectionPlus or ProignoredExempt subsection, decoded (for example 501(c)(3)).
foundation_typePlus or ProignoredFoundation status decoded from the BMF: public charity, private foundation, supporting organization and so on. The field a grantmaker checks before deciding whether expenditure responsibility applies.
ruling_yearPlus or ProignoredYear the IRS recognized the exemption.

Latest filing

FieldNeedsYearWhat it is
tax_yearPlus or ProignoredFiscal year of the latest return we have parsed. The year every financial field below belongs to.
total_revenuePlus or ProignoredTotal revenue on the latest return, whole dollars.
total_expensesPlus or ProignoredTotal expenses on the latest return, whole dollars.
net_assetsPlus or ProignoredNet assets or fund balances at year end on the latest return.
grants_paidPlus or ProignoredGrants and contributions paid, the filer's own total line on the latest return. Compare with grants_made_total, which sums the itemized grant lines.
missionPlus or ProignoredMission statement as filed.

Compliance

FieldNeedsYearWhat it is
complianceProignoredThe headline of the compliance screen: clear, review, adverse or not_screened, with the screens that fired in the note. Spends one screen per distinct EIN from the Pro daily compliance allowance; rows past it answer `capped`. A screen that did not run is never reported clear.

Excel

The same function as an Office add-in, typed =PLINTH.GET(range, field) because Excel prefixes every custom function with its add-in name, with a task pane for sign-in, Fill and Resolve names. Until it is listed on AppSource it installs by sideloading the manifest, which takes a minute and works on Excel for the web, Mac and Windows.

  1. Download the manifest.
  2. In Excel: Insert → Add-ins → My Add-ins → Upload My Add-in (web and Mac). On Windows, put the file in a shared folder and add that folder under File → Options → Trust Center → Trusted Add-in Catalogs.
  3. Open the Plinth pane from the Home tab and paste a key. The key is stored by Office for this add-in, never in the workbook.

Behind it

Both add-ins call POST /api/v1/batch, which answers one field for each of up to 500 organizations in order and is documented with the rest of the Grants API. Anything you can do in a cell you can do from a script.

Get a free key →Plans for the profile and compliance fields →

Every figure is read from a named IRS filing and dated to its fiscal year. The IRS releases e-file data 12 to 24 months after the year ends. Funding relationships are reported as association, never as causation.