Daily
Get yesterday's revenue every morning
Each morning you see yesterday's charges, refunds and new subscriptions in one message.
- Runs
- Daily
- Apps
- Stripe
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every day at 9am, post yesterday's Stripe revenue, refunds and new subscriptions to #revenue in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A founder wakes up wondering how yesterday went. Answering takes a login, the Stripe dashboard, a date filter that resets itself, and three tabs for payments, refunds and new customers. Most days they skip it, and a day of failed checkouts or a surprise refund wave goes unnoticed until the weekly review, when the cause is long cold. A weekend spike or dip goes unseen for days.
Each morning, ClickRuntime lists yesterday's balance transactions in Stripe, adds up charges, refunds and fees, counts new customers and posts a short summary to Slack. The numbers arrive before the first meeting, so the day starts with the same figures everyone else on the team is looking at.
It suits e-commerce shops, indie SaaS and small agencies that want a pulse check without building a dashboard.
What you get out of it
Everyone starts the day with the same numbers
A summary in Slack means the founder, the marketer and the support lead all see identical figures. Conversations about whether yesterday was good begin from facts, not different screenshots. Meetings stop opening with who has the right figure.
Revenue drops are noticed within a day
A day with half the usual charges stands out immediately against the previous mornings. Investigating a broken checkout or a paused ad campaign the next morning costs far less than finding it a week later.
Refund spikes get attention early
Seeing refunds listed next to charges makes an unusual day obvious. A product defect or a billing mistake can be caught while only a handful of customers are affected. A same-day look at refunds lets you contact the affected buyers while the order is still fresh.
Net revenue replaces vanity totals
Because fees and refunds are included, the summary shows what actually landed rather than gross sales. That is the number that matters for cash planning and tax set-asides. It is the figure you can actually spend, rather than a headline total that overstates the day.
A habit of looking at the business
Quick visibility makes owners check the trend regularly. Small shifts in daily new customers become familiar before they turn into problems. Over weeks, you learn what a normal Tuesday looks like and spot oddities sooner.
How it works
What happens, step by step
Every morning, the automation collects yesterday's Stripe transactions.
It adds up revenue and refunds and counts new subscriptions.
One message with the totals is posted to your Slack channel.
Before it runs live
- Connect Stripe
What you get
Build your own
Need it to work differently?
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 Slack
- Combine it with other Stripe steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
import stripe
from clickruntime import on_trigger, credentials, notify
@on_trigger
def run(event):
stripe.api_key = credentials.secret("STRIPE_API_KEY")
today = datetime.now(timezone.utc).replace(hour=0, minute=0, second=0, microsecond=0)
window = {"gte": int((today - timedelta(days=1)).timestamp()), "lt": int(today.timestamp())}
revenue = refunds = 0
for txn in stripe.BalanceTransaction.list(created=window, limit=100).auto_paging_iter():
if txn.type in ("charge", "payment"):
revenue += txn.amount
elif txn.type in ("refund", "payment_refund"):
refunds += -txn.amount
new_subs = sum(1 for _ in stripe.Subscription.list(created=window, status="all", limit=100).auto_paging_iter())
notify.slack(f"Yesterday: revenue ${revenue / 100:,.2f} · refunds ${refunds / 100:,.2f} · "
f"{new_subs} new subscriptions", channel="#revenue")
return {"revenue": revenue, "refunds": refunds, "new_subscriptions": new_subs}FAQ
Common questions
What time zone does yesterday refer to?
Does it include payouts or only customer payments?
Can I get the summary in multiple currencies?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a monthly revenue report
On the 1st you get last month's gross, refunds, net and new vs cancelled subscriptions, compared with the month before.
See how it worksSee overdue invoices every week
Each Monday you get open invoices past their due date, oldest first.
See how it worksGet warned when payments look unusual
You're told when today's payments drop sharply or refunds spike compared with a normal day.
See how it worksKeep exploring
Set up “Get yesterday's revenue every morning” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.