Send a Stripe refund alert to Slack
The charge.refunded event fires whenever a charge is refunded — including partial refunds. Here's how to turn it into a clean Slack alert with the amount, reason, and customer.
The charge.refunded event fires whenever a charge is refunded — including partial refunds. Here's how to turn it into a clean Slack alert with the amount, reason, and customer.
A Stripe refund alert in Slack is a message posted the moment you refund a customer. ChargeBell listens for Stripe's charge.refunded event and turns it into a plain-English refund_sent alert — ↩️ with the amount, the reason, and who got refunded — in the channel your finance or support team already watches. No Dashboard checks, no email threads.
charge.refunded is the Stripe event that fires whenever a charge is refunded. Stripe's docs are explicit: it fires including partial refunds. That's the nuance most notification setups get wrong — a single charge can trigger charge.refunded more than once, because you can issue several partial refunds against it as long as the total refunded never exceeds the original amount. That's why a good alert shows the amount of *this* refund, not the whole charge.
ChargeBell keys its refund alert off charge.refunded specifically and maps it to the refund_sent alert type. It's easy to confuse with related events, so here's the distinction: refund.created fires when a refund is created, refund.updated tracks status changes on a refund, and charge.refund.updated covers updates on selected payment methods. For the "a refund just went out" signal, charge.refunded is the one you want.
Partial refunds fire it too
Because charge.refunded fires on partial refunds, ChargeBell shows the amount of the individual refund (amount_refunded), not the full charge amount. A $300 charge refunded $120 shows $120.
A refund is money leaving the business, so more than one team usually cares. Finance needs visibility for reconciliation; support and ops often need to close the loop with the customer. A real-time Slack ping replaces manual Dashboard checks and "did we refund that?" email threads by surfacing the amount, reason, and customer to the right channel instantly.
fraudulent or duplicate reason is a flag worth a second look.Raw webhook JSON isn't useful in Slack. A good refund alert answers "how much, to whom, and why?" at a glance. ChargeBell pulls the refund amount, the humanized reason, and the customer name or email straight from the payload — plus a button to open the charge in Stripe.
↩️ Refund sent — $49.00
to Lena at Fernworks
Reason: requested by customer
↩️ Refund sent — $120.00
to marcus@acmecorp.io
Reason: duplicate · partial refund of a $300.00 charge
The refund reason is the hook for where the alert should go. A fraudulent or duplicate refund is a signal for finance or risk; a requested_by_customer refund is usually a support matter. With ChargeBell's per-alert channel routing, you can send refund_sent to #finance, #support, or both — instead of being stuck with a single-channel automation. Not sure where each alert belongs? See which Stripe alerts go to finance, support, and founders.
One detail worth knowing
A refund returns funds to the original payment method — you can't redirect it elsewhere — and Stripe's original processing fees aren't returned to you. The customer typically sees the credit in about 5–10 business days, depending on their bank.
Connect Stripe
One-click, read-only OAuth. ChargeBell can see the refund event but can never move money or issue refunds itself.
Enable the Refund sent alert
It's on by default — the ↩️ refund_sent alert maps directly to Stripe's charge.refunded event.
Route it to finance or support
Pick the Slack channel each refund should post to. Send fraud and duplicates to #finance, customer requests to #support.
Send a test alert
Confirm the amount, reason, and customer look right before the next real refund goes out.
Want the full walkthrough with screenshots? See how to send Stripe refund alerts to Slack for the complete setup and routing options.
Connect Stripe and Slack, route refunds to finance or support, and send a test alert. Free plan, no card needed.
charge.refunded. It fires whenever a charge is refunded, including partial refunds — so a single charge can trigger it more than once. ChargeBell listens for it and posts a plain-English refund alert to Slack.
Yes. ChargeBell shows the amount of the individual refund (Stripe's amount_refunded), not the whole charge, so a $120 partial refund of a $300 charge reads as $120 — not $300.
Yes. With per-alert channel routing you can send the refund_sent alert to #finance, #support, or both. The refund reason (fraudulent, duplicate, requested by customer) helps you decide which channel each one belongs in.
charge.refunded fires when a charge is refunded. refund.updated tracks later status changes on the refund itself (for example, a failed refund). ChargeBell's refund_sent alert is keyed off charge.refunded — the "a refund just went out" signal.
No. ChargeBell connects with official read-only OAuth. It can see the refund event to build the alert, but it can never move money or issue, edit, or cancel refunds in your Stripe account.