When Stripe encounters issues charging a donor's card, it sends a "failing" status through the webhook. As a result, GiveWP updates the subscription status to "Failing." Stripe then retries the charge several times before canceling the subscription.
If Stripe successfully charges the card during a retry, it generates a new transaction ID and sends it. GiveWP replaces the original transaction ID in the first donation record with this new one. This replacement creates a mismatch, which disrupts the subscription record.