Understanding a paid patreon that never got a webhook

I am trying to make sense of why the UI says this user has paid, but I never got a member:update webhook that says they had paid. Only that it was pending and then declined

Here you can see all the webhooks that I got, I only have one tier:

Once I got a members:pledge:create with currently_entitled_amount_cents > 0 I gave them access, but it was pending, then when I got the declined status I removed access. However on the Patreon UI it says this user has paid:

How should I interrupt the webhooks I received in order to handle this use-case? Verifying their current status via OAuth login is not feasible as I do not offer/want Patreon login.

A payment can be declined at first and then succeed after a few retries at Patreon side. So if you have a need to have more granular control of the reward distribution, you could go the route of regularly syncing your campaign to your local app in addition to the webhooks and check the exact status of the patron at a given time. If you are distributing rewards by having users log into your app/site, its easier - just use the user’s access token to check for currently_entitled_tiers and currently_entitled_amount_cents.

I understand that, I’m just confused why a “paid” status was never sent. Should I assume if currently_entitled is set that the payment went through even if I get repeated declined afterwards? Please see the csv linked to see

currently_entitled_tiers and currently_entitled_amount cents should correctly show what a user is entitled to at any moment without needing to check the payment status. If you are able to use them, use them without anything else unless your rewards are rewards that cannot be withdrawn if something goes amiss with the user’s payment later.