← Back to Help Center

Nonprofit (ASC 958) findings

LedgerClean includes a set of nonprofit-specific diagnostic rules that run automatically when we detect the engagement is a 501(c) entity. Detection is inferred from the Balance Sheet — any row label containing "Net Assets" triggers the nonprofit rules; for-profit files skip them entirely.

The same signal also works in reverse: findings whose remediation only makes sense for a for-profit are suppressed on nonprofit files. Today that covers the complex-equity-structure warning (the one framed around sole proprietorship / partnership / LLC equity naming), which is skipped when the engagement is marked as a nonprofit or the Balance Sheet carries a Net Assets label — a 501(c)(3)'s equity section is Net Assets classes, so that finding would be noise.

Current rules (more are on the roadmap):

Net asset classification (ASC 958-210)

ASC 958-210 requires a nonprofit to split net assets into with donor restrictions and without donor restrictions. We flag this as a WARNING-severity finding in the Chart of Accounts category whenever the Balance Sheet shows:

The pre-2018 classifications ("Unrestricted", "Temporarily Restricted", "Permanently Restricted") still count as a valid split — they are legacy names but the structure is there. Those files are not flagged by this rule; modernizing the labels is a separate concern.

Severity is WARNING rather than CRITICAL because a nonprofit may legitimately consolidate the Net Assets line on the face of the Balance Sheet while still carrying the split in sub-accounts in the Chart of Accounts. The bookkeeper should confirm whether the sub-accounts exist before restating year-end financials.

Government-grantor / stale receivables (ASC 958-605)

Government grants and aged receivables often carry reporting conditions that defer revenue recognition. This rule scans the A/R Aging report and flags rows where either:

The finding lists every affected customer with the triggering reason and a dollar amount, and recommends reviewing each under ASC 958-605 conditional-contribution rules rather than auto- adjusting. The bookkeeper or auditor confirms the grantor's reporting conditions and whether revenue recognition has been deferred appropriately.

Only two distinct grantor matches in A/R are enough to flip the rest of the nonprofit detector on even when the Balance Sheet isn't uploaded — a single match could be a for-profit vendor supplying a government agency, but two together are a reliable nonprofit signal.

Functional expense classification (ASC 958-720)

ASC 958-720 and Form 990's Statement of Functional Expenses require every expense to be split across program services, management & general, and fundraising. QBO firms that don't use the classes dimension typically encode the split into the account name itself ("Program: Rent", "Admin: Salaries", "Fundraising: Events", "G&A: Utilities").

This rule walks the Account List for expense-typed accounts and measures what fraction carry a functional keyword in the name. When a nonprofit has 15 or more expense accounts and fewer than 10% of them carry a functional keyword, we surface a WARNING. At exactly 0% we call it out as missing entirely; between 0 and 10% we call it incomplete and note the count.

Recognized functional keywords include: Program, Management & General, Administrative / Admin, Fundraising / Fundraiser, Supporting Services, G&A.

A small sample (up to 10) of the unclassified account names is included in the finding so the bookkeeper can see exactly which accounts need a functional prefix.

Class-based detection is a follow-up. If your nonprofit uses QBO classes to tag transactions with program / management / fundraising at post time instead of encoding it in the account name, this rule will currently false-positive. Confirm whether classes are in use before restructuring the CoA.

Mixed restricted / unrestricted income accounts

Restricted contributions should post to a dedicated revenue account until the restriction is released — otherwise net asset release tracking breaks down at year end. This rule walks the General Ledger on income-typed accounts whose names don't already encode a restriction class, classifies each transaction, and flags accounts that are mixing:

Materiality floor: both sides must have at least one transaction totaling $500 or more. This is deliberately high-precision — the fix is a CoA restructure (or a QBO Class dimension), never an automatic adjustment, so silent misses are cheaper than false positives.

Accounts whose names already include words like "Restricted", "Unrestricted", "With Donor Restrictions", "Temporarily Restricted", or "Permanently Restricted" are skipped — splitting the income streams is exactly the fix this rule recommends, so they're already resolved.

The finding lists each affected account with restricted / unrestricted counts and totals so the bookkeeper can see how lopsided the mix is at a glance.