OK, I'm going to try REALLY hard to not rant against Starbucks "coffee", because while I will not drink it except in desperation, I know a lot of people will, and I'd rather not judge you based on your caffeine consumption habits.
[Note: I worked it out in the end, by looking at Amazon's app (not the Kindle one). Corrections down the bottom]
Here's how it works. You get yourself a Starbucks card, which is a credit card look-alike, and you load an amount of money onto it at the till. Once you have it loaded up, you can just swipe the card to pay for your coffee.
So far, so good, and so damn useful. I wish most of the smaller cafe's I go to had this*.
So, the app is an electronic version of this. You enter your card number and CSC (same idea as a credit card), and you can then scan the card instore and pay for your coffee using your phone.
BRILLIANT. CLAP CLAP (and not the slow-clap version)
Now, to top up your card, you can do it two ways, and this is where it all gets a bit.... inconsistent.
You can go into a SB's and, like normal, add credit to your card. No problem there at all.
You can go into the app, enter your credit card details, and top up your card there.
Now, the last one sets of alarm bells for me, having been rejected a few times for daring to even link to a signup page without giving Apple their 30%**. From the AppStore Review Guidelines, which are normally very clear and followed by Apple:
11.2: *Apps utilizing a system other than the In App Purchase API (IAP) to purchase content, functionality, or services in an app will be rejected *11.3: Apps using IAP to purchase physical goods or goods and services used outside of the application will be rejected *11.13: *Apps that link to external mechanisms for purchases or subscriptions to be used in the app, such as a “buy” button that goes to a web site to purchase a digital book, will be rejected
OK, so if I get this correctly:
You can't use IAP in an app to purchase goods or services which are used outside of the app. So I can't use IAP to buy a book from Amazon. Fair enough.
You can't use any system OTHER than IAP in an app.
If you put in a mechanism to buy something which is external to IAP, for use in the app, and you get rejected. (or is is a loophole that, because the credit card collection is IN-app, it's ok?)
It appears to be ok to use a non IAP method to take payment for physical goods or services which are used outside of the app. (The Starbucks exception). But wouldn't this allow me to buy a book (physical goods?) inside an app. And it appears you can do. You just can't buy something (a book) to be consumed inside the app (Kindle) - even if it's mostly useful OUTSIDE the app (eg, on a Kindle).
So how do Starbucks get away with asking you to enter your credit card details to buy credit? I can see they can't use IAP (11.3) as, last time I checked, my phone can't make espresso for me. And they can't use any payment method other than IAP, nor can they ask for your credit card and process the payment themselves....
So that's how Starbucks get away with it. Because they are taking payment using an external provider (so Apple doesn't have to deal with refunds), for things which can't be consumed inside the app, it's allowed. So I guess if I had an app which allowed you to sign up to a separate service from within the app (one which the app didn't integrate with), it should be allowed. I hope.
Did I miss something here??? Or is Starbucks getting preferential treatment? (Looks like I did!)
Apple: Nothing if not consistent with AppStore rules. I'd be very happy if Apple relaxed the rules around this, and IAP was used only for things which are consumed or used in the app. eg, if you write an expense tracking app, and want to sell the function of taking photos: fine. IAP from in the app. Makes perfect sense. But if the app's "up sell" is for full service accounting, and the app is a very small, minor part of that, then no.
However, if they did, they would have to allow the one-click purchase of Amazon content in the Kindle app, and I don't think Apple wants to do that.
It all comes down to what you are purchasing:
Physical: do your own payments. Sell whatever inside the app.
Digital, or consumed within the app: IAP only
The edge case: something which is digital (ebook?) but is NOT consumed with the app: Allowed? Amazon doesn't do it in their shopping app, for buying kindle books, but really, they should be allowed.
*sadly, I work in a coffee desert at the moment. Chiswick could REALLY do with a good cafe or 2.
** yes, apple expected 30% of the monthly accountancy fee's charged by My Accountant Friend, in their Version 2 app, just for linking to a page with their signup form on it. Odd, given the app is clearly only for existing customers (it's the first line of the description, in HUGE letters).