Stripe invoice.payment_failed Slack notification
Stripe sends invoice.payment_failed when a subscription invoice cannot be paid. ChargeBell alerts on the related payment_intent.payment_failed. Here is what each covers.
ChargeBell product team
Updated October 1, 2026. 6 min read.
A Stripe invoice.payment_failed Slack notification tells your team that a subscription invoice was not paid. ChargeBell does not alert on invoice.payment_failed itself. It alerts on payment_intent.payment_failed, which Stripe also sends when a card on file is declined. An invoice that fails because there is no payment method sends only the invoice event, so you need a second monitor for that case.
What invoice.payment_failed means
Stripe sends `invoice.payment_failed` when an invoice payment attempt fails. That can be a declined card or an invoice with no stored payment method to charge. What happens to the subscription next depends on whether it is the first invoice or a renewal, and on your Billing settings.
invoice.payment_failed vs payment_intent.payment_failed
- A declined card on a renewal sends both events. ChargeBell catches it through
payment_intent.payment_failed. - An invoice with no payment method sends
invoice.payment_failedwithout a PaymentIntent failure. ChargeBell does not catch it. - A one-off charge with no invoice sends only
payment_intent.payment_failed. ChargeBell catches it.
What ChargeBell covers
ChargeBell's payment failed alert reads payment_intent.payment_failed. It posts the amount, the customer when Stripe includes one, and Stripe's decline message. It does not show the decline code or the next retry date.
Why a failed invoice needs an owner
Someone has to check whether Stripe will retry or the customer needs to add a card. ChargeBell marks its payment failed alert critical, so it posts during quiet hours and adds an @channel mention by default. If subscription revenue matters to you, add a separate monitor for invoice.payment_failed with the same owner.
- Contact the customer early. A short email asking them to update their card can work faster than waiting for retries.
- Prioritize large plans. A $499 a month plan going
past_duedeserves a reply the same day. - Read the details in Stripe. The Slack message is a summary. Stripe has the decline code, Stripe's advice, and the retry state.
Stripe Smart Retries and the retry window
Stripe Billing can retry a failed invoice with Smart Retries or a schedule you set. It can send invoice.payment_failed again after each failed attempt. Your Billing settings decide what happens to the subscription after the last retry. An invoice with no payment method needs the customer to act, because a retry has nothing to charge. Use the invoice timeline in Stripe to see the next attempt. ChargeBell does not show a retry schedule.
What ChargeBell's alert shows
This example is a declined card on a renewal, which Stripe reports as a PaymentIntent failure. It includes Stripe's decline message. Open Stripe for the decline code, the invoice, and the retry state.
ChargeBellAPP
⚠️ A $499.00 payment didn't go through
@channel
billing@acmecorp.com · Your card has insufficient funds.
Check Stripe to see if it will be retried.
Fields ChargeBell can include
- The amount and currency of the declined charge
- Stripe's decline message, or "card declined" when there is none
- The customer name or email, when Stripe includes it
- A View in Stripe button that opens the payment
How to get invoice.payment_failed into Slack
- 1
Turn on ChargeBell's payment failed alert
Connect Stripe and Slack, check that Payment failed is on, pick a billing channel, and send a test alert. This covers
payment_intent.payment_failed. - 2
Add a monitor for invoice.payment_failed
Use Stripe Workflows for Slack, Zapier, or your own signed webhook handler to send
invoice.payment_failedto the same channel. Test an invoice with no payment method as well as a declined card. - 3
Check the invoice in Stripe
Open the invoice, look at its payment method and retry schedule, and decide whether to contact the customer. ChargeBell is read-only and never retries a charge.
- 4
Confirm the outcome
If a retry of the same PaymentIntent succeeds within 14 days, ChargeBell posts a payment recovered alert. Check the invoice and subscription status in Stripe before you close the case.
For the PaymentIntent side, see the Stripe failed payment alert. For the full process, read how to send failed payment alerts to Slack.
ChargeBell vs a raw Stripe webhook
| Criterion | ChargeBell | Raw Stripe webhook |
|---|---|---|
| Catches invoice.payment_failed with no PaymentIntent failure | yes, if subscribed | |
| Readable Slack message | ||
| Shows Stripe's decline message | when Stripe sends one | you parse it |
| Posts during quiet hours as critical | ||
| Code required | none | build and host a handler |
Related Stripe alerts
- Stripe failed payment alert for
payment_intent.payment_failed - Stripe invoice paid alert for
invoice.paid - Stripe subscription canceled alert, where unpaid invoices can end up
Key takeaways
invoice.payment_failedcovers declined cards and invoices with no payment method.- ChargeBell alerts on
payment_intent.payment_failed, which catches declined cards but not missing payment methods. - Add a separate monitor for
invoice.payment_failedif subscription revenue matters to you. - Stripe Billing owns retries. ChargeBell is read-only and only reports.
Frequently asked questions
Which Stripe event fires when a subscription payment fails?
invoice.payment_failed fires when an invoice cannot be paid. A declined card also sends payment_intent.payment_failed. An invoice with no payment method may send only the invoice event.
Does ChargeBell alert on invoice.payment_failed?
No. ChargeBell's payment failed alert reads payment_intent.payment_failed. It catches declined cards on invoices but not invoices with no payment method. Use Stripe Workflows for Slack or another tool for invoice.payment_failed.
Will the alert say why the payment failed?
It shows Stripe's decline message, or "card declined" if Stripe gives none. It does not show the decline code or retry date. Open the payment and invoice in Stripe for those.
Does the alert post during quiet hours?
Yes. Failed payments are critical in ChargeBell, so the alert posts right away and adds an @channel mention by default. You can turn the mention off in settings.
Does ChargeBell need write access to Stripe?
No. ChargeBell connects through a read-only Stripe app. It reads payment events to build alerts and cannot retry a charge, move money, or change your Stripe account.
Primary sources
We checked event definitions and comparison details against these provider docs and pricing pages.