Solved

Somehow charging customer unnecessarily?

  • 10 December 2023
  • 2 replies
  • 23 views

Badge +4

This is on iOS only. I had a version of my app that only had one-time purchases for the “pro” features access. I made some major updates and transitioned to subscriptions, but decided to honor any previous lifetime purchases in the new version, while no longer offering that particular product for future users. In RC I’m achieving this by using the same entitlement but my current offering no longer includes the old product.

The problem is that occasionally I see a new transaction in RC dashboard where the customer info shows they made a previous purchase of the old pro product, followed by them making a purchase of the current product and an entry that says a new alias for them was created. My assumption is that the user is either re-installing or maybe using a new device? In my app, ideally I’d like to avoid this by checking if a user has the old product entitlement already, even if they’ve deleted and reinstalled or switched to a different device. I do have a “Restore” button on my paywall, so perhaps it’s on them to try this? But I’m unsure if there’s some other way I can avoid charging a user unnecessarily or relying on them trying the “Restore” option? What’s the best way using the SDK to ensure I don’t do this? Should I try restoring first before processing a purchase? Or is there some way I can connect a user’s new install/device to their old alias on launch?

EDIT: I just found the `syncPurchases` method, which I assume is what I’m looking for. But the documentation is a little confusing. Is this something I should call on every app launch? Will this automatically update the delegate/async stream with their customer info that should include their old entitlement as active?

icon

Best answer by wes_clark 13 December 2023, 18:31

View original

2 replies

Userlevel 3
Badge +5

Hi! Yes, I believe that these users are a result of them re-installing or using a new device. I actually think that it would be best if you maintained just using the Restore Purchases functionality and perhaps found a way to make the button more prominent for users as that will cover more of the cases that you would like to make sure get their lifetime purchase reassigned. Sync Purchases will not sync purchases from the App Store account itself and will only bring in purchases explicitly already on the receipt for the device, so this would not cover the case of a user reinstalling your app on a new device. Sync Purchases is more useful when you are migrating your subscription management onto RevenueCat. 

Badge +4

Hi! Yes, I believe that these users are a result of them re-installing or using a new device. I actually think that it would be best if you maintained just using the Restore Purchases functionality and perhaps found a way to make the button more prominent for users as that will cover more of the cases that you would like to make sure get their lifetime purchase reassigned. Sync Purchases will not sync purchases from the App Store account itself and will only bring in purchases explicitly already on the receipt for the device, so this would not cover the case of a user reinstalling your app on a new device. Sync Purchases is more useful when you are migrating your subscription management onto RevenueCat. 

That makes sense. Thanks for the clarification. I was worried there was more I could be doing to prevent this, but it looks like part of it at least is on my users to remember they already paid for “Pro”. But perhaps I can make the messaging a little more clear so they know they don’t need to buy it again in the new version.

Reply