Receipt is missing when trying to Purchase via TestFlight

Badge +3

As per the title:

I always get the ‘Receipt is missing error’ when testing via TestFlight.

In Xcode, when configured with a StoreKit file, it works fine.


Without StoreKit and TestFlight it does not work, the app review is also always getting rejected.

I cannot see why it does not work.


The products and offerings are configured correctly (and they are shown in the app), it’s just the receipt that is always missing when purchasing.

29 replies

@Andy Is there a way to determine where the breakdown is specifically? I will go through everything again to ensure that I have done it properly.



I think I was able to address it. I had not set the app-specific shared secret. Thanks for helping me out so quickly! 

Userlevel 5
Badge +8

That’s great to hear! Let me know if you run into anything else! 

Have a great day! 

Badge +3

my app is failing review consistently due to the ‘receipt is missing’ error.  local and TestFlight work flawlessly.  outside beta testers on TFlight...perfect.  only fails in actual review.  steps to attach the subscription have been followed to the letter multiple times.

i have blown away products and projects on both the apple and revenueCat side multiple times.  the shared app specific secret is locked into both places, all account info is correct.  this is extremely frustrating as it has been a week of rebuilds.  upgraded to react-native-purchases 5.0.1 and even talked with revCat dev who did the last patch on Purchases.purchaseProduct() … really think this is sitting on your side revCat...obv i could be wrong but have been round and round on this enough.  hopefully it can be resolved.

Badge +3

turns out using this solution 

which does work well in local and in TestFlight was tripping up the app review due to a lack of receipt.  i removed the solution (which helps with an edge case of someone on another users phone trying to buy the in-app purchase) and finally passed the app store review.

i’ll add a comment over there as a heads up to fill out that .restorePurchases() method solution (used to be called .restoreTransactions() ) so the missing receipt issue doesn’t rear its head should someone try it.