How can I handle donations through iOS?

13.8k views Asked by At

My team and I are going to write an app for an organisation where the user can donate to this organisation. The app itself is not the problem, but we don't really know how we can handle this.

Our first thought was that we could make the donations like if you purchase an item in a game for real money. But there are 2 problems:

  1. There are only fixed amounts like 99c and so on
  2. Apple gets 30%, and we want the user to know who gets how much. The developers: 10%, The Organisation 90%. But if Apple gets 30% of ALL the money, and people see that, they may not donate for that reason. I wouldn't either.

Our second thought was that we implement a webthingy (don't know how the element is called atm) in our app, which simply works like Safari and we direct them to the donation page or something, but how does the organisation know that the donations are from our app then?

Is there any other way we can handle this? I think people will be able to donate via credit cards and PayPal.

Edit, I found this:

21.1 Apps that include the ability to make donations to recognized charitable organizations must be free

21.2 The collection of donations must be done via a web site in Safari or an SMS

The app will be free, and it is fine if it has to be via SMS or Safari, but HOW does the organisation know the donations coming in, are from the app?

5

There are 5 answers

4
Lou Franco On BEST ANSWER

But HOW does the organisation know the donations coming in, are from the app?

  1. Make a new page on the organization's site that has a URL that isn't linked to anywhere and non-indexable by search engines (robots.txt).
  2. In your app, make a UIWebView set to a URL on your own servers that redirects to the page you make in step 1. You should also make this URL non-indexable.

In that page

  1. Check that the referrer is your page
  2. Check that the user agent is whatever UIWebView sends
  3. Have the page log whatever happens somewhere (date/time, donation amount, etc) -- to reconcile with their data
  4. When a successful donation is made, it should record that it came from this page (and therefore, your app)

Someone could fake that they used your app by making the appropriate request, but why would they. Even if they did, you should probably get credit for that donation anyway.

0
Aaron Hayman On

I don't believe Apple will allow you to use in-app purchases to accept donations. Marco looked into this with his Instapaper app and couldn't do it (now he charges for server searches). You actually have to provide something for the money. Your best bet is to develop a web app that uses a private api to process the donation. That way you can know for certain where the donations are coming from.

Ah, nevermind, you can accept donation on a free app. Missed that. Still, using a private api in a web app is probably your best bet.

1
aporat On

You can't use IAP for any virtual good that are not consumed in the app as far as I know, apple will reject your app if you try it. (However i've seem some exceptions to that)

try www.stripe.com, they have the best payment interface i've seem so far.

someone even made an iOS SDK to help you with the implementation https://github.com/briancollins/stripe-ios

0
Rob On

Update:

US non-profits can accept donations via Apple Pay:

Starting November 14, 2016, nonprofits based in the United States can use Apple Pay to provide a simple and secure way to accept donations from within their app and website. Similar to using Apple Pay to buy goods and services, users can donate without entering their billing, shipping, or contact details.

The App Store guidelines go on to say:

Acceptable

...

Approved nonprofits may fundraise directly within their own apps or third-party apps, provided those fundraising campaigns adhere to all App Review Guidelines and offer Apple Pay support. These apps must disclose how the funds will be used, abide by all required local and federal laws, and ensure appropriate tax receipts are available to donors. Additional information shall be provided to App Review upon request. Nonprofit platforms that connect donors to other nonprofits must ensure that every nonprofit listed in the app has also gone through the nonprofit approval process. Learn more about becoming an approved nonprofit.

Unacceptable

...

Unless you are an approved nonprofit or otherwise permitted under Section 3.2.1 (vi) above, collecting funds within the app for charities and fundraisers. Apps that seek to raise money for such causes must be free on the App Store and may only collect funds outside of the app, such as via Safari or SMS.

My old answer, below, predated this revision in the charitable giving policy.


As you note, section 21 of the App Store Review Guidelines says:

21.Charities and contributions

21.1 Apps that include the ability to make donations to recognized charitable organizations must be free

21.2 The collection of donations must be done via a web site in Safari or an SMS

You ask how you know if they're from your app: For Safari use a unique URL or include a HTTP parameter that you append to the URL when you invoke Safari, which their web server code will capture. As other have suggested, you might want to log the initiation of the transaction for your own reconciliation purposes, too. For SMS, I assume you'd have a dedicated SMS number for app donations.

0
Muhammad Ahmad On

From April 2020 you cannot donate inside the app. Apple teams say you can't donate inside the IOS app if you are a nonprofit organization. you must redirect the user to Safari or on your website for donation or using SMS for donation.

Otherwise, You can use Apple Pay for donation like in App Purchase if you are profit Organization

soo if you are a nonprofit organization and you want to donate, please follow these steps. I am using Flutterwave SKD for donation. You can use as you want like Stripe and PayPal etc.

1: I am using the Flutterwave Php SDK for donation. just download the PHP SDK of your payment gateway from your Payment gateway DOC.

2: create a webpage for payment on your web end and from your app open this webpage into Safari, And pass user ID with URL parameter so you can keep the record of which user donate us and how much. like (PageWebUrl/userID) (https://www.mywebPageLink.com/donation/userId=20)

3: When a user successfully donates save the data into that user-id and redirect the user to your app.

4: call an API to retrieve the donation data for your app.

Coooool Done...