Skip to main content
Question

Free trial expired but user wasn’t charged and no “Opted-out of renewal” event appeared

  • October 5, 2025
  • 3 replies
  • 65 views

Forum|alt.badge.img+2

Hey everyone,

I recently added a free trial to one of my subscription products on App Store Connect (Noor – Quran Companion).

This is my first ever app; I managed to get someone signing onto a 3-day trial for one of my subscriptions.

The trial period expired as expected, but the user was not charged, and no “Opted-out of renewal” or “Cancellation” event appeared in RevenueCat — only an “Expiration” event. (I’ve attached a screenshot of this).

I want to know what happened here? Could it be that my code or my subscription on app store connect is set up incorrectly?

Any help is greatly appreciated.
 

 

This post has been closed for comments

3 replies

chris_perriam
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • October 8, 2025

Server Notifications ensure that we receive a direct update from the relevant store whenever a new transaction or subscription change occurs.
 
Currently, Server Notifications are not enabled for your iOS app. If Server Notifications are not enabled, then RevenueCat typically learns about subscription changes (e.g. cancellations, renewals) by periodically refreshing/polling the receipt and requesting the latest information from the underlying store. New transactions will currently only be received when the SDK forwards them to our servers.
 
When configuring Server Notifications, you'll have the option to enable/disable Track new purchases. When enabled, this will allow RevenueCat to record newly-created purchases, like the one in your example. However, this behavior can bring side effects. In particular:

  • Purchases associated with anonymous App User IDs: if a transaction is first received via server notification (rather than via the SDK), it's possible that RevenueCat does not know which App User ID it should be associated with. In these cases, the purchase will be associated with a new anonymous App User ID. An exception to this is App Store purchases with UUID App User IDs.
  • Customer Attributes: If you use RevenueCat integrations and/or webhooks, ensure that any required customer attributes are sent and synced as soon as you have them or before the purchase is completed.

I highly recommend reviewing the documentation here: Tracking new purchases using Apple App Store Server Notifications


Forum|alt.badge.img+2
  • Author
  • New Member
  • October 8, 2025

Thank you for your reply.

I think I somewhat understood the point you are raising.
But just to get clarification - was the reason behind the failure for the trial to convert into a real subscription because the customer’s card probably declined - or is there a chance that my code has a bug/problem which prevents these trials from converting to subscriptions etc.?

I’m new to revenuecat - so far ive only had 2 trial sign ups to my app, and after 3 days they both ended up being expired due to billing_issue 

could you please let me know!
Regards,
Mehran


chris_perriam
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • October 16, 2025

Once a trial begins for an App Store product, the developer does not have any control over the billing of that trial (therefore there is no risk of a code error causing these billing issues). If the trial is cancelled due to a billing error, it is because the user did not have a valid payment method available at the time when Apple attempted to charge for the trial conversion.

To check the reason for a trial/subscription cancellation, I’d recommend looking for events in RevenueCat with type CANCELLATION. Within the Event Data, you’ll see a cancel_reason field:

  "cancel_reason": "UNSUBSCRIBE",

Our documentation for the possible cancellation reasons can be found here: https://www.revenuecat.com/docs/integrations/webhooks/event-types-and-fields#cancellation-and-expiration-reasons

Hope this helps! Let me know if I can clarify anything further.