iOS (Live) PurchaseSheet PayUpFront Introductory Offer with higher pricing not showing (all others work)

  • 20 November 2021
  • 4 replies

Badge +3

Dear all,

I have come across an issue that I can’t seem to figure out. I have successfully implemented RevenueCat and subscriptions in my iOS app, including checking the eligibility for introductory offers. All works as expected.

However, one of my subscriptions is an annual subscription for which I would like to add an introductory payUpFront offer in which the initial price is higher than the recurring price. This to retain and reward users for their ongoing subscription. For example: A one off payment for the first year of $29.99, then recurring at $19.99 per year until cancelled. I have set this up in App Store Connect without issues and the subscription is approved by Apple:

Already during my sandbox testing (on device) I noticed that when I tried to purchase this subscription, the native purchase sheet never shows the upfront costs of $29.99 and only shows the recurring $19.99 per year.

The issue is not related to its eligibility since I have another subscription alongside it in the same subscription group for which the introductory offer is correctly shown in the native sheet. Moreover, when I alter the price of the troublesome subscription to be lower than the recurring price of $19.99, the native sheet then does show the introductory price. I have tried re-creating the subscription altogether as well and this did not result in any change in behavior.

Since I thought this could be just a bug on Apple’s side in the sandbox environment I decided to continue and submit my app for approval. Nevertheless, now that my app is approved (set to pending developer release), I just tried this subscription again after downloading my app with a promo code and unfortunately the native purchase screen still shows the incorrect price, thus not taking into account the introductory payUpFront price of $29.99 for the first year. As mentioned before, all other subscriptions in the same subscription group do show their correct introductory offer, albeit none of those are set-up with a higher price than the standard one.

In my understanding the price of a payUpFront subscription can either be lower or higher than the recurring price. This does not hold for payAsYouGo subscriptions which need to offer a discounted price only. This is verified by trying to input a higher price on a payAsYouGo subscription in App Store Connect which will then result in a corresponding error message. This is not the case for payUpFront subscriptions, App Store Connect accepts any price for those. Hence, according to my understanding I have set-up both my subscriptions and RevenueCat correctly. The issue might therefore be on Apple’s side. Nevertheless, given the implications this potential bug might have for thousands of developers, this would probably be well documented on the internet. However, I can’t find anything about this issue.

Has anyone experienced a similar issue or is it simply not possible to use payUpFront subscriptions with a higher price than the standard recurring price, even though all Apple documentation and App Store Connect imply this is possible? Is there another work-around around this issue?

Thank you so much for your help!

Best regards,




Best answer by cody 17 December 2021, 22:53

View original

4 replies

Userlevel 5
Badge +10

Hey @FlyABB 

This could be due to your sandbox account already subscribing to the intro price offer. The payment sheet that you see is controlled by Apple, so RevenueCat actually doesn’t handle any information on that modal. It sounds like you’re using a sandbox account that subscribed to that product already, therefore not eligible for the intro price offering anymore. Can you try creating a new sandbox account with a new app user ID to see if the issue still persists? 

Badge +3

Hello Tina, thank you for your comment. Although I did test with a sandbox account (with no previous subscriptions), I also did test with a real Apple ID on a third-party (non testing) device on the live app. In both cases the user was eligible for the introductory offer, but was not shown the introductory price in the Apple-controlled purchase sheet when the price of the payUpFront offer was higher than the standard recurring price.

The moment I changed the introductory price on App Store Connect to be less than the standard recurring price, both the sandbox and the ‘real’ Apple ID user were presented with the introductory offer in Apple’s purchase sheet.

I agree that the issue is not with RevenueCat or my implementation, but with Apple.

Do you agree/think that introductory payUpFront offers on iOS can be set to any price? Perhaps you have a test app in which you can try this scenario out? The issue might perhaps occur due to some strange App Store Connect server issue?

Userlevel 5
Badge +10

Hey @FlyABB 

I haven’t seen this use case in the past, typically developers set the introductory prices be a discounted price or a trial period to allow customers to understand what features they are purchasing. It may be worth reaching out to Apple support about this to confirm this behavior since the incorrect price is shown on the payment sheet. Unfortunately, I didn’t see anything in their documentation about this use case. 

Userlevel 6
Badge +8

Hey @FlyABB!

I wanted to follow up here as I think I’ve run into this issue in the past, and I actually filed a bug with Apple about it. They indicated that if an intro price is higher than the normal price, the offer will be ignored.

Here is my message, requesting explanation to them:

I have set up an introductory offer with the following terms in App Store Connect for my product:
Pay Up Front 1 month for $3.99, then Yearly $29.99

My SKProduct contains a valid introductoryPrice object with the terms specified above and in App Store Connect, but when I make the purchase, the system confirmation dialog doesn't show the introductoryPrice terms, only the standard pricing ($29.99 yearly).

Here is their response:

Pay Up Front 1 month for $3.99, then Yearly $29.99
==> the offer price (3.99/month) is higher than the regular price ($~2.5/month), so the offer was ignored. This is expected.

I think this is the issue with your setup as well, because your $29.99 per year is greater than the normal $19.99 per year.