I’ve been doing bookkeeping for nonprofits for about 10 years now, and something interesting happened over the past 18 months. Three of my nonprofit clients went from having 2-3 main funding sources to suddenly managing 5-7 different revenue streams. And honestly? It’s been a challenge to keep everything organized.
What Changed?
Here’s what I’m seeing across my clients:
Traditional setup (2024):
- Foundation grants (60-70% of revenue)
- Individual donations (20-30%)
- Maybe one annual fundraising event (10%)
Current setup (2026):
- Foundation grants (still important, but now 35-40%)
- Corporate partnerships (new! 15-20%)
- Recurring monthly donors (15%)
- Earned income from workshops/memberships (10-15%)
- Merchandise and online shop (5%)
- Fee-for-service educational programs (5-10%)
- One-time major gifts (variable)
One of my clients, a youth education nonprofit, just launched a membership program and an online shop selling branded gear. Another is running paid professional development workshops that bring in steady earned income. A third partnered with local tech companies for multi-year corporate sponsorships.
The Tracking Challenge
The diversification is smart—I read that nonprofits need to reduce dependency on unstable funding and balance grants, individual donors, corporate partnerships, and earned income. But tracking it all in Beancount while maintaining fund accounting best practices? That’s where I need your help.
Current approach:
I’ve set up separate income accounts for each major category:
This works okay for basic tracking, but I’m struggling with:
-
Restricted vs unrestricted funds - Some grants have specific restrictions (“only for youth programs,” “capital improvements only”). How do you track that in plain text without creating an explosion of accounts?
-
Board reporting - Directors want to see revenue mix trends: “What percentage came from earned income vs donations this quarter?” I can write queries, but curious what reports others generate.
-
Multi-year commitments - Corporate partnerships often span 2-3 years with milestone payments. How do you track these long-term pledges?
-
Donor intent - For major gifts, donors sometimes have informal preferences even if not legally restricted. Where does that documentation live in a Beancount workflow?
Questions for the Community
For those of you working with nonprofits (or tracking your own complex income structures):
- Account structure: Am I over-complicating with too many sub-accounts, or not detailed enough?
- Metadata vs accounts: Should restrictions be tracked via metadata/tags instead of separate accounts?
- Reporting queries: What reports do your nonprofit clients/boards actually ask for?
- Best practices: Any pitfalls I should avoid as clients add even more revenue streams?
I love that Beancount gives us complete transparency and version control—perfect for nonprofit accountability. But I want to make sure I’m setting these clients up with a scalable structure as they continue diversifying.
Anyone else navigating this? Would love to hear your approaches!