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.

How we check provider claims

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_failed without 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_due deserves 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.

# billing

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. 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. 2

    Add a monitor for invoice.payment_failed

    Use Stripe Workflows for Slack, Zapier, or your own signed webhook handler to send invoice.payment_failed to the same channel. Test an invoice with no payment method as well as a declined card.

  3. 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. 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

CriterionChargeBellRaw Stripe webhook
Catches invoice.payment_failed with no PaymentIntent failureyes, if subscribed
Readable Slack message
Shows Stripe's decline messagewhen Stripe sends oneyou parse it
Posts during quiet hours as critical
Code requirednonebuild and host a handler
A raw webhook can cover invoice.payment_failed. ChargeBell covers failed PaymentIntents.

Key takeaways

  • invoice.payment_failed covers 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_failed if 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.