Solved

Missing Receipt leading to (many) App Store rejections

  • 3 December 2022
  • 4 replies
  • 598 views

Badge +3

We are hitting the same issues many others on this forum are seeing with multiple App Store rejections trying to get our new app approved.  We are on submission #8.  Everything works fine for us in Sandbox  (and XCode) testing across multiple devices over multiple weeks. We get successful purchases that show up in the RevenueCat sandbox.

The App Reviewer is getting the same error message on the multiple devices they are trying:

 

Our code is Swift with min iOS 16 support.  We are using v4.15.0 of the RevenueCat API (purchases-ios imported using Swift Package Manager)

This error occurs after we call: Purchases.shared.purchase(package: package)  

In the above screenshot, the RevenueCat error is “Unknown error” with Code 0.

The only useful part of the error message is “The receipt is missing”, which is coming from the localizedDescription of the underlyingError 

if let underlying = err.userInfo[NSUnderlyingErrorKey] as? Error{

    errorToShow += underlying.localizedDescription

}

 

So far, we have been setting usesStoreKit2IfAvailable to true in Purchases.configure.  (We are now trying another submission - our 9th! - with that set to false.)

Other things we have tried in previous submissions:

  • Recreating (and re-configuring) our subscription SKUs
  • Asking the App Reviewer to sign out/sign in of their App Store account
  • Multiple tweaks to our purchase flow to better catch errors

Any help in tracking this down would be extremely appreciated.

Thanks

 

 

icon

Best answer by Haley Pace 7 December 2022, 23:19

View original

4 replies

Badge +3

Following up on this - we finally got approved on our 8th try.  The only change we made was setting usesStoreKit2IfAvailable: false in the ConfigBuilder when initializing Purchases

 

I’m not sure if the storekit change made the difference, or it was other items related to the reviewer’s environment. During the review, we saw a sandbox subscription purchase and renewal successfully come through RevenueCat, which we were not seeing in earlier rejections.

 

Userlevel 4
Badge +8

Great, glad you got approved! Sorry for the late reply, but some notes on this for anyone else that runs into this problem:

“The receipt is missing”

 This is a sandbox quirk (https://www.revenuecat.com/docs/errors#-missing_receipt_file) in which case to fix the reviewer should make a purchase. This can also happen when calling syncPurchases/restorePurchases before a purchase is made (in which case make sure you're catching errors from those function calls and wait until a purchase is made.)
 
Issues can also be caused if IAPs are not approved before testing them - ask the reviewer to approve them before testing your app.
 
And it's a good idea to show the reviewer that your app works in sandbox/testflight. Communication helps! (even though it's a frustrating process)
 

So far, we have been setting usesStoreKit2IfAvailable to true in Purchases.configure.  (We are now trying another submission - our 9th! - with that set to false.)


This is good to do, no need to use StoreKit 2 if that complicates things.
 

Other things we have tried in previous submissions:

 

  • Recreating (and re-configuring) our subscription SKUs

 

No need to do this.

 

  • Asking the App Reviewer to sign out/sign in of their App Store account

Instead of this, you should ask the app reviewer to (1) approve the IAPs first and (2) make a purchase before trying any restore purchases functionality

 

  • Multiple tweaks to our purchase flow to better catch errors

Yep, this is a great thing to do!

Badge +1

I had this same problem, and I can confirm that switching from StoreKit2 to StoreKit1 is the only change in the build that passed review.

Badge +2

I got a rejection today for ‘Receipt missing’ and mine’s a Flutter app which I believe implictly uses StoreKit1.

The exception occurred while calling Purchases.addCustomerInfoUpdateListener().

Reply