Our app offers a single subscription, with a monthly and an annual payment plan (in Google Play terms, one subscription with two base plans). Subscribed users can access the whole content of the app without limitations.
For better flexibility, we also offer subscribed users to switch the payment plan. Since this is a single subscription, we have to use the WITHOUT_PRORATION replacement mode. We build our purchase params like so:
PurchaseParams.Builder(activity, subscriptionOption) .oldProductId(currentSubId) .googleReplacementMode(GoogleReplacementMode.WITHOUT_PRORATION) .build()
Here is the problem: When a user is currently running with a subscription that has been restored (via the Purchases.sharedInstance.restorePurchasesWith(onError, onSuccess) method), it is no longer possible to switch the payment plan. For the “Transferring purchases seen on multiple App User IDs” setting, we use “Transfer to new App User ID”.
The Play Store shows an error message “Error: We are unable to change your subscription plan”
After acknowledging, the RevenueCat SDK returns with a PurchaseInvalidError:
- message = “One or more of the arguments provided are invalid.”
- underlyingErrorMessage = “Error updating purchases. DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode: DEVELOPER_ERROR. SubResponseCode: NO_APPLICABLE_SUB_RESPONSE_CODE.”
I have tried to research the issue on Google, but I wasn’t able to find anything helpful. We do not use anonymous app users.
