Skip to main content

We have a few subscribers who have had minor issues with the subscription product in our app. As a sign of good faith, we’d like to proactively offer them a free month so they stick around. We’ve seen articles for providing an introductory offer, but our use case seems to be a little different.

 

Month 1: User starts an active monthly subscription (user pays)

Month 2: We provide a “free month” so that the user is NOT billed on renewal (user does not pay)

Month 3: User is automatically billed again moving forward (user pays)

 

Is there a way to do this while keeping the subscriber active throughout the entire process, and all behind the scenes so no action is needed from their end?

 

Any feedback is appreciated. Thanks!

Hey @Gravy Developer!

For Google Play purchases, you might be able to defer a subscription to renew at a later date: https://developer.android.com/google/play/billing/subscriptions#defer

We provide an API for this here: https://docs.revenuecat.com/reference/defer-a-google-subscription

 

On iOS, you can try to extend the renewal date of a subscription using the transaction identifier: https://developer.apple.com/documentation/appstoreserverapi/extend_a_subscription_renewal_date


Hi @cody, I’m picking this up for our team. For the iOS solution mentioned above we would need the transaction identifier. However, it doesn’t appear you all expose that in the purchase flow (we are using React Native), and we’d prefer this to be more real-time (ie. not using export/import ETLs).

 

Just to be clear, if a user is currently subscribed, and we grant them a free month through a promotional entitlement, how is the billing handled for that by Apple and Google?

 

Thanks in advance ...


Hey @Gravy Developer,

If you grant customer promotional entitlements through RevenueCat, it will not have any impact on billing through Apple / Google - they will continue to be charged.

To use the iOS solution Cody mentioned to extend a subscription, you should not call that API from within your app since you’d be exposing API keys. A server side solution could listen to RevenueCat webhooks (which contain original_transaction_id) and use that to extend the renewal date.

Another option that’s higher touch but easy to implement would be an iOS Offer Code. These are generated through App Store connect but you’d need to manually gift them to customers. 


Got it. Okay, thanks @ryan!


Reply