Grant Revenue Recognition

When grant money becomes revenue — and why it sometimes waits.

Updated July 21, 2026

Not every grant becomes revenue the moment the cash arrives. Under nonprofit accounting rules (ASC 958-605), when you record grant money as revenue depends on the kind of grant it is. NP Ledger handles this for you: you tell it the grant type, and it posts the right journal entries automatically as cash comes in, expenses post, and conditions are met. This feature requires a Standard plan or higher.

Recording grant revenue too early is one of the most common — and most consequential — nonprofit accounting mistakes. It overstates your revenue, misstates your net assets, and can trigger audit findings. For government grants, getting it wrong can mean returning money. Recognizing revenue at the right moment keeps your books accurate and your funders confident.

NP Ledger supports four grant types. You set the type on the grant detail page (Grants → a grant → Change type).

Type When revenue is recognized Typical funder
Unconditional As soon as cash is received A foundation grant with no strings attached
Conditional When the grant's conditions are met A foundation grant tied to outcomes or reports
Reimbursable As you incur expenses (you bill the funder afterward) Most federal and local government contracts
Advance (refundable) Ratably, as you incur allowable expenses State and federal advances you must return if unspent

Unconditional

The simplest case. Cash arrives, revenue is recognized. Nothing else to track.

Conditional

The funder attached a barrier: a report they must accept, an outcome you must achieve, matching funds you must raise. Until that barrier is cleared, the cash you receive is held as a refundable advance (a liability), not revenue. When you mark the last required condition met, NP Ledger releases the advance to revenue automatically.

You'll see this on the grant detail page: cash received shows up under Deferred (refundable advance), and Recognized stays at $0 until conditions are met.

Reimbursable (cost-reimbursement)

The funder pays you back for costs you've already incurred. As you post expenses against the grant, NP Ledger accrues a Grant Receivable and recognizes restricted revenue. The expenses then appear on your Ready to Bill list so you can invoice the funder. When the reimbursement cash arrives, it clears the receivable.

Advance (refundable advance)

The funder sends cash up front, but you must return anything you don't spend. The cash starts as a refundable-advance liability. As you incur allowable expenses, NP Ledger releases an equal amount to revenue — so revenue tracks your actual spending, never more than the advance you hold.

Every recognition entry NP Ledger creates is a separate, automatic journal entry — your original entry stays exactly as you recorded it. These automatic entries are tagged and listed under Auto-generated entries on the grant detail page, so an auditor can trace any recognition back to the event that caused it.

You never post these entries by hand. NP Ledger creates them when:

  • Cash is received on a conditional or advance grant → it's moved to the refundable-advance liability.
  • An expense posts on a reimbursable or advance grant → revenue is recognized.
  • A condition is marked met on a conditional grant → the advance is released to revenue.
  1. Open the grant from the Grant Dashboard and click Grant Detail.
  2. Click Change type and choose the grant type. NP Ledger shows a plain-English preview of when revenue will be recognized.
  3. For a conditional grant, add the conditions that gate recognition.
  4. Optionally add an installment schedule — the payments you expect from the award letter. Receipts auto-match to these so you can spot late or short draws.

A conditional or advance grant usually gets its own fund. But funds get shared — a donor gives to the same cause, someone pays a program fee that belongs to the same project, and it all ends up in one place. That's normal, and it's fine.

What you don't want is the funder's condition holding back someone else's money. A donor who mails you a check hasn't asked you to file a report first. Their gift is revenue the day it arrives.

NP Ledger keeps those apart, and there are two ways to tell it which is which:

Name the funder on the grant. On the grant's edit page, set Funder Contact to the foundation or agency that made the award, and record the donor on the gift. From then on, money received from anyone else into that fund is recognized right away instead of waiting on the funder's conditions.

This is the setting that actually turns the behavior on. Two things to know:

  • It needs a contact on both sides. If a gift has no donor recorded, NP Ledger can't tell who sent it, so it plays safe and waits on the conditions. An unknown sender isn't proof of a different sender.
  • It doesn't apply to reimbursable grants. There the funder is paying you back for money you've already spent, and payment often arrives from a pass-through agency or fiscal agent rather than the funder directly. Treating that as "someone else's money" would double-count your revenue, so NP Ledger doesn't try.

Or mark the account as not-a-gift. On a revenue account, set What a credit to this account represents to Exchange Transaction (a fee, ticket, or program-service payment) or Contributed Nonfinancial Asset. Money credited there is recognized when received, even inside a conditional grant's fund.

So a "Camp Registration Fees" account marked Exchange Transaction stays revenue even when the fee lands in a conditional grant's fund. A participant paying to attend isn't making you a promise you have to earn.

The other settings — Unconditional Contribution, Conditional Contribution, Other — don't change deferral. They answer a different question (is this a tax-deductible gift?) than the one deferral turns on (did the funder attach a condition?). The grant's own type decides that, and it should: a government grant is usually marked "Other" and is more likely to carry conditions, not less.

If you set neither of the two options above, nothing changes: everything in the grant's fund waits on the grant's conditions, which is the safe default. You only need this when a fund holds more than one kind of money.

One caveat worth knowing. A donor's gift that's recognized this way still sits in the grant's restricted fund, so it shows up under Net Assets With Donor Restrictions. If the gift was really unrestricted and just got filed in the wrong place, move it to the right fund — changing the account or the funder won't fix the column.

On the grant detail page, find the condition and click Mark met. Record at least a sentence of evidence (the funder's acknowledgment, the accepted report) and the date. When you submit, NP Ledger releases the appropriate revenue and logs the action. If other required conditions are still open, the revenue waits until the last one is met.

Was this page helpful?

Ready to try NP Ledger?

Native fund accounting, Form 990 support, and smarter bookkeeping for nonprofits.