Skip to main content
Question

Stripe successful recapture completely missing from RevenueCat timeline

  • June 4, 2026
  • 1 reply
  • 28 views

Forum|alt.badge.img

Hi team,

I am trying to understand why RevenueCat completely missed/dropped a successful Stripe payment recapture for a user on May 21st. The event simply does not exist on the RC timeline, even though Stripe successfully charged them.

Here is the exact comparison of both timelines:

Stripe Payment History:

  • May 7, 1:01 PM: $0.99 (Subscription creation) - Succeeded

  • May 14: Initial $19.99 billing cycle due (Failed)

    • May 18, 8:05 AM: $19.99 (Payment Recaptured) - Succeeded

  • May 21: Initial $19.99 billing cycle due (Failed)

    • May 31, 11:03 PM: $19.99 (Payment Recaptured) - Succeeded

  • May 28: Initial $19.99 billing cycle due (failed)

    • Jun 1, 7:03 AM: $19.99 (Payment Recaptured) - Succeeded

RevenueCat Customer Event History:

  • 2026-05-28, 8:01 PM: Renewed subscription ($19.99) (Matches Stripe's May 31/Jun 1 block)

  • 2026-05-21, 9:03 PM: Cancelled due to a billing error

  • 2026-05-21, 9:03 PM: Had a billing issue

  • 2026-05-14, 9:05 PM: Cancelled due to a billing error

  • 2026-05-14, 9:05 PM: Had a billing issue

  • 2026-05-14, 8:01 PM: Renewed subscription ($19.99) (Matches Stripe's May 18th recapture)

  • 2026-05-07, 8:01 PM: Started subscription ($0.99)

The Problem:

When Stripe successfully recovered a payment on May 18th, it seemed like RevenueCat appropriately logged a renewal event for that period (on May 14th via backdating logic).

However, for the next billing cycle on May 21st, RevenueCat threw a BILLING_ISSUE and a CANCELLATION event, but never generated a corresponding renewal event when Stripe successfully charged the user again on May 31st/June 1st.

I checked my Stripe webhook logs for that late-May period: Stripe fired an invoice.updated webhook to RevenueCat regarding these changes and received a clear 200 OK response from RC.

If RevenueCat is getting a 200 OK from the Stripe webhooks, why is the May 21st payment recapture completely missing from this user's timeline? Are certain invoice webhook events being silently dropped or ignored on your end?

I have setup both S2S events as well as the Stripe RevenueCat integration.

Thanks!

1 reply

Tarek
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • June 8, 2026

Hi Jonathan,

Thanks for reaching out, and for the thorough write-up. I'm Tarek from the Developer Support team and I'm happy to help dig into this.

Fortunately, it seems like nothing was dropped, and that 200 OK is accurate. RevenueCat did receive and process the recapture for that period. What's missing is only the "Renewed subscription" entry on the timeline, not the payment or the revenue itself.

Here's what's going on. With the Stripe integration, each invoice.updated webhook doesn't map one-to-one to a timeline event. Instead, it triggers RevenueCat to re-fetch the full subscription state from Stripe and rebuild the customer's history from it. How a recovered (recaptured) invoice shows up then depends on timing:

  • When a failed invoice is recaptured while its billing period is still the latest one on the subscription, RevenueCat records it as a normal RENEWAL event. That's what you saw for the May 14 period (recaptured May 18) and the May 28 period (recaptured Jun 1), both recovered before the next cycle moved on.
  • When a failed invoice is recaptured after the next billing cycle has already started, that period is no longer the latest one. In that case RevenueCat still recovers it, it marks the transaction as paid and counts the $19.99 in revenue, but it updates that past period in place rather than emitting a new RENEWAL event.

The May 21 period is the second case. It failed, the May 28 cycle then began, and Stripe only recaptured the May 21 invoice on May 31. By that point the May 21 period was no longer the latest, so it was recovered quietly without a fresh renewal entry. The earlier "billing issue" and "cancelled due to a billing error" events for that period also stay on the timeline, since the recovery doesn't retract them, which is what makes it look like the cycle was never recovered.

So to reiterate: the payment is recognized, the revenue is counted, and the subscription stayed active throughout. The gap is the timeline event for that one period.

Feel free to open a ticket and share the App User ID (or the Stripe subscription ID) for this user. I'll confirm this on our side by looking at the exact receipts and events.

Have an excellent day.

Best regards,