Skip to content

On a schedule

Post Stripe revenue reports in Slack

Each morning Slack shows yesterday's sales, refunds and net revenue from Stripe, compared with the day before.

Runs
On a schedule
Apps
Slack, Stripe
AI
Not needed
Access
Stripe read (restricted key); chat:write

Send this to your assistant

Create a ClickRuntime automation: every morning at 8, post yesterday's Stripe revenue to #finance: gross sales, refunds and net, per currency, compared with the day before.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A founder of a subscription software business checks Stripe several times a day out of habit, while the rest of the team has no idea whether last week was good or bad. Revenue only comes up in the monthly meeting, when it is too late to react to a slow week or a run of refunds.

A short revenue post in Slack each morning gives everyone the same number at the same time. Sales sees whether a campaign worked, support notices when refunds jump, and the founder stops being the only person who knows.

What you get out of it

  • One shared number for the team

    Everyone reads the same figures from the same source, so there is no debate about which dashboard is right. Conversations start from the facts instead of from guesses.

  • Refunds are visible next to sales

    Gross sales alone can look healthy while refunds quietly rise. Seeing both on one line, with the net result, shows the real picture every day.

  • Changes stand out early

    The comparison with the previous day makes a sudden drop or spike obvious. A broken checkout or a successful launch shows up the next morning, not at month end.

  • No one needs Stripe access

    People who should see revenue but should not manage billing get the numbers in Slack. Fewer logins to Stripe means less risk of someone changing the wrong setting.

How it works

What happens, step by step

  1. Every morning, ClickRuntime collects yesterday's payments and refunds from your Stripe account.

  2. It adds them up for each currency, giving gross sales, refunds and net revenue.

  3. It compares the totals with the previous day, which it remembers from the last report.

  4. A short summary is posted in your #finance Slack channel.

Before it runs live

  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
  • Connect Stripe

What you get

RunsOn a schedule
Post Stripe revenue reports in Slacktoday, 9:00Succeeded
Slack · #financeStripe revenue yesterday USD: sales 4,820.00, refunds 129.00, net 4,691.00 (+612.00 vs day before)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Google Sheets
  • Combine it with other Slack and Stripe steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
revenue_reports_from_stripe_in_slack.pyexample
import stripe
from clickruntime import on_trigger, credentials, notify, state
from datetime import datetime, timedelta, timezone

@on_trigger
def run(event):
    stripe.api_key = credentials.secret("STRIPE_API_KEY")
    end = datetime.now(timezone.utc).replace(hour=0, minute=0, second=0, microsecond=0)
    period = {"gte": int((end - timedelta(days=1)).timestamp()), "lt": int(end.timestamp())}
    totals = {}
    for tx in stripe.BalanceTransaction.list(created=period, limit=100).auto_paging_iter():
        if tx.type in ("charge", "payment", "refund", "payment_refund"):
            t = totals.setdefault(tx.currency.upper(), {"sales": 0, "refunds": 0})
            t["refunds" if "refund" in tx.type else "sales"] += abs(tx.amount) / 100
    previous = state.get("previous") or {}
    lines = []
    for cur, t in sorted(totals.items()):
        net = t["sales"] - t["refunds"]
        before = previous.get(cur)
        change = f" ({net - before:+,.2f} vs day before)" if before is not None else ""
        lines.append(f"{cur}: sales {t['sales']:,.2f}, refunds {t['refunds']:,.2f}, net {net:,.2f}{change}")
    notify.slack("Stripe revenue yesterday\n" + ("\n".join(lines) or "No payments"), channel="#finance")
    state.set("previous", {c: t["sales"] - t["refunds"] for c, t in totals.items()})
    return {"currencies": len(totals)}

FAQ

Common questions

Can I get weekly or monthly totals instead of daily?
Yes. Ask for the period you want, such as every Monday for the previous week or the first of the month for the previous month. The comparison is then with the period before.
Are Stripe fees taken off?
The report shows gross sales, refunds and net of refunds. It can also subtract Stripe's processing fees if you want the amount that actually reaches your bank.
What time zone does the day follow?
Your own. Yesterday means midnight to midnight in the time zone you set, so the figures match what you see in Stripe's dashboard.
What permissions does it need?
Stripe read (restricted key); chat:write. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (on a schedule). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Post Stripe revenue reports in Slack” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.