Potential failure points when calling purchaseStoreProduct

Badge +2

Hi all,

We wanted to confirm the behavior of purchaseStoreProduct and whether a fulfilled promise of this method guarantees that the payment will always be successful. Or is it possible that a transaction created by a successful call of this method can later fail asynchronously? We are using this method to purchase non-subscription, non-renewable, consumable products.


Right now we’re assuming that a successful `purchaseStoreProduct` call is evidence that a user has made a valid payment, but would like someone to confirm that we don’t need to handle any other potential asynchronous payment errors via webhooks. 



Playback Team




2 replies

Userlevel 4
Badge +8


A fulfilled promise means that the purchase operation was successful, but it is still possible that the app store will reject the payment. When that happens, we send a BILLING_ISSUE webhook, as well as a CANCELLATION webhook (see:


In this case, you should wait until you get an EXPIRATION webhook (or see that the subscription is expired in the customerInfo object). This will happen immediately, if you don’t have grace periods enabled, and after a few days, if you do.

Badge +2

Thanks for the response @Ryan Glanz! Does this same flow apply for non-subscription purchases?