Weekly Refund Report to Slack: Automate It With a Scheduled AI Agent
Most teams find out their refund volume is creeping up the slow way — someone exports a Stripe CSV at the end of the month, notices the number is uglier than they remembered, and starts a Slack thread asking why. By then the pattern is weeks old. A weekly refund report fixes the lag, but only if someone actually builds it every Monday, and "someone manually pulls Stripe data into a spreadsheet" is exactly the kind of chore that quietly stops happening after the third busy week.
This is a clean job for an AI agent on a schedule. With Macha, you connect Stripe and Slack once, write a few sentences describing the report you want, and set the agent to run every Monday morning. It queries the last seven days of refunds, totals them up, groups the reasons, compares the week to the one before, and posts a tidy digest to your finance or support channel — no spreadsheet, no Monday reminder, no one babysitting a workflow.
Macha is an AI agent layer that runs on top of the helpdesk and tools you already use (Zendesk, Freshdesk, Gorgias, Front, plus Stripe, Slack, Shopify and more). It isn't a reporting tool you log into; it's an agent that does the reporting and drops the result where your team already lives. Here's how to set this one up, and where it's genuinely better than the alternatives.
What the report looks like
The output is a single Slack message, posted on a fixed cadence. A typical week reads like this:
💰 Weekly Refund Report — Feb 25 to Mar 3 - Total refunded: $1,247.00 - Refund count: 14 - Average refund: $89.07 - Top reasons: Defective product (5), Wrong item (4), Changed mind (3), Duplicate charge (2) - 📈 Trend: refunds down 12% vs. the prior week
In Slack it lands as one clean message — totals up top, an AI-categorized reason breakdown, the week-over-week trend, and a one-line read on what changed.
The "top reasons" line — and that closing note about which SKU is driving the defects — is the part a simple integration can't give you. Stripe stores a refund reason as free text (or a coarse enum like requested_by_customer), so a rules-based automation can only hand you raw strings. An AI agent reads the refund notes — and, because Macha sits on your helpdesk, the linked ticket context — and groups them into the categories your team actually talks in, then summarizes what moved. That's the difference between a notification and a report.
How it works under the hood
Four moving parts, all configured in the agent builder:
| Piece | What it is | In this workflow |
|---|---|---|
| Trigger | What starts the run | A scheduled (cron) trigger — every Monday at 9:00 AM |
| Tools | What the agent can do | Stripe List Payments + Slack Send Message |
| Instructions | What you want, in plain English | "Summarize last week's refunds and post to #finance" |
| Model | Which LLM reasons over the data | Your pick, priced per run in credits |
One important accuracy note: the weekly cadence comes from Macha's scheduled trigger, not from Stripe. Stripe is great at firing an event the instant a single refund happens, but it has no "every Monday" webhook — and a per-refund event gives you 14 separate pings, not one digest. Macha's own cron scheduler is what lets you say "run this once a week and aggregate," which is the whole point of a report.
1. Connect Stripe and Slack
Add both connectors from the Connectors page. Stripe authenticates with an API key (a restricted, read-only key is fine for a report — it only needs to read payments); Slack connects over OAuth so the agent can post to your channels.
You can connect more than one Stripe account if you run multiple entities — each instance gets its own credentials and name, and you point the agent at the right one.
2. Schedule the trigger
On the agent's configuration page, add a Scheduled trigger and set the cadence. You get hourly, daily, or a custom cron expression — for a Monday-morning report you'd use something like 0 9 1.
A few guardrails are baked in so a scheduled agent can't run away with itself: the scheduler polls every 60 seconds, enforces a minimum 1-hour interval, caps each trigger at 24 runs/day, and auto-disables a trigger after 5 consecutive failures (with an email so you know). For a once-a-week report you'll never come near those limits — but they're the reason you can trust a scheduled agent to run unattended.
Scheduled triggers are a Professional and Enterprise feature: 3 scheduled triggers on Professional, 20 on Enterprise. See the pricing page for the current plan details.
3. Pick the tools
The agent needs two abilities: read refunds from Stripe and write to Slack. Add Stripe List Payments and Slack Send Message from the tool picker. List Payments can be filtered by status, amount, and date range, which is how the agent scopes the query to "the last 7 days."
4. Write the instructions
This is the only "config" most people care about, and it's prose, not code. Something like:
Every Monday, list all Stripe refunds from the previous 7 days. Calculate the total refunded amount, the refund count, and the average. Group the refunds into reason categories (defective, wrong item, changed mind, duplicate charge, other) based on the refund notes. Compare the total to the previous 7-day window and report the percent change. Post a clean, scannable summary to the #finance Slack channel with emoji section headers.
Macha can also build the whole agent for you from a description like that — its Build-with-AI flow turns a plain-language spec into a configured agent with the right trigger, tools, and instructions wired up, which you then review and tweak. Either way, you end up with an agent you can read and edit in English.
Going deeper: a custom tool for richer aggregation
The built-in Stripe List Payments action is enough for a solid weekly digest. But if you want the report to slice refunds by product, by reason code, or by your own Stripe metadata, you'll want to query Stripe's dedicated refunds endpoint directly — GET /v1/refunds — with exactly the parameters you choose.
That's what Custom API Tools are for. You define a tool that hits the Stripe refunds API, describe what it returns, and the agent calls it like any other action. It's the difference between "good enough" and "exactly the cut of the data we report on."
Custom API Tools are included on Professional (5) and Enterprise (20). For most teams the native List Payments action covers the standard report, and the custom tool is the upgrade path when finance wants more dimensions.
What it costs to run
Macha bills in credits, charged per AI action — not per report or per refund. Each weekly run is a small handful of credits: one to read and reason over the refund list, one to compose and post the Slack message, scaled by the model you choose (roughly 0.5–9 credits per action by model, with the default GPT-5.4 Mini at 1). You pick the model from a dropdown, and the cost is transparent before you commit to it.
In practice a once-a-week report is one of the cheapest things you can automate — a few credits a week against your plan's allowance. Start with the 7-day free trial, no credit card required to see real numbers on your own data before committing to a plan. Full tiers are on the pricing page.
Macha vs. the generic automation route
If you've shopped for this before, you've seen Zapier, Make, Relay.app, n8n, and tray.ai. To be fair to them: scheduled aggregation is a solved problem on all of these. Zapier ships Digest by Zapier, which batches entries and releases them daily, weekly, or monthly to Slack; Make's Aggregator module plus a scheduled scenario does the same; and n8n even has a ready-made template that pulls Stripe charges and refunds on a monthly/quarterly schedule and posts a formatted report to Slack. So "they can only fire one ping per refund" isn't the real gap — these tools can absolutely batch. The honest differentiator is narrower and more useful:
| Approach | Scheduled digest? | The real catch for this job |
|---|---|---|
| Zapier (Digest by Zapier) / Make (Aggregator) | Yes — batch + release daily/weekly/monthly | Aggregates the numbers well, but reason grouping is literal-match: it can count requested_by_customer, not read a free-text note and decide it means "defective." No helpdesk/ticket context. |
| n8n / tray.ai | Yes — schedule trigger + Stripe nodes (template exists) | You build and maintain the workflow; categorizing free-text reasons means bolting an LLM node into the graph and engineering the prompt yourself. |
| Macha | Yes — scheduled AI agent | Aggregates and reasons over free-text refund notes to categorize, pulls linked ticket context from the helpdesk it sits on, and writes the "what changed" summary — all described in plain English, no node graph to maintain. |
The honest summary: if you only need totals and counts on a schedule, Digest by Zapier or an n8n template will do it, and you may not need an agent at all. Macha earns its place when the categorization and context are the point — when you want refund reasons grouped the way your team actually talks, tied back to the tickets that explain them, and summarized into "here's what moved and why," without maintaining a workflow to keep it running. (For the underlying connectors, see the Stripe and Slack integration pages.)
Watch-outs and when not to use it
A few things to keep in mind before you ship this:
- Stripe has no native weekly trigger. The cadence is Macha's scheduler. If you instead want an instant alert on every individual refund or dispute, that's an event-driven flow, not this scheduled report — and honestly a simpler tool may suffice for that.
- Refund reasons are only as good as your data. If your team doesn't capture why a refund happened (in the Stripe note or the linked ticket), the AI can categorize less precisely. Garbage in, vaguer out. A short, consistent refund-reason habit pays off here.
- It's a report, not a control. This agent reads and summarizes; it doesn't approve or block refunds. If you want the agent to process refunds, that's the separate process refund requests automatically workflow with the Create Refund tool — and you'd gate it carefully.
- Scheduled triggers are Professional/Enterprise. On the Starter plan you can build and test the agent, but the cron schedule that makes it weekly lives on higher tiers.
- Read-only keys for a read-only job. Give the report agent a restricted Stripe key that can't write. There's no reason a reporting agent should be able to issue refunds.
FAQ
Does this fire on every refund, or once a week? Once a week (or whatever cron cadence you set). It's a scheduled trigger that aggregates the whole window into one digest — not a per-refund notification.
Can it post to multiple channels? Yes. Slack Send Message can target any channel the bot has access to; you can have the agent post the same digest to several channels, or run separate agents for separate teams.
Can I change the schedule or the window? Both. The cron expression controls when it runs; the instructions control the lookback window (last 7 days, last 30, month-to-date). A monthly variant is just a different cron line and a different window.
What if Stripe is down or a run fails? A scheduled trigger auto-disables after 5 consecutive failures and emails you, so a silent breakage can't run forever. A single failed run simply skips that week's post.
Do I need Zendesk for this? No — this specific report only needs Stripe and Slack. But because Macha lives on top of your helpdesk, an agent can enrich refunds with ticket context if you've connected one.
How much does each report cost? A few credits per run, billed per AI action and scaled by the model you choose. A weekly report is among the cheapest automations you can run. See pricing.
Set it up
A weekly refund report is the kind of small, boring discipline that teams know they should keep and rarely do. Handing it to a scheduled agent makes it free of effort and impossible to forget. Start a 7-day free trial, no credit card required, connect Stripe and Slack, describe the report in a sentence, and set it to run Monday at 9 — or browse the rest of the use-case library for more agents you can put on a schedule. Full setup is in the docs.
Written by Abbas (Customer Support & AI, Macha) · Reviewed by Ankeet Guha (Co-founder & CTO) · Published 2026-06-24 · Last updated 2026-06-24.
Automate your support workflows
Macha's AI agents run entire workflows end to end across your stack.
Shopify
Stripe
Slack
Notion
Google Workspace
Confluence

