How to Track Restricted Funds in QuickBooks Online for nonprofits: A Practical, Auditor-Ready Workflow
- Roberto Striedinger
- 5 days ago
- 6 min read

If restricted funds keep you guessing, you are not alone. Many nonprofits struggle to see grant balances in real time, pull clean funder reports, or run a simple budget vs. actual for each grant. The good news is that QuickBooks Online can do all of this when you set it up with a clear structure.
This guide shows you exactly how to track restricted funds using Customers (renamed to Donors) with a tidy parent to child hierarchy. You will also learn why Classes should be reserved for functional expenses and programs, and how to produce a Profit and Loss by Donor that shows each fund’s activity and remaining balance.
Why structure matters
Restricted funds live or die by clarity. Funders want to see the revenue received, the expenses charged to that funding, and the remaining balance. Program leaders want the same thing in plain English. Your setup must deliver:
A consistent place to tag every restricted transaction
Functional expense reporting for Form 990 or T3010
Simple, repeatable reports for boards and funders
The architecture at a glance
You will use a 3 part structure:
Chart of Accounts for the standard categories
Classes for functional expense and program tracking
Customers/Donors for each restricted fund and its parent entities
Why not use Classes for restricted funds? Because Classes should map to Program Services, Management and General, and Fundraising, with optional subclasses for your specific programs and even projects under those programs. Your restricted fund tracking must be independent of this functional layer. Customers/Donors give you that second dimension cleanly.
Step 0. Turn on the right features and labels
Go to Gear → Account and Settings → Advanced
Turn on Track classes
(Optional) Leave Locations off for this workflow
In Advanced → Other preferences, change Customer label to Donor so your lists read naturally for a nonprofit
Step 1. Use Classes only for functional expenses and programs
Go to Gear → All lists → Classes and set up:
Program Services
Program A
Program B
Program C
Management and General (or Admin in Canada)
Fundraising
You can add deeper subclasses under each program if you need project level visibility. Keep Classes focused on how costs appear on the Statement of Functional Expenses. Do not mix restricted funds here.
Step 2. Build your Donors hierarchy for restricted funds
Go to Sales → Donors and create a tidy parent to child layout:
Parent donor: Restricted Funds This is only a container. You will not post revenue or expenses to this parent.
Child donors: One per funding source beneath Restricted Funds Example:
Restricted Funds
Fun Foundation
RAD Foundation
Grandchild donors: One per grant under each foundation Example:
Restricted Funds
Fun Foundation
2020 Fun Grant
2021 Fun Grant
RAD Foundation
2021 RAD Foundation Grant
Always check Bill with parent on the grant level donors. This lets reports roll up neatly and makes filtering easy.
Tip: Open a grant’s Donor profile and use Notes for key terms and conditions. Attach the PDF grant agreement in Attachments. When you are deciding which expense belongs where, you can reference the agreement in one click.
Step 3. Record restricted revenue to the specific grant donor
To record a check from a funder:
+ New → Bank Deposit or Sales Receipt
Received From: choose the grant donor (for example, “2021 Fund Grant” under “Fund Foundation”)
Account: Grant Revenue or Restricted Donations income
Amount: the deposit amount
Class: choose the functional class only if the grant is strictly program specific; if it spans multiple programs, leave class assignment to the expense side
Save. This ties the income directly to the grant donor.
Step 4. Tag expenses to the grant donor on every form
You can charge costs to a restricted fund from any entry screen:
Expense
Bill
Check
Journal entry
On each line:
Choose the correct Expense account (for example, Supplies, Salaries and Wages, Advertising and Marketing)
In the Donor or Name column, select the grant donor (for example, “2021 Fund Grant”)
In the Class column, select the relevant Program or Management and General or Fundraising class
Examples:
Fuel receipt for a site visit
Expense account: Travel
Donor: 2021 Fund Grant
Class: Program A
Journal entry for monthly payroll allocation
Debit: Salaries and Wages
Name: 2021 Fund Grant
Class: Program A
Credit: Checking (or payroll clearing)
The key is consistency. Every restricted expense must carry the grant donor and, separately, the Class.
Step 5. Produce a Profit and Loss by Donor that shows balances
Now for the payoff. You want a single report that shows revenue and expenses for each grant and the remaining balance.
Go to Reports → Profit and Loss
Click Customize
In Rows/Columns → Columns, choose Donors
In Filter → Donors, select the single parent Restricted Funds donor This includes all grant donors beneath it
Set the Report period from the beginning of time to your current cut off A common trick is From 01/01/1900 to month end, so you capture all revenue and all expenses over the life of the grant
Click Run report
What you get:
A P&L with one column per grant donor
Revenue lines show each grant received
Expense lines show every transaction charged to each grant
Net income per column equals the grant balance remaining
Use this with program leads and funders. If someone asks, “What is left on the 2021 Fund Grant?” you can read the number straight from the column total. If a funder asks for detail, click into the number to open the transaction list.
Step 6. Optional: Budget vs. Actual by grant
If your funder requires a budget comparison, you have two options:
Maintain a simple off-system budget for each grant and reconcile to the P&L by Donor report each month
If you use Projects for large, multi-year grants, run Project profitability and pair it with an external budget tracker
This article centers on the Donor hierarchy method because it keeps Classes free for functional reporting and it works across QuickBooks Online and Desktop. If you already use Projects, you can blend the two, but avoid duplicating dimensions.
Frequently asked questions
Can I still use Locations? Yes, but it is not required for this workflow. Keeping it simple reduces errors. Many nonprofits leave Locations off when they use the Donor hierarchy for restricted funds. The limitations of Locations is that you can only categorize at the “transactional” level, but not the individual line item.
What if a grant is time restricted but unrestricted in purpose?It’s up to you if you want to record expenses against the time restricted grant, or simply release the funds based upon time passed. Either way, it can be tracked using the donor feature.
Can I split one expense across two grants? Yes. Use two lines on the same transaction. Put the correct amount on each line and tag each line to the proper grant donor and Class.
How do I see total restricted funds on hand? On the P&L by Donor report filtered to the Restricted Funds parent and run from the beginning of time through your reporting date, look at the total net income at the far right. That equals the combined restricted fund balance. It will tie to your Restricted Net Assets on the balance sheet once you post your period end reclassification entries.
Does this work in QuickBooks Desktop? Yes. The navigation looks different, but the concept is the same. Use Customers and Jobs in a parent to child structure, reserve Classes for functional expenses, and run a P&L by Customer:Job filtered to the parent.
Common pitfalls to avoid
Using Classes for restricted funds. You lose clean functional reporting and create double work.
Posting to the parent donor. Always post at the grant level. The parent and foundation levels are for grouping and filters only.
Forgetting to set the report start date to “beginning of time.” A grant received last year will not show if you only run the current year.
Missing Donor tags on expenses. If expenses do not carry the grant donor, the P&L by Donor will understate spend and overstate balances.
Overcomplicating the Chart of Accounts. Keep income simple: Individual Contributions, Grant Revenue, Earned Revenue, In-kind. Let Donors and Classes do the heavy lifting.
Quick setup checklist
Turn on Class tracking and rename Customer to Donor
Build Classes for Program Services, Management and General, and Fundraising, with program subclasses
Create a Restricted Funds parent donor
Add a donor for each funder under Restricted Funds
Add a donor for each grant under the funder
Record revenue to the grant donor
Tag every restricted expense line with the grant donor and the correct Class
Run P&L by Donor filtered to Restricted Funds from 01/01/1900 through period end
Bring clarity to your restricted funds
With this structure, you can answer the three questions every funder asks: What came in, what went out, and what is left. You will give program teams the same clarity without exporting to a maze of spreadsheets.
If your restricted fund reporting still feels noisy, we can set up the Donor hierarchy, tune your Classes, and build the exact reports your board and funders expect.
Schedule a free discovery call with MightyNonprofits and let’s get your restricted funds audit ready and easy to manage.
Sources: ✅ “Nonprofit Accounting – Tracking Grants & Restricted Funds” – Intuit ✅ “How to Record Donations or Charitable Contributions in QuickBooks Online” – Intuit ✅ “Tracking Restricted Donations with QuickBooks Online Projects” – Atchley & Associates LLP ✅ “QuickBooks Online Nonprofit Setup Tips” – Aplos Academy ✅ “QuickBooks for Nonprofits Setup Mistakes” – The Charity CF

