Hello,
I am using RevenueCat for many years and I am very satisfied with your service. However, I have a new app with a licensing model that does not work with the currently available restore behaviors.
Example use case:
For a cross-platform email app the licensing should not be tied to a device or app store account. It should be tied to the email address. Therefore, the AppUserId is set to the email address. Furthermore, an app store account should be able to buy the license (one time or subscription) for multiple email addresses.
Current state:
RevenueCat does not support multiple AppUserIds for one app store account. It also does not support the prevention of transfers of purchases. The option “Keep with original App User ID” does not work because the new purchase should be added to the current App User ID. Even when never using the restorePurchases() method of the RevenueCat, purchases are transferred when making a purchase.
Example workflow:
1. User logins to app with email address and RevenueCat AppUserId @firstmail
2. User unlocks @firstmail with a consumable or subscription
3. User logouts and logins with another email address @secondmail
4. User also unlocks @secondmail with a consumable
Wanted behavior, let’s call it “Disable Transfers”:
Revenuecat AppUserId with @firstmail should keep their purchase and @secondmail should get the new purchase. Both Revenuecat AppUserIds should have the entitlement. No transfers at all.
Behavior with “Transfer to new App User ID”:
Revenuecat AppUserId with @firstmail has no purchases because they are transferred to @secondmail. @secondmail has a duplicate purchase.
Behavior with “Transfer if there are no active subscriptions”:
If Revenuecat AppUserId with @firstmail has a subscription, then you get the error RECEIPT_ALREADY_IN_USE, and the user gets charged but the purchase is added to @firstmail. @firstmail has duplicate purchase. Otherwise, the behavior is like “Transfer to new App User ID”.
Behavior with “Keep with original App User ID”:
You get the error RECEIPT_ALREADY_IN_USE, and the user gets charged but the purchase is added to @firstmail. @firstmail has duplicate purchase.
Suggested solution:
Add a transfer behavior “Disable Transfers” that completely disables transfers. New purchases should always be added to the currently logged in AppUserId. The methods restorePurchases() and syncPurchases() should throw an unsupported error if the transfer behavior is set to “Disable Transfers”.
Alternative solution:
Maybe make it an option or default that purchases do not trigger transfers.
Related docs:
https://www.revenuecat.com/docs/projects/restore-behavior
https://www.revenuecat.com/docs/getting-started/restoring-purchases
Related questions: