Nonprofit Starter Pack and Money
Last Updated on Monday, 9 May 2011 09:43 Written by Steve Monday, 9 May 2011 09:43
At a recent gathering of nonprofit-focused Salesforce developers, we got into a deep discussion about how to best track money in Salesforce. Everyone agreed that the Opportunity object was key, but there were differing opinions about what else needed to be done and how. I realized that this group of people, who had years and years of consulting experience with nonprofits, did not have a shared understanding of the best practices of how nonprofits should track money. I include myself in this group–I’ve had nonprofit accounting explained to me countless times, and it’s been a little different each time.
This article is meant to lay out what I’ve learned about this subject from all the great finance people I’ve worked with over my career. But more importantly it will examine how it all relates to Salesforce.com and some changes Kevin Bromer is making to the Nonprofit Starter Pack.
First I’ll talk a bit about how the Nonprofit Starter Pack works today. Next I’ll get into the accounting of it all, with the full disclaimer that I am not an accountant. And then I’ll get into the new way we’re going to do things, and talk about why that’s better, all with the goal of us better understanding the business processes we support.
Salesforce.com isn’t an accounting system, but thousands of organizations use it to track money. Many organizations directly integrate with their accounting systems. Modeling money well in Salesforce.com makes that kind of integration easier. And even if you don’t integrate, the changes we’re making provide much better support for key nonprofit work like pledged gifts, and gifts with multiple payments.
I got a lot of help in writing this article from Debbi Lewang, Shalinee Thakur, Nick Bailey, Sam Dorman and of course Kevin Bromer–any insights should be attributed to them, any errors in logic or accounting are most definitely mine.
How the nonprofit starter pack works today
The Nonprofit Starter Pack is used by thousands of organizations on Salesforce.com to manage their organizations and their missions. These organizations are incredibly diverse, engaging in everything from class-room education to lobbying congress to providing health care to the homeless. But no matter what they do, they must track their organizational revenue stream, and many do in the form of gifts, grants, ticket sales, etc.
Salesforce.com has a database object called Opportunity that represents revenue and potential future revenue. It was created by the company to handle sales deals when Salesforce.com was limited to Sales and Marketing. Now that the platform is so much more flexible, the Opportunity object serves well as any kind of revenue–gifts, grants, memberships, ticket sales, etc.
The Nonprofit Starter Pack uses Opportunity to track revenue, and it works pretty well. We also have a Recurring Donations package that can be used to track gifts that are paid with more than one payment. It has a simple object and wizard for creating a schedule of Opportunities spaced out at intervals you select. It is a simple way to create multiple Opportunities that are related.
There are some limitations with the way the Nonprofit Starter Pack supports money today. The main problems have to do with a lack of support for cash in addition to revenue. In the next section I’ll talk about the accounting realities that we are planning to support.
Revenue and Cash: Nonprofit accounting
Revenue tracking and forecasting is critical to all nonprofits. Annual revenue must be reported to the IRS, and any business that doesn’t know its revenue picture can’t effectively plan for the future. This is easily done by reporting on Opportunities, and most nonprofits using Salesforce.com have already figured that out.
Nonprofit accounting (and accounting in general) is more complex than simply recording revenue, though. We need to support cash tracking in addition to revenue. This is because nonprofits can report revenue without receiving any money. When that happens from a donor or a grant maker, we often call it a pledge. The donor commits to giving to the organization, and may identify a payment schedule at that time. Let’s look at an example case to get into the specifics.
The nonprofit Friends of Tiny Creek (FOTC) wins a $1 million grant from a foundation. At the time of the award, they are promised a check for $250,000 and are told to expect 3 additional payments of $250,000 over the next 3 years. How should this be recorded on the financial statements?
FOTC records $1 million in revenue from the foundation. This is revenue in the fiscal year in which the grant was received. Because the cash isn’t received at the time the revenue is recorded, it can’t be spent yet. While the funder can put other restrictions on the gift, we will assume that this one hasn’t, and the money will be available when the cash payments are received.
So this $1 million commitment is recorded as a credit (increase) to revenue on the income statement and a debit to assets on the balance sheet.
One week later the $250,000 check comes in as promised. $250,000 is now cash that can be spent. On the balance sheet, cash is debited by $250,000 and assets receivable is credited by the same amount. The effect of this seemingly backwards transaction (there is a reason I’m not an accountant) is that $250,000 of the grant funds are now available for use and $750,000 is still to be received. [1]
The initial pledge and the resulting cash are related, but come in at very different times. And in this case you can see how the date the revenue is recorded is very different from when FOTC can actually spend the money to support it’s mission efforts. If FOTC isn’t paying attention to it’s cash picture, they’re going to have a hard time planning and delivering.
As the yearly payments come in, they are recorded and revenue is released accordingly. When all payments are made, the receivable goes to zero and the funds are available.
In this case, though, the foundation in question rescinded the last payment of $250,000. In this case, FOTC must record that amount as a write off against the receivable. That balances the sheet, and the change in revenue can be reported in their annual numbers.
The case of monthly giving
On the face of it monthly giving looks a lot like a pledge of multiple payments similar to our grant example above. A monthly giver commits to $20/month and then makes payments on a schedule. However, the monthly giver’s commitment isn’t an official pledge unless they tell you the end point of their giving. In many cases the monthly gift is started with no set end date. If you don’t know the end date, you don’t know the total revenue, so you can’t record it as pledged revenue on your income statement.
Because of this, each monthly gift should be considered a separate revenue entry, with it’s own matching cash entry when it is paid.
Better modeling cash in the Nonprofit Starter Pack
As stated earlier, the Opportunity object is great for tracking revenue. But what about cash related to that revenue? There isn’t a good way to model cash in the Nonprofit Starter Pack, but lots of Salesforce.com users have already solved this for themselves–that’s the beauty of a flexible platform. We’ve looked at those solutions can come up with something that we think works pretty well. When we release this functionality, you’ll be able to turn it on, or continue to use the Nonprofit Starter Pack as you are today.
The Nonprofit Starter Pack will get a new child object to Opportunity called Payments. Payments will be where cash is recorded. The Payment object will represent all the cash received by an organization. It will be helpful in a number of ways:
- Payments will allow you to record received cash payments against promised revenue
- Payments will allow you to record a payment schedule and make sure you don’t forget to collect them when they come due
- Payments will allow you to write off rescinded payments
- Tracking cash in Salesforce.com allows for much better analytics than most accounting systems
The Payment object will have rollup summary fields to the Opportunity that show you the number of payments per Opportunity, the amount of payments that have been made, and the remaining balance. Having this information on Opportunity makes it very easy to see which Opportunities aren’t fully paid yet.
Ok, back to our scenario for some illumination.
FOTC is a very stable organization. If we look at a dashboard of their revenue (Opportunities), we see that it’s uniform. They get about the same amount of revenue each month.

Most of those Opportunities were one-time payments–the cash came in the same time the revenue did. But about a third of them were paid in multiple payments. If we take a look at a chart of the cash, you’ll see that it’s much more irregular than the revenue chart. Note that the scale is different in these charts.

The same is true with forecasting–revenue in the future is expected to be pretty stable.

If we look at a cash forecast, it’s very lumpy, with peaks and valleys.

FOTC needs to see its revenue picture and also it’s cash picture, and it’s not clear from one what the other will look like.
Revenue where the cash is received immediately
At most nonprofits, most gifts aren’t pledged, they are just given. A typical scenario is a $100 check coming in the mail. Recording that check requires recording the revenue and the cash at the same time. Data entry is a time consuming task as it is. Having to do double entry–revenue and cash–for all gifts is an unacceptable burden, so we built automatic cash recording right in.
In the case of a gift where revenue and cash are simultaneous, the new payments functionality creates one payment for every Opportunity. It keeps this payment in sync with the Opportunity, unless you choose to set up a payment schedule. This solves the case of multi-payment gifts without causing extra work for all those gifts that don’t have multiple payments.
By creating automatic cash payments for each opp, the cash picture isn’t limited just to pledges with payment schedules, but includes all cash for all revenue. This allows for better reporting, like the charts shown above.
The case of monthly giving
For monthly giving, each gift should be considered it’s own revenue event because they aren’t connected to a known pledged amount. Therefore each gift should be an Opportunity, rather than Payments under one Opportunity. Each gift will, of course, have a payment, because all revenue does when you’re tracking revenue and cash.
The Recurring Donations functionality in the Nonprofit Starter Pack will handle this case better with the next release. You will be able to create a Recurring Donation Profile, detailing the recurring gift. The wizard will then create Opportunities according to your schedule. At present moment we’re thinking that the Recurring Donation functionality doesn’t need to know about payments at all–it will just interact with Opportunities. This may change, but it’s what we’re thinking now.
Currently Recurring Donations has the word “Pledges” in the object name. If you’ve read this far, you understand now that this is incorrect. Kevin is planning major upgrades to Recurring donations, and we will likely be renaming things to make more sense. He’s also planning on supporting the automatic creation of Opportunities for open-ended giving, and keeping the Recurring Donation Profile in sync with the Opportunities. We’ll likely give you the ability to keep a rolling year of potential gifts in the system. If you don’t want all those open gifts out there, we’ll likely give you a way to keep just one open gift for each recurring donation.
Conclusion
While Salesforce.com isn’t an accounting system, better modeling of nonprofit accounting practices is great functionality and we expect it to be popular. The coming upgrades to the Nonprofit Starter Pack will allow for cash reporting, write-offs of revenue, and facilitate collections of promised payments. Upcoming improvements to Recurring Donations will make it easier to handle recurring donations that are open ended.
If you have questions or comments on our implementation, or have feature requests, please comment on this post.
————-
1. Technically, multi-year grants are received as restricted assets. Each year the revenue is released from restricted net assets to operating net assets as it is needed (credit on the restricted side, debit on the unrestricted side). Another interesting point – multi-year pledges are worth less than cash received today.You have to discount to present value and adjust based on the outstanding amount of the pledge each year. Again, this is something you’ll likely want to handle in your accounting system.
This post is immensely helpful! As someone with lots of salesforce.com experience but no NPO experience, I’ve been (mostly) pleasantly surprised at the contrast between the NPSP and a standard edition. Can you comment on the timeline for the upcoming improvements? Thank you!
Very interesting read! We’ve had a Payments child object of Opportunities from the beginning (and don’t use the Starter Pack currently), because, as you note, it is especially important for organizations that receive multi-payment institutional grants. If a look-see at our implementation would be helpful, let me know. I’ll be eager to see the auto-payment-entry functionality, which we currently don’t have, and we’re trying to grow our individual fundraising, so that that data entry burden is increasing. Is it something along the lines of a checkbox on the Opp that indicates either that an Opp is paid-in-full or will have Payments entered against it, and if paid-in-full, the single Payment is created by a trigger?
A couple of questions:
1. It seems like, but isn’t altogether clear, that in addition to open-ended monthly giving, this new functionality will also support proper pledges from individuals, where multiple payments are agreed upon in advance towards a total gift. Is that correct? I think this is especially prevalent for board gifts and capital campaigns.
2. As a non-User of the Starter Pack, I’m not sure how the following scenario would play out with managed packages and such, but let me put it out there: in addition to donations, we have an earned revenue Opportunity record type for the membership dues that our member organizations pay to us. We often offer payment plans for members who prefer not to pay their dues all at once, or whose fiscal year matches up badly with ours, and we use the same Payments object to track this. Would an NPSP org be able to make use of the Payments object and associated functionality in the context of a different Opportunity record type?
This is a great addition to NPSP. Do you have a release date?
Thanks for all your work on this.
-Brian
Bryan and Brian,
No release date yet but Kevin’s working on it. Join the Nonprofit Starter Pack groups to stay up on developments:
User Discussion: http://groups.google.com/group/nonprofit-starter-pack-users
Announcements: http://groups.google.com/group/npsp-announce
Developer Discussion: http://groups.google.com/group/npsp-discuss
Thomas,
Multi-payment pledges are supported with the new payments functionality. Monthly donations are different, and will be supported with new Recurring Donations functionality that is a bit further out.
The automatic payment for simple Opportunities is key to this working as a cash recording system, I think.
The payment object will work with multiple Opportunity record types. You can create custom fields and even record types on the payment object as well. If you want to do tricky things, you can always grab the open sourced code when it’s released and use it to roll your own.
Steve, this is great news. I’m on the board of several nonprofits, and the nonprofit accounting rules have been one of my major hurdles that I had to get over to really understand the organizations’ finances. It’s great to know that the NPSP is going to better accomodate the standard nonprofit GAAP.
Glad SOMEONE gets excited about Generally Accepted Accounting Practices
Thank you all for continuing to work on and improve the NPSP. This was a helpful post and I appreciate that it was written by a non-accountant so I can understand it.
This is really awesome news! Very excited to hear about this.
Great explanation of very complicated processes, too.
Yay!
There are a number of issues with the split you have described between cash and revenue. Unfortunately non-profits have all sorts of non-cash revenue they receive. For example an “in-kind” donation of food has to be recorded as a donation, and may either be given away to a client, or may be turned into cash by reselling it, and the cash can’t be predicted on the date of receipt. Good stewardship means capturing the donation, but it may not result in cash. Also a gift of stock may result in cash only when sold, and the price may be entirely different on the date of sale then the date of receipt. Or the stock may be held as part of an endowment. This can become very complicated, and most Financial Officers don’t want the Development (Fund-Raising) people involved since it involves GAAP. But for simple non-profits your split makes sense.
Another issue I came across is “bounced checks” and “declined credit cards.” Both show up as revenue when the donation or event fee is received, but look like they are cash receipts when the check or credit card number is received. When the bank notification comes in (usually to the financial side of the house) it may result in a reversal or other way of indicating that the revenue was not really received. To complicate issues further, suppose the check was received on 12/31 and the notice of the NSF was received on 1/10 (in the next fiscal year). What do you do then?
One other issue to watch out for is matching gifts. Many companies will match gifts. For example I worked for a major company that matched donations on a 1 for 2 match up to a limit. Of course my donation was received as cash immediately, but the company only paid out the matching gifts on a quarterly basis. There are sources where you can look up the company match so that you can calculate the revenue of the company match, and take the revenue credit immediately, but the cash from the company will not be received until the end of the quarter (or month or year depending on the company). One company I worked for would only give their match in equipment credits, further complicating the cash receipts.
Steve, amazing write up. I spoke with the foundation folks over a year ago about providing some modeling around integrated credit card and electronic check processing. As you might know we give Chargent away free to non-profits (5 users) and there is a Force.com Sites donation page on the AppExchange free from Mansa Systems (unmanaged). Both work natively with Opportunities with a packaged “Transactions” list. We have about 120 NPOs using it today. Any thoughts on how we can make this even easier and bundle it into a base configuration?
Hi Jim- Would love to chat with you further. Feel free to drop me an email at kbromer @ the domain you’d expect.
Thanks!
Kevin
I am SOOOOOO excited about the new release. There are a lot of vendors in this world that would have walked away from this… saying “hey, it works, get used to it and quit your belly-aching”. But this community (and especially Steve Anderson!) has persisted in building a better mousetrap.
There is more! It was also this community that made the smart decision (circa 2007) to rebuild the NP Template into the NPSP set of AppExchange listings.
And MORE! This community also made the decision to initially work with opportunities rather than build out payments from the get go. You understood that it was not a perfect solution, and had the guts to make a decision that leveraged all of the “legacy” code that already worked with opportunities,
I love you guys/gals! Thank you for saving me from becoming a cynic.
doug
This may be a mis-understanding on my part, but based on this post I was hoping/expecting that the Winter 12 release would enable open-ended recurring giving. It looks like you still have to indicate a # of payments up front which is contrary to the spirit and reality of open ended recurring gifts. Am I missing something! We haven’t fully implemented, so perhaps I’m not seeing the full functionality of the new release yet….
Hi Melissa-
Open-ended recurring donations is not part of the Winter 12 Salesforce release, but will be part of the next Nonprofit Starter Pack Recurring Donations package release in late fall. You’ll be able to upgrade directly from the existing recurring donations package to the new version once its out.
Thanks!
Kevin
Very interesting and useful read. I believe that monthly recurring automatic donations are a great untapped source of funds. Why? Two reasons:
1. Many people cannot afford to give substantial amounts of money at one time. Giving $25 per month manually is tedious. It doesn’t happen. However, a $25 monthly gift is $300 per year, not huge but not trivial.
2. An automatic gift becomes self “renewing”. That is, it can go on year after year. You don’t have to ask for it again and again. Cost of sales goes way down. (Oops, there’s that dirty S-word.)
my2cents… Bob
Kevin,
So when can we be expecting this release? Not until fall(Oct 2012?)? This release would push our non-profit over from CiviCRM to Salesforce in a heartbeat.
Thanks,
Zack
The payment object is in version 2.1 of the Contacts and Orgs packages. You can get it here:
http://nonprofitstarterpack.org/