Question

“Transfer if there are no active subscriptions” and Apple Billing Retry

  • 15 July 2023
  • 0 replies
  • 93 views

Badge

While we are currently implementing RevenueCat for our (currently free) app, we found following articles.

Due to platform limitations, purchases will be transferred as soon as you call `configure`
https://www.revenuecat.com/docs/restoring-purchases#google-play-on-android 

 

the subscription will be considered inactive since the app stores weren't able to charge the customer for a renewal.
https://community.revenuecat.com/general-questions-7/how-does-revenuecat-manage-ios-subscription-events-such-as-entered-grace-period-entered-new-billing-retry-renewal-from-billing-retry-and-so-on-484

 

when the renewal comes in, the SDK posts the receipt to our backend, but at this point, you’re an anonymous user. So the backend is transferring the receipt
https://community.revenuecat.com/sdks-51/app-ids-transferring-subscriptions-to-anonymous-users-1171

 

From these, we imagined following scenario. (Later I found out that similar case has happened and posted in Android app, but had no replies at all: https://community.revenuecat.com/sdks-51/subscription-not-transferred-when-using-another-device-with-same-account-1559)

  1. User 1 installs and starts an app on one’s iPhone with Apple ID A1.
  2. RevenueCat SDK configure creates anonymous app user ID rc1.
  3. User 1 signed up. User 1’s account has unique user ID, c1.
  4. RevenueCat SDK logins with custom app user ID c1. c1 and rc1 is now merged.
  5. User 1 subscribes monthly plan with A1. c1 now has active product = entitlement = subscription and receipt from A1.
  6. A month later, A1 is under a billing issue, failing to make renewal.
  7. c1 Enters New Billing Retry, and receipt from A1 is now inactive.
  8. User 1 installs and starts the app on one’s iPad. Of course this iPad is paired with Apple ID A1.
  9. RevenueCat SDK configure creates anonymous app user ID rc2.
  10. At this point, User 1’s billing issue on A1 has resolved.
  11. User 1 signs in with c1.

(“Transfer if there are no active subscription” is selected.)

I believe following will happen in iPad:

  • RevenueCat SDK configure will create anonymous app user ID rc2.
  • RevenueCat SDK gets updated receipt from A1. It has Renewal From Billing Retry event.
  • RevenueCat SDK will report new receipt under app_user_id rc2.
  • Since its last state was not active, The receipt from A1 will be transferred from c1 to rc2.
  • When User 1 logins with c1, receipt in rc2 cannot be re-transferred (blocked by “transfer if...”) nor merged (c1 has one alias already). Subscription is gone.
  • The only way to resolve this issue is to manually transfer entitlement from rc2 to c1 (but how?)

Am I correct?

If I am correct, I don’t think this is some extreme edge case. Billing Retry period is 60 days, anything can happen. Actually you don’t even need additional iPad to reproduce this: just reinstalling or resetting the app from iPhone and not-signing-in until renewal will be enough.

What can I do to prevent this?


0 replies

Be the first to reply!

Reply