Send a Stripe invoice paid alert to Slack
The invoice.paid event fires when an invoice clears — online or marked paid by hand. Here's how to turn it into a clean Slack alert for subscriptions and B2B invoicing.
The invoice.paid event fires when an invoice clears — online or marked paid by hand. Here's how to turn it into a clean Slack alert for subscriptions and B2B invoicing.
A Stripe invoice paid alert in Slack is a plain-English message posted the moment an invoice clears. ChargeBell listens for Stripe's invoice.paid event and turns it into a message — with the amount, the customer, the invoice number, and why it was billed — in the channel your team already watches. It's the cleanest signal that a subscription renewal or a B2B invoice actually got paid.
Straight from Stripe's own events reference, invoice.paid "occurs whenever an invoice payment attempt succeeds or an invoice is marked as paid out-of-band." That second half is the important part. It fires both when a card or bank payment goes through automatically, and when you (or a teammate) reconcile a payment by hand — for example after a wire, ACH transfer, or check clears and you mark the invoice paid inside Stripe.
This is what separates it from invoice.payment_succeeded, which Stripe describes as firing "whenever an invoice payment attempt succeeds." That event does not fire for out-of-band payments. Stripe notes that successful online payments trigger both events with identical invoice data, so you only need to listen to one — but invoice.paid is the strict superset. It catches everything payment_succeeded does, plus manually-marked payments, which makes it the right "is this invoice really paid?" event.
For subscriptions, Stripe auto-generates a renewal invoice each cycle, holds it in draft, then finalizes and attempts payment. When it clears, the invoice status flips to paid and invoice.paid fires. That makes it a per-cycle heartbeat for recurring revenue — the confirmation a renewal went through, not just that a charge was attempted.
invoice.payment_succeeded silently misses.ChargeBell's invoice paid alert is OFF by default
Unlike most alert types, invoice_paid ships turned off. A single sale can emit several success events at once — new subscriber, payment received, and invoice paid — so leaving it on can duplicate other wins. Turn it on deliberately when subscription renewals or B2B invoices are the signal you care about.
Raw webhook JSON isn't useful in Slack. A good alert answers "which invoice, from whom, and how much?" at a glance. ChargeBell reads the fields that matter from the invoice object and writes them in plain English.
🧾 Invoice paid — $2,400.00 USD
Invoice #INV-0042 · Acme Corp (billing@acme.com)
Reason: subscription renewal · View invoice →
🧾 Invoice paid — €890.00 EUR
Invoice #INV-1180 · Globex Ltd
Paid out-of-band (marked paid manually) · Pro (monthly)
| Behavior | invoice.paid | invoice.payment_succeeded |
|---|---|---|
| Fires on an online payment success | ||
| Fires when marked paid out-of-band (wire/ACH/check) | ||
| Carries the full invoice payload | ||
| Complete coverage for B2B invoices |
Connect Stripe
One-click, read-only OAuth. ChargeBell can see invoice events and can never move money or change anything in Stripe.
Connect Slack and pick a channel
Add the app and choose where invoice payments should post — a channel like #billing or #revenue.
Turn on the Invoice paid alert
In Alerts settings, toggle Invoice paid on — it's off by default. Optionally route it to its own channel.
Send a test alert
Confirm the message looks right before your next renewal or invoice clears.
Getting a lot of invoices? Route high-volume successes to the daily digest instead of a per-event ping, and reserve invoice.paid alerts for the renewals or B2B invoices you actually want to see land. More on this in how to monitor Stripe subscriptions in Slack.
Connect Stripe and Slack, turn on the Invoice paid alert, and send a test. Free plan, no card needed.
invoice.paid. Stripe fires it whenever an invoice payment attempt succeeds or an invoice is marked as paid out-of-band. ChargeBell listens for it and posts a plain-English Slack alert with the amount, customer, and invoice number.
For successful online payments they carry identical data, so you only need one. The difference is out-of-band payments: invoice.paid also fires when you mark an invoice paid by hand (after a wire, ACH, or check), while invoice.payment_succeeded does not. That makes invoice.paid the safer choice for B2B invoicing.
No. The invoice_paid alert ships off. Because one sale can emit several success events, it's off by default to avoid duplicate wins. Turn it on in Alerts settings when subscription renewals or B2B invoices are the signal you want.
No. ChargeBell connects with official read-only OAuth. It can see invoice events to build alerts, but it can never move money, mark invoices paid, or change anything in your Stripe account.
Route high-volume successes to the daily digest instead of a per-event alert, and reserve invoice paid pings for the renewals or B2B invoices you care about. ChargeBell also dedupes on the Stripe event id, so you get one alert per event.