How to send failed payment alerts to Slack, and what to do next
Set up failed payment alerts in Slack, then work each failure for 72 hours. How to sort soft and hard declines, who takes each one, and when to contact the customer.
The ChargeBell Team
Updated October 1, 2026. 8 min read.

To send failed payment alerts to Slack with ChargeBell, connect Stripe and Slack, turn on payment failed, send it to a billing channel with an owner, and send a test alert. The alert covers payment_intent.payment_failed. It doesn't cover every invoice.payment_failed case, so watch invoice failures in Stripe or another tool. The playbook below starts once the alert lands.
Set up failed payment alerts in Slack
- 1
Connect Stripe and Slack
Approve read-only Stripe access and choose your Slack workspace in ChargeBell.
- 2
Route payment failed
Turn on the critical payment failed alert and pick a billing channel with a named owner. It's on by default, so check the setting and the @channel mention.
- 3
Test both paths
Send a ChargeBell test alert, then check a real PaymentIntent failure. If you bill subscriptions, also watch invoice.payment_failed in Stripe, including invoices with no payment method.
Use Stripe's real retry window
The right response depends on the invoice, the decline, the payment method, and your Stripe Billing settings. Check Stripe's retry schedule before you contact the customer. The 72 hours below is a working rhythm, not a Stripe rule, and the ChargeBell alert has no retry date.
Why a failed payment is a churn risk
A failed payment can end a subscription even though the customer never asked to cancel. What happens next depends on the invoice and your Stripe Billing retry settings. Check both before you decide when to follow up.
If nobody on your team or the customer's side sees the failure, it can turn into a cancellation. Measure failed invoices, successful retries, and final subscription status in your own Stripe data to find where your team can help.
Track three numbers: failed invoices, recovered invoices, and subscriptions that end after a failure. They show where outreach helps, using your own data instead of another company's recovery rate.
Know which Stripe event you're reading
payment_intent.payment_failed fires when a payment attempt fails. ChargeBell turns it into a critical Slack alert with Stripe's failure message, or card declined if there's no message. It doesn't include the decline code or retry date. `invoice.payment_failed` fires when an invoice fails, which can happen without a failed PaymentIntent, for example when no payment method is saved. ChargeBell doesn't map that invoice event. Watch it in Stripe or another tool, and use the Stripe decline code guide for each code and next step.
Hour 0: sort the alert
The first job is sorting. The Slack alert gives you a failure message. Open its Stripe link to see the decline code, advice code, and retry state before you pick a response.
- Soft declines, such as
insufficient_funds, often clear on their own. Stripe Smart Retries retries them automatically, so the usual move is to wait and watch. - Hard declines, such as
expired_card,lost_card, andstolen_card, can't succeed until the customer adds a new payment method. Waiting won't fix them. Someone has to contact the customer.
Don't assume a failure is soft from a generic Slack message. Stripe may have a more specific decline or advice code, and the next step can differ by payment method. Use Stripe's decline code reference when you sort.
ChargeBellAPP
⚠️ @channel A $96.00 payment didn't go through
Kai at Driftbase · Your card has insufficient funds.
Check Stripe to see if it will be retried.
View in Stripe
Compare that with a hard decline on a larger account. The alert has the same shape, but the message tells you waiting won't help.
ChargeBellAPP
⚠️ @channel A $249.00 payment didn't go through
Acme Corp · Your card has expired.
Check Stripe to see if it will be retried.
View in Stripe
Before anyone acts, reply in the alert's Slack thread with the owner's name. One owner per failure means two people don't email the same customer, and nobody assumes someone else has it.
Hours 0 to 24: act on hard declines and large accounts
Outreach does the most good on day one. Spend it on failures retries can't fix and on accounts you can't afford to lose.
- Hard declines get a message the same day. Ask the customer to update their card and link to the page where they can do it. Keep it short and neutral. Their card on file was declined, and this is how to fix it.
- High-value accounts get a personal note, whatever the decline. An annual plan or your largest monthly customer deserves a message from a founder or account owner, even on a soft decline.
- Everything else waits for the first retry. For a small soft decline, leave a note in the thread and move on.
What the outreach message needs
Say that the payment on file didn't go through, that fixing it keeps their access uninterrupted, and give one link to update the card. Leave out the decline code. Customers don't need to see insufficient_funds.
Hours 24 to 72: follow up on repeat failures
Check Stripe for the retry schedule and invoice state. A later invoice.payment_failed can mean another failed attempt, but ChargeBell doesn't alert on it. Your invoice monitor or a daily Stripe check should catch those cases.
- A soft decline fails again. Retries alone aren't working. Send the card update message you held back on day one.
- A hard-decline customer hasn't replied. Follow up once through another channel if you have one, such as an in-app notice or a note from their account owner.
- A large account is still failing. The founder or account owner should talk to them directly. This is about the relationship, not billing.
Don't message everyone on every retry. Aim for one clear, timely message per customer. A string of emails reads like a collections notice.
After 72 hours: let retries run and watch the outcome
Once you've contacted the customers who need help, let the retry policy in your Stripe account run. The schedule and number of attempts vary. Watch the invoice and subscription status for a recovery or a cancellation.
- Recovered. A successful retry can trigger a separate ChargeBell payment recovered alert. It doesn't post in the failure's thread, so check the invoice in Stripe before you close the case.
- Canceled. If retries run out, the subscription can end. A subscription canceled alert is your last cue to send a win-back message to a customer who never chose to leave.
ChargeBellAPP
✅ Recovered: $96.00 from Kai at Driftbase
A retry went through · no action needed
Originally failed Tuesday
If a thread has no recovery and no update from the owner after a few days, someone should check the customer in Stripe.
Who owns what
| Situation | Owner | Action |
|---|---|---|
| Soft decline, small account | Nobody yet | Wait for Smart Retries and watch for recovery |
| Hard decline, any account | Support or billing | Card update message the same day |
| Any decline, high-value account | Founder or account owner | Personal note within 24 hours |
| Second or third failure | Whoever claimed the thread | Send or resend the card update message |
| Retries exhausted, subscription canceled | Founder or success | One win-back message |
Send failed payment alerts where someone will act
The playbook works only if a person sees the alert quickly. Send failed payments to a channel your team reads, like #billing or #founders, not a busy channel where wins and failures mix. ChargeBell sends each alert type to its own channel, so failures and wins can go to different places.
- Failures skip quiet hours. ChargeBell marks the failed payment alert critical, so it posts right away, even overnight. You see a midnight decline before Stripe's next retry.
- They can mention @channel. With the critical mention setting on, everyone in the channel gets notified.
- Routine alerts stay elsewhere. If wins stay out of the failures channel, nobody mutes it. How to avoid noisy Stripe notifications covers the settings.
Combine retries and outreach
Use Stripe's retries together with customer outreach when the decline calls for it. Record which steps lead to a paid invoice in your own data. The Slack alert hands the failure to a person. It doesn't retry anything.
For one routine across failures and disputes, see how to build a payment incident workflow in Slack. Track retention after recovery in your own subscription cohorts.
Each tool does one job. ChargeBell shows you the failure and the customer. Stripe Smart Retries times the automatic retries. Your email tool or Stripe's dunning emails send the recovery message. ChargeBell is read-only, so any fix happens in Stripe. See how to monitor Stripe without checking the dashboard.
Key takeaways
- ChargeBell sends failed payment alerts to Slack for PaymentIntent failures. Watch invoice.payment_failed separately and use Stripe's retry state for timing.
- Sort first. Soft declines often clear on retry, and hard declines need a new card from the customer.
- Claim each failure in its Slack thread so one person owns the follow-up.
- Contact hard declines and high-value accounts the same day, and escalate repeat failures.
- Follow your Stripe retry schedule and watch for a recovered alert or a canceled subscription.
Set up the alert
Frequently asked questions
How do I get failed payment alerts in Slack?
Connect Stripe and Slack in ChargeBell, turn on the payment failed alert, and pick a channel. It posts when Stripe sends payment_intent.payment_failed. Invoice-only failures, such as an invoice with no saved payment method, need a separate monitor in Stripe or another tool.
What should I do first when a Stripe payment fails?
Open the payment in Stripe from the alert and check the decline code, advice code, invoice, and retry state. Name one owner in the Slack thread. If the customer needs a new payment method, contact them. If Stripe will retry, don't send a message for every attempt.
Do I need to contact every customer whose payment fails?
No. Check the decline and retry plan in Stripe first. Contact customers who need a new payment method or a personal reply, and skip duplicate messages while Stripe is still retrying. The retry schedule comes from your Billing settings.
What are Stripe Smart Retries?
Smart Retries is a Stripe Billing feature that retries failed subscription payments at times Stripe picks to raise the chance of success. You set the number of attempts and the maximum retry period in your Billing settings. It helps with soft declines. Hard declines still need a new payment method.
Do I still need Smart Retries if I have Slack alerts?
Yes, if Stripe Billing retries fit your subscriptions. Retries handle eligible payment attempts. The Slack alert puts a person on the failure so they can help when retries won't. Measure recovery in your own Stripe account.
Can ChargeBell retry the payment or email the customer?
No. ChargeBell has read-only access to Stripe. It sees the failed payment and alerts you, and it can't move money, retry a charge, or edit anything. Stripe Smart Retries handles automatic retries, and your email tool or Stripe's dunning emails contact the customer.
What causes most failed subscription payments?
Common causes are insufficient funds, expired or replaced cards, issuer restrictions, and technical errors. ChargeBell shows the failure message, not the decline code or advice code. Open the payment in Stripe to decide whether to wait, retry, or ask for a new payment method.
How do I know when a failed payment is resolved?
A successful retry can trigger a separate payment recovered alert. Check the invoice and subscription in Stripe, then update the Slack thread. If the subscription ends, the cancellation alert is your cue for a follow-up.


