In-App Donations
I recently did some research into what is required for nonprofits accept donations in their iOS and Android apps. I document my findings here.
In addition to building and maintaining the OneBusAway app for iOS, I am also a founding board member of its parent organization, the Open Transit Software Foundation. Unfortunately, there’s not a lot of money in volunteer-run nonprofits that build free, open-source transit apps, and so we’re constantly scrambling to figure out how to fund initiatives like build a great trip planner into the iOS app.
I’m currently researching a number of different means by which we could pay for this work, and one obvious method is to accept donations in our iOS and Android apps. Here’s what I’ve found out about both platforms’ policies.
Apple App Store/iOS Apps
Apple allows in-app donations via Apple Pay, but their requirements are quite stringent. You can find Apple’s official documentation on the Apple Pay for Nonprofits page, which lays out much of the information below.
- Set up an account with a payment provider, like Stripe.
- Set up an Apple Developer Program membership. (Which you ostensibly already have if you’re trying to accept donations in your iOS app.)
- U.S.-based nonprofits: register with Candid (which is part of GuideStar), and receive a Candid Seal of Transparency.
- Non-U.S. nonprofits: register with Benevity.
- Implement Apple Pay in your in app. Documentation for this is here: https://developer.apple.com/documentation/passkit/apple_pay
Apple Pay supports recurring payments via the PKRecurringPaymentRequest
class, which was introduced in iOS 16.
- WWDC 2022 Session: What’s New in Wallet and Apple Pay
- Stripe has general documentation on Apple Pay and specific documentation on recurring payments
Google Play Store/Android Apps
Google’s requirements, although seemingly less stringent than Apple’s, are also much more vague. Some critical documentation only seems to exist as a Stack Overflow post quoting a Google support representative.
Google Play’s billing system cannot (“must not”) be used for donations. See Section 3B of the Payments policy page. Section 4 of the Payments policy page confusingly reads:
Other than the conditions described in Section 3 and Section 8, apps may not lead users to a payment method other than Google Play’s billing system.
It seems, though, according to this Stack Overflow post, that a registered 501(c)(3) non-profit can include a button in their app that opens a webpage within an external web browser, where the user can make a donation. Unfortunately, I have no idea how you might go about contacting Google Play Support to submit the necessary documentation. Maybe this is a case where it’s best to ask for forgiveness rather than permission. i.e. wait til they ‘catch’ you, and then send them documentation.
Update: the Google Pay API FAQ page states:
Approved nonprofit organizations (NPOs) can integrate the Google Pay API to collect donations, if, and only if, they provide documentation to prove, certify, and validate their nonprofit status. For example, US NPOs must provide valid 501(c)3 status proof from the IRS in order to qualify.
However, in typical Google fashion, there is no clarity on how “documentation to prove, certify, and validate” can be given to them.