benecaster_donation_payment_failed
Fires on payment_intent.payment_failed for a Listener Support donation, after the failure has been counted towards the show’s rolling decline rate.
This action is the only way to observe a declined donation. Nothing is written to benecaster_listener_support_donations on a failure, deliberately: that table is money received, and every reader of it — the admin donation list, the Donations dashboard panel, the Analytics Dashboard add-on — would count a failure row as a donation. There is no failure table and none is planned, so if you do not capture it here it is not recoverable later.
It fires only for Listener Support donations. The handler ignores any Stripe intent without a benecaster_show_id in its metadata, so membership and buy-up failures on the same Stripe account do not reach it.
And it fires only when the show’s Stripe webhook is subscribed to payment_intent.payment_failed, not just payment_intent.succeeded. A show missing that event produces no declines, no counters and no alert — silence there is absence of data, not health.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
$show_id |
int |
— | ID of the show |
$payment_intent_id |
string |
— | Stripe PaymentIntent ID, or empty string when the event carried none |
$decline_code |
string |
— | Stripe's decline_code when present ('stolen_card', 'insufficient_funds', …), otherwise its generic code, otherwise an empty string. |
Need this built rather than just documented? See our services →