Skip to main content

Hello RevenueCat,

I can see some similar topics, but i didn’t understand clearly the solution. As there are multiple topics on Stack Overflow, discords and more I think no one can find easily a clear solution.

Context

  • I’m inside my test app using the SandBox mode.
  • I’ve set the option ‘Keep with original App User Id’ because I don’t want to let an user  the ability to transfer to someone else his subscription. All users have an account and I well use the `Purchases.configure()` and or  `Purchases.logIn()` methods to handle that.
  • I’ve 2 google accounts on my Android Emulator (ex: bob-example@gmail.com and alice-example@gmail.com).
  • My app have a subscription mode to let creators access some premium contents.

 

Scenario

I open the app and I login to bob-example@gmail.com, then I open the RevenueCat Paywall to buy a subscription. It works well, bob got his subscription.
I logout bob.
I login alice-example@gmail.com and I open the RevenueCat Paywall, as alice has no subscription. I try to buy a subscription for her. It fail.

Proof of the failure :

 


If i click on ‘Restore Purchase’ it should not found any subscription because alice-example@gmail.com never purchased any subscriptions and I well enabled `Keep with original App User Id`. Sadly, it didn’t work as expected and it display a weird error :
 

 

If i cancel bob-example@gmail subscription and i wait until it totally expire, creating a subscription using alice-example@gmail.com will work BUT the email used will be bob-example@gmail.com and so only the bob-example@gmail account will be able to view and manage the subscription… On the PlayStore account of alice-example@gmail.com, the subscription tab will be empty !
 

Conclusion : 

RevenueCat seems to not well handle multi accounts on a same device. This is a really pain point and i can’t deliver a high level user experience because of that. Because of my app needs this is a major issue for me.

Can you tell me if there is any solution and if not what are the limitations please ?

Just to enforce a point: on the device I have 2 Google accounts, so I have well 2 Google accounts on the PlayStore. If I change the current selected account on PlayStore that didn't change the issue, I still have the same behavior, the account change didn't have any impact.


I notice that, when alice-example@gmail.com can place a subscription, her payment method are the one related to the default device user which is bob-example@gmail.com and she can’t change that. Maybe RevenueCat miss something and all Purchase are done for the default device user account. I enforce, even if i change the selected PlayStore account, i got the same behavior bob-example@gmail.com is used.


Hi ​@enguerrand-arminjon-d1b39e this is actually due to how the Google Play Store handles this. When an app is downloaded on the phone from the Google Play Store, it’s attached to the Play Store Account that downloaded the app. Any interaction with Google Play Billing within that app will be associated to that Play Store account. As such Google’s handling of multi-accounts is why you are seeing that.

You will need to redownload the app with the other account to use it.


Hello,

Ty for your answer !

Is there a way to detect this before Paywall to warn user ? 

Because of https://github.com/RevenueCat/purchases-flutter/issues/1285#issuecomment-2701660840 i can’t use onPurchaseError from PaywallView ...


Hi, unfortunately there is no way to detect if the app was downloaded from a different Google Play account that is using the app. 


Reply