TL;DR: Stripe Webhooks Refund Not Processed — most cases trace to a config mismatch, a hidden assumption, or a step skipped during setup. The fix path below covers the high-percentage causes first. If you're still stuck after 10 minutes, text PJ — most issues answered in one reply. 858-461-8054.
Operator Problem Guide
Stripe Webhooks Refund Not Processed
Stripe refund webhook events in 2026 — `charge.refunded` and `refund.updated` — fire when a refund is created or changes status. If your system is not recording refunds correctly, you are likely missing the webhook subscription for these events, or your handler is not parsing the refund object out of the charge event correctly.
Why This Happens
Configuration gaps between tools or services
Missing integrations or manual workarounds that weren't designed to scale
Changes in vendor behavior, pricing, or API that weren't communicated clearly
What To Check First
Verify your current setup matches the vendor's latest documentation
Look for recent changes — platform updates, new team members, configuration drift
Check if the problem is consistent or intermittent (different root causes, different fixes)
When To Escalate
The problem is costing you money or customers per week
You've spent more than 2 hours on it without progress
A vendor quoted you more than $500 and you're not sure if it's necessary
Dealing with this right now?
The `charge.refunded` event fires immediately when a refund is initiated — the charge object's `refunds` list is updated at this point. The `refund.updated` event fires later when the refund status changes (usually to "succeeded"). Build your integration to handle both: update your refund record status on `refund.updated` rather than assuming it is final on `charge.refunded`. For partial refunds, check `charge.amount_refunded` vs `charge.amount` to determine whether the full charge was refunded or only a portion.