Best way to extend a subscription?

  • 17 January 2022
  • 2 replies

Badge +5

What would be the best way to give the user a free month if they are already had a subscription? We want to implement a referral reward system in our app and the user can redeem multiple free months separately so we would want them to stack if possible.

I’ve seen that both iOS and Androids have Promo Codes we could give to users but those seem to be for new users:

I did see that RevenueCat has an API to extend this as well, but wasn’t sure how that would work. Is RevenueCat that one that tells Apple or Google to charge for the subscription again? If not does it tell Apple or Google to not charge until a certain time? Do they stack? Here is the url to the API:

Thanks for the help!



Best answer by tina 22 January 2022, 01:33

View original

2 replies

Userlevel 5
Badge +10

Hi @Asher 

The Promotional Entitlement API endpoint that you linked actually does not extend subscription status. That is a RevenueCat specific feature and works independently of App Store or Play Store billing and will never: charge a user, issue a refund, or convert to a paid subscription. 

For Android, the recommended approach is to defer the renewal of a Google subscription to a later date. API docs for reference: This endpoint will call Google’s Purchases.subscriptions:defer from the Google Play Developer API. You can read more about this in the Billing Library documentation. 

As for Apple, there isn’t an easy way to do this. iOS Offer Codes and Promo Codes are fairly limiting in terms of how many you can generate per product and the number of codes a customer can redeem. For example Apple mentions: "Customers can redeem only one code per active offer, but may be eligible to redeem multiple different offer codes for a single subscription, depending on your configuration choices." Promo Codes are typically not recommended by our team since you are limited in the number of codes you can generate. Apple docs on Promo Codes for reference: 

Referrals for iOS customers isn't really something that we support. Apple does have an endpoint to extend a renewal date, however, you are only able to move the renewal date for a subscription twice a year per customer. A workaround would be to have the customer cancel their subscription, then you can tack on the RevenueCat promotional entitlement. The downside to this is the customer will have to reenable the subscription once the promotional entitlement is over. Another option is to listen to RevenueCat webhooks and when you receive an EXPIRATION event, you can apply the promotional entitlement so they will continue to have access for X months. 

I haven't heard of any huge success stories from implementing a referral program unless you have massive scale and a super loyal customer base. There's usually lower hanging fruit to capture 1-2% more subscribers through improved onboarding, paywalls, pricing, etc. Maybe start with a simple referral link (with no rewards) and see how much it is shared among your customers?


Badge +2

@tina great answer! Do you know how we can access the original transaction ID? We need that to extend the renewal date.