A real customer in our production iOS app reached out to my team today after upgrading their subscription and saw inconsistent results. We investigated and reproduced the issue in the sandbox. Based on the data we receive from RevenueCat, we display to our customers info about their active subscription(s). In this case we (my team + customer) are seeing that the customer is currently subscribed to two subscriptions in the same iOS Subscription Group.
We are waiting on the customer to send us a screenshot of their active subscription for our app from the App Store - Manage Subscriptions screen and waiting for confirmation if they received a prorated refund from their previous subscription from Apple. We suspect (and hope) that the screenshot will show the customer is only subscribed to the upgraded Tier 1 subscription which matches the validated apple receipt data that indicates the Tier 3 subscription was upgraded (is_upgraded: true).
Details
We have 4 iOS subscriptions right now. In our Tier 3: 1 month & 6 month. Tier 1 + 2 both have just a 1 month subscription. Tier 1 & Tier 2 were added recently (Dec 28 in our dev app, Jan 12 in prod testflight, and publicly available Feb 2nd) and we have confirmed these are configured in the correct order in AppStoreConnect in a single Subscription Group.
The customer upgraded their existing 6 month - Tier 3 subscription to a 1 month - Tier 1 subscription in the same Subscription Group through our iOS app. The existing 6 month subscription was a bit less than half done, purchased Dec 7 2021 and set to expire in June 2022.
In the their RC Customer Profile, we see in Customer History the Renewal Preference Change to the Tier 1 subscription & Renewal for the Tier 1 subscription immediately (Feb 21) as expected based on RC + Apple Documentation. However, their entitlements only reflect their original 6 month subscriptions's expiration date and the additional entitlements granted by their upgraded Tier 1 subscription are missing.
Inspecting the results from the RC subscriber endpoint we see that the additional entitlements are indeed granted by the correct Tier 1 subscription and set to expire correctly in 1 month; however, the entitlement from the previous Tier 3 subscription indicates it is still granted by the previous Tier 3 subscription and shows the original June 2022 expiration instead of being associated with the Tier 1 subscription and expiring in 1 month. The data from the endpoint also shows both Subscriptions with valid future expiration dates.
We received the RC webhooks for PRODUCT_CHANGE & RENEWAL, as well as Apple webhooks for DID_CHANGE_RENEWAL_STATUS & INTERACTIVE_RENEWAL (which we forward to RC). The webhook data shows the upgrade from Tier 3 to Tier 1; so, we were able to grant the benefits to the customer immediately, but the subscription expiration dates are incorrect and we pass that along to the customer.
We reproduced this scenario in the sandbox by subscribing to the 6 month Tier 3, validating the RC dashboard + api were correct, both showed an expiration in 30 minutes. Then upgraded to the Tier 1 - 1 month subscription and received all the correct webhooks, but inspecting the RC Customer Profile & API we saw the same issue as above. The Tier 1 subscription renewed several times and yet the RC Profile displayed just the Tier 3 entitlement + 6 month expiration. After 30 minutes had elapsed, the RC Profile correctly displayed the entitlements + expiration for the Tier 1 subscription. If this is the case, we won’t see valid data for several months in our customer’s profile.
I found a potentially related issue in this thread https://community.revenuecat.com/dashboard-tools-52/issue-with-a-subscription-upgrade-after-a-period-change-in-sandbox-423. Our Tier 1 subscription does not have a trial, but the customer did receive a Promotional offer that discounted their upgrade to Tier 1 for the first month. The subscription they upgraded from was neither on a trial nor promotional offer.
Thank you for your time and we very much appreciate your guidance.