Yalantis: iOS, Android And Web App Development Company

In-App Purchases on iOS and Android

One of most common standpoints on application is to see it as a source of revenue. Any sensible developer who gets down to mobile application development is looking at least at ROI (return of investment) when choosing monetization strategy.

There are different revenue generating models you can turn to. We wrote about that in the article about a path of a small app to big monetization success awhile back.

In-app purchase is one of the models that can help you make money. Although we have mixed feelings about it. The secret’s out — it’s not easy to make money with apps. Having experimented with monetization on our own mobile products, we know how hard it is to choose the right source of revenue and sustain it.

Speaking of in-app purchase, say, you’ll never know until you try. You are welcome to read the story of one product to know more about what we experienced with our mobile app My Day (which now has versions both iOS and Android, by the way).

Read also: 5 Reasons Why to Port iOS App to Android.

In the majority of cases properly picked sales direction inside mobile applications has a monetary potential. As you can see on the graph, freemium model is the most profitable and therefore app developers tend to use it.


In this article, we are to talk a bit about how in-app purchases can be implemented into your iOS and Android mobile applications.

What IAP in mobile apps may look like

Freemium monetization includes various forms of in-app purchases, such as purchasing virtual goods like upgrades, speed-ups, in-app currency, buying additional functionality like levels, unique extra smileys or content, buying more time to use the app, paying to remove ads, or a combination of them all.

Content generating apps usually earn from subscription by charging fees for the regular delivered content or service from inside your application with recurring weekly, monthly or annual billing.

New York Times app, for instance, allows you to view a certain number of articles, but curious readers must subscribe to access the blocked rest of them.

The most common option according to the App Annie’s survey is offering additional application functionality for a price, which turns out to be a preferred method among developers, us included. What makes total sense is to launch two versions of the product — one freemium, the other one paid. The free version offers limited functionality with an option to go pro by purchasing additional functionality or a range of them. So if your product is new and users don’t have any idea whether it meets their expectations, they can download a free version, try it out and if the app’s worth it, purchase premium.

IAP on Google Play

In-app purchases of digital content in Android are managed by Google Play In-app Billing service thorough Google Play app’s API. In-app Billing service can be implemented only in applications that you publish through Google Play. Google Play app handles the connection between your Android application and the Google Play server. However, it isn’t in charge of your content delivery.

You are responsible for delivering the digital content that you sell in your Android applications. Also, even if you have multiple apps with in-app purchase, one and the same product cannot be published for another Android app.

As for financial transactions occurring in the app, it is up to Google Play to manage. The products for sale are defined in Google Play Developer Console.

To configure the list of products handled by the appstore, please consult the guide.

NOTE: You must have a Google Wallet merchant account to use the In-app Billing service on Google Play and purchase digital products in your Android applications.

The In-app Billing Version 3 API is the latest easy to implement version. It lets you manage in-app products and subscriptions on Android more effectively and includes improved synchronous purchase flow among other useful features.

What we can draw your attention to is that the Developer Console allows to set up a free trial period that lets Android users try your subscription content before buying it. After the trial period is over, it automatically converts to a full subscription managed according to the subscription’s billing interval and price.

NOTE: Once a user has purchased an in-app product or a subscription on Android device, there is no refund window. So users will need to contact you directly to request a refund.only through the standard payment processor, Google Wallet. We would recommend to duplicate the information about purchases on your server to make it harder for advanced users to crack your app.

IAP on App Store

iOS apps have similar In-App Purchase service as that of Android. In order to implement in-app purchase in iOS app you need to design an In-App Purchase store and embed it inside your app using Store Kit framework.


Store Kit communicates with App Store for secure payment processing and notifies your app when the transaction is made and the purchased items should be provided to users. Regarding the implementation see the programming guide.

NOTE: You must make your In-App Purchase items available to all of the devices registered to a user.

Items offered via In-App Purchase fall within 5 types:

Consumables — purchased every time the user needs them. They are the simplest to implement, since there is no ‘restore’ requirement. (e.g. extra lives in a game that expire, other supplies, digital currency)

Non-Consumables — purchased once and available to all devices registered to a user (additional functionality, e.g. audio effects)

Auto-Renewable Subscription — a recurring subscription that will renew itself until the user opts out; (e.g. recurring delivery of newspaper, magazine issues, weekly subscription to a dating service, some cloud storage service)

NOTE: Beware of a tricky character of this type! It’s not that easy to disable recurring billing once a user has signed up for that. Developer cannot accomplish opt-out procedure for a user and will have to somehow explain which steps should be taken to opt-out. Otherwise, be ready for tons of complaints.

Free Subscription — permits the delivery of free subscription content to Newsstand-enabled applications without any charges to the user. It can be turned off by the user

Non-Renewing Subscription — allows the sale of services with a limited duration. (e.g. one week subscription to voice guidance feature within a navigation app).

NOTE: In case a user wants to renew the subscription, you have to initiate a new Store Kit purchase request. Then it’s your responsibility to track the expiration date of initial and renewed subscription. Also your app should include a mechanism to deliver the purchased Non-Renewing Subscriptions to all iOS devices owned by a user.

To make sure your vision of In-App Purchase coincides with Apple’s one, see their guidelines.

Before letting in-app purchase out to the iOS user environment you should test it. Apple provides the possibility to do it via iTunes Connect. For that you would need to create products to purchase and test accounts to make the purchases.

There is special testing sandbox environment provided by Apple that enables testing without any incurring charges. See Test Users in the iTunes Connect Developer Guide for more information about creating test user accounts.

NOTE: You should remember to implement the possibility of restoring purchases in case a user deletes the application and downloads it again after some time or installs it on another device. The purchases are bound to user Apple ID, not a mobile device.

About lawsuits, injustice and pop-ups

Thanks to a $32.5 million settlement Apple made with the Federal Trade Commission over children’s in-app transactions, it is now paying a refund to customers whose children made in-app purchases on their iPhones or iPads without their consent. The FTC action against Apple required the company to change its practices to ensure users weren’t charged for unauthorized purchases.

When making an in-app purchase from an iOS device, users get a warning reminding them of the 15-minute window they have to make additional purchases without re-entering their password. The thing isn’t new, but what it has been updated with under the compulsory requirement is that the alert now appears whenever an in-app purchase is made with the options «Settings» and «OK».

Users can either dismiss the warning by tapping «OK» or change their settings to disable the window. Moreover, by clicking on «Settings» users can apply in-app purchase limitations, including an option to require passwords for every buy. Alternatively, users can turn off in-app purchasing altogether.


What about Google? Why not to sue them? In fact, Google followed in Apple’s steps by hitting with a similar lawsuit over its billing practices regarding in-app purchases. The complaint alleges the company has deliberately tricked young children into making millions of dollars in purchases. In response Google offers instructions on its website that clarifies in detail how to configure a mobile device so that it requires a password for all purchases.

Both defaulters, Google and Apple charge 30% of the price for apps and all in-app products that you sell on Google Play/App Store.

Open Source IAP Alternative

What to do with in-app purchases in case you are aiming at multiple app markets? Sorry iOS apps, this alternative is going to concern only Android devices.

OpenIAB is an open-source library that provides an easy way to work with in-app purchases whatever store your app is tied with. The magic is that one APK will work in all the app stores and automatically use the already existing IAB APIs under each store, as well as an open API that app stores could implement.

OpenAPI doesn’t process any payments, it is just an API enabling the apps to communicate with app stores in order to request in-app billing. This way developers don’t have to integrate different APIs to their apps.


You can check the list of Android appstores here.

OpenIAB Lib is still under development. The job of this library is to wrap in-app billing APIs of several appstores. After you integrate OpenIAB Lib, and your app will support in-app billing for all these stores.

OpenIAB API is an in-app billing API for appstores to implement. OpenIAB API is integrated into OpenIAB Lib as one of the supported APIs. By implementing OpenIAB API, the appstores will automatically support any app that uses OpenIAB Lib.

There is much to talk about regarding in-app purchases in mobile apps on iOS and Android. If you have any questions, need suggestions, clarifications and surely app development, feel free to contact us.


Video recording and streaming

Our market research of video recording and editing apps and an overview of the technology that powers them

Video Recording and Video Editing App Development: Top Performers
Written by Iryna Pototska

Video Recording and Video Editing App Development: Top Performers

In 2012, the Instagram photo editing app was praised as one of the hottest social platforms of the year. ...

Video Recording App Development: How We Built Instagram for Videos
Written by Dmytriy Dovbnya

Video Recording App Development: How We Built Instagram for Videos

I don’t want to offend anybody, but we need to admit it - there are two types of users that we need to ...

What Technology Powers Periscope's Live Video Stream?
Written by Iryna Pototska and Boris Vinogradov

What Technology Powers Periscope's Live Video Stream?

Mobile technologies that were used to develop Periscope and can be used to develop similar video-streaming apps

Mobile payments

Figuring out which mobile payment technology is right for your app can be a challenge. Here is what we have to say about different mobile payment services

Stripe or Braintree?
Written by Pavel Apisov

Stripe or Braintree?

While there are multiple solutions for processing payments via mobile apps, Stripe and Braintree stand ...

How Do You Integrate Apple Pay Using Stripe For Your Shopping App?
Written by Roman Sherbakov

How Do You Integrate Apple Pay Using Stripe For Your Shopping App?

We’ve been talking about shopping apps a lot recently, but somehow we haven’t yet touched upon payment po...

How to Innovate Your Mobile Payment Application?
Written by Jennifer Birch

How to Innovate Your Mobile Payment Application?

With the growth in mobile consumption and ownership, people are now more connected with technologies that...

NFC in Android & Payment Cards
Written by Ilya Bershadskiy

NFC in Android & Payment Cards

Near Field Communication technology is capable of bringing devices together and establishing a wireless r...

Mobile App Payment Gateway Integration
Written by Kate Abrosimova

Mobile App Payment Gateway Integration

How can you build a mobile app that accepts payments? Whether it’s a travel app or a fashion mobile com...

How to Develop a Bitcoin Wallet App
Written by Ilya Bershadskiy

How to Develop a Bitcoin Wallet App

A couple of months ago we had the opportunity to develop an innovative financial application powered by...

Audio processing on Android

Technology behind Horizon, our open source library for sound visualization

Drawing a Cubic Bezier with OpenGL ES for Sound Visualization on Android
Written by Artem Kholodnyi

Drawing a Cubic Bezier with OpenGL ES for Sound Visualization on Android

Our experience drawing Bezier curves with Android Canvas for Horizon, our open source library for sound visualization.

How to Process Audio for Your Android project
Written by Roman Kozlov

How to Process Audio for Your Android project

Sound manipulation techniques that we used for our Horizon open source library for sound visualization.

Introducing Horizon, Our Own Open Source Library for Sound Visualization
Written by Roman Kozlov

Introducing Horizon, Our Own Open Source Library for Sound Visualization

Horizon is an Android library that visualizes sound quickly and beautifully

uCrop for Android

uCrop is our open source image cropping library for Android. It lets you scale and rotate images, change crop aspect ratio, and supports touch gestures

Introducing uCrop, Our Own Image Cropping Library for Android
Written by Aleksey Shliama

Introducing uCrop, Our Own Image Cropping Library for Android

uCrop allows you to clip images for further use on Android. Its key features include scaling images, rotating images, changing crop aspect ratio, supporting touch gestures and more

How We Created uCrop, Our Own Image Cropping Library for Android
Written by Aleksey Shliama

How We Created uCrop, Our Own Image Cropping Library for Android

A step-by-step case study on how we implemented the TransformImageView, the CropImageView, GestureImageView, the UCropActivity, and the UCrop Builder