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:

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:

While I remained excited—I’ve had 25K installs on this day!—I was also confused. What are these institutional purchases?
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:

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!