Hi RevenueCat team,
we are seeing an iOS offer-code redemption issue with account switching and would like to confirm the expected behavior.
Our RevenueCat restore behavior is configured as:
Transfer if there are no active subscriptions
Scenario:
-
User logs into account A.
-
User purchases an Apple subscription.
-
The subscription expires.
-
User logs out of account A.
-
User logs into account B on the same device / Apple account.
-
User redeems an Apple offer code.
Observed behavior:
The offer code is redeemed while account B is logged in, but the entitlement is assigned to account A instead of account B.
Expected behavior:
Since account A no longer has an active subscription, we would expect the redeemed offer-code subscription to transfer / attach to the currently logged-in RevenueCat App User ID, account B.
We saw that RevenueCat recommends avoiding Apple’s in-app offer-code redemption sheet and instead opening the App Store redemption URL, then calling syncPurchases when the user returns to the app:
https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}
Questions:
-
Is the observed behavior expected when redeeming an Apple offer code through Apple’s in-app redemption sheet?
-
Would using the App Store redemption URL plus
syncPurchasescause the redeemed offer-code subscription to attach to the currently logged-in account B? -
With “Transfer if there are no active subscriptions”, should an offer-code redemption transfer away from account A if account A only has an expired subscription?
-
Are there any known limitations around Apple offer codes, expired subscriptions, and RevenueCat App User ID switching?
-
Is the recommended implementation to store a local pending-redemption flag, open the App Store redemption URL, and call
syncPurchasesonce when the app returns to foreground?
We want to avoid a case where a user redeems an offer code while logged into one account, but the entitlement is silently granted to a different previous account.
