Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

Institutional Purchases: Understanding and Detecting

A download spike caused by Institutional purchases visible in App Store Connect causes confusion to many app developers. Several posts on Reddit or Apple’s forums try to answer what they are, but there’s still a lot of confusion about them. Apple’s Volume Purchase Program (VPP) relates and results in a different behavior for your app.

What are institutional purchases, and what should you do differently about them? I decided to dive in for my app, RocketSim, which got thousands of those installs.

Encountering a spike in Total Downloads

You’re opening App Store Connect Analytics and you’re looking at your total downloads. Suddenly, you’re surprised and excited to see a huge bump. This happened to me not long ago for RocketSim:

Institutional Purchases can cause a spike in total downloads when looking into App Store Connect Analytics.
Institutional Purchases can cause a spike in total downloads when looking into App Store Connect Analytics.

I quickly noticed that this isn’t an upward trend but rather an exception. Diving deeper into the details by grouping by source type, I found out that this spike was caused by insitutional purchases:

In App Store Connect Analytics, you can group by source type to see where most of your app installs are coming from.
In App Store Connect Analytics, you can group by source type to see where most of your app installs are coming from.

While I remained excited—I’ve had 25K installs on this day!—I was also confused. What are these institutional purchases?

How do you stay current as a Swift developer?

Let me do the hard work and join 20,341 developers that stay up to date using my weekly newsletter:

What are Institutional Purchases?

Institutional purchases refer to app acquisitions made by organizations such as schools, universities, or businesses through Apple’s Volume Purchase Program (VPP) or Apple Business Manager (ABM). These purchases are typically done in bulk and managed centrally, allowing institutions to distribute apps to their users—students, employees, or devices—without requiring individual Apple IDs or personal payment methods. This clarifies the spike of 25K downloads on one day!

When an institution buys your app through these programs, it’s often deployed via Mobile Device Management (MDM) solutions, enabling silent installation, license management, and remote configuration.

Funny enough, some developers thought these were fake downloads. That’s not the case; institutional purchases are completely valid installations!

Indicating Institutional Purchases inside Sales Reports

You can find the same purchase in sales and trend reports. In my example, units are set to 25000 accordingly. What’s more interesting is the Promo Code column, which is set to BUS. This likely stands for Business and is used internally by Apple to identify purchases made through Apple Business Manager or the Volume Purchase Program (VPP) for organizations.

In-App Purchases don’t work for Institutional Purchases

While I was excited about the spike in total downloads, I also realized I didn’t see a similar spike in purchases. Based on my initial conversion rate to trials, I should’ve at least noticed a spike in trials as well.

After digging deeper into this matter, I found out that it’s not always possible to use in-app purchases when an app is installed via Apple’s Volume Purchase Program. Users will see an alert like:

In-app purchases fail when an app is installed via Apple's Volume Purchase Program.
In-app purchases fail when an app is installed via Apple’s Volume Purchase Program.

This is a German example, but it translates to something like:

This Apple ID cannot be used to make purchases.

In other words, I have 25,000 new app installs, and none of them will ever be able to use my app’s paid version. That’s quite bad news! Therefore, I decided to dive deeper into detecting these installs.

How to detect whether an app was installed via Apple’s Volume Purchase Program

Unfortunately, there is no easy way to detect whether an app was installed via Apple’s Volume Purchase program. The only way I found is to look up the App Store receipt and indicate whether the expiration_date key exists. As Apple describes in their documentation:

This key is present only for apps purchased through the Volume Purchase Program.

The downside is that you’ll have to use the deprecated SKReceiptRefreshRequest and appStoreReceiptURL. Its replacement using AppTransaction does not include a similar expiration date field.

In case you do decide to detect, your code could look as follows:

import ReceiptParser

let receipt = try! PurchasesReceiptParser.default.fetchAndParseLocalReceipt()
let isVPPInstall = receipt.expirationDate != nil

if isVPPInstall {
    print("This app is installed via Apple's Volume Purchasing Program")
} else {
    print("This app is not installed via Apple's Volume Purchasing Program")
}

Note that I’m using RevenueCat’s open-source ReceiptParser framework here. You’ll have to use SKReceiptRefreshRequest before calling into the parser, as it doesn’t perform a refresh before fetching & reading the data at appStoreReceiptURL.

Alternatively: detecting whether a user can make a payment

A better alternative would be to detect whether a user can make a payment in general. For this, you can use the canMakePayments method. If this property returns false, you can show an alternative screen to explain that in-app purchases aren’t available.

How to opt-out of Apple’s Volume Purchase Program

Apps available in the App Store are automatically included in Apple’s Volume Purchasing Program. There is no way to opt out of this. However, you can follow Apple’s guide to decide whether to deliver a specific app for a certain organization.

Conclusion

Institutional Purchases can drastically impact your total downloads and surprise you accordingly. These are valid installs, but they come with limitations, like in-app purchases that no longer work. There is an unofficial way to detect whether an app is installed via Volume Purchasing, but it makes use of deprecated methods.

If you’ve found a better way to detect these installs, I’d like to know. Please reach out here.

Thanks!

 
Antoine van der Lee

Written by

Antoine van der Lee

iOS Developer since 2010, former Staff iOS Engineer at WeTransfer and currently full-time Indie Developer & Founder at SwiftLee. Writing a new blog post every week related to Swift, iOS and Xcode. Regular speaker and workshop host.

Are you ready to

Turn your side projects into independence?

Learn my proven steps to transform your passion into profit.