The invoice.paid event fires when an invoice clears, whether online or marked paid by hand. Here's how to turn it into a clean Slack alert for subscriptions and B2B invoicing.
Updated July 6, 2026·6 min read
Written and reviewed by the ChargeBell product team
The team that builds and maintains ChargeBell's Stripe and Slack connections. Provider claims are checked against primary documentation. About our editorial process.
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, posted in the channel your team already watches. It's the cleanest signal that a subscription renewal or a B2B invoice actually got paid.
What the invoice.paid event means
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.
Why a Stripe invoice paid alert in Slack matters
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.
Subscription renewals: a per-cycle confirmation that recurring revenue actually landed, in a channel the whole team sees.
B2B invoicing catches invoices paid by wire, ACH, or check and reconciled by hand, which invoice.payment_succeeded silently misses.
Agencies and services: know the moment a client invoice clears without refreshing the Stripe dashboard. See Stripe alerts for agencies for the full playbook.
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.
What a good invoice paid alert includes
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.
#billing
🧾
ChargeBellApp
🧾 Invoice paid: $2,400.00 USD
Invoice #INV-0042 · Acme Corp (billing@acme.com)
Reason: subscription renewal · View invoice →
#billing
🧾
ChargeBellApp
🧾 Invoice paid: €890.00 EUR
Invoice #INV-1180 · Globex Ltd
Paid out-of-band (marked paid manually) · Pro (monthly)
Fields ChargeBell can include
Amount paid and currency
Customer name or email, when Stripe provides it
The human-facing invoice number
The billing reason, whether a subscription renewal, a new subscription, or a manual invoice
invoice.paid vs invoice.payment_succeeded
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
For successful online payments both events carry identical data, so you only need one. invoice.paid also covers manually-marked payments.
How to set up a Stripe invoice paid alert in Slack
1
Connect Stripe
One-click, read-only OAuth. ChargeBell can see invoice events and can never move money or change anything in Stripe.
2
Connect Slack and pick a channel
Add the app and choose where invoice payments should post, like #billing or #revenue.
3
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.
4
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.
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.
How is invoice.paid different from invoice.payment_succeeded?
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.
Is ChargeBell's invoice paid alert on by default?
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.
Does ChargeBell need write access to Stripe?
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.
How do I avoid noise if I get a lot of invoices?
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.
Primary sources
Product behavior, event definitions, and comparison details were checked against provider documentation and official pricing pages.