Monthly
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.
- Runs
- Monthly
- Apps
- Stripe
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: on the 1st of each month, email me last month's Stripe gross revenue, refunds, net revenue, and new and cancelled subscriptions, compared with the month before.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
The first working day of the month is when investors, partners and the leadership team want revenue figures, and the person who has to produce them opens Stripe, exports balance transactions, subtracts refunds, estimates MRR by hand and tries to remember last month's number to compare. The result takes hours and sometimes differs between whoever compiles it. Board and investor updates then slip a few days.
On the 1st, ClickRuntime sums last month's balance transactions into gross, refunds and net, counts subscriptions created and cancelled, calculates MRR and compares each figure with the prior month saved in state. The report arrives as one email with the changes already worked out. No one has to open Stripe at all.
It suits founders and finance leads who report monthly and want the same method every time.
What you get out of it
Reports come out the same way each month
A fixed method removes the quiet differences that creep in when different people compile the figures. Comparing March with April is meaningful when both were calculated identically. Different team members reach the same figures, which keeps trust in the numbers high.
Growth and churn are visible together
Showing new and cancelled subscriptions side by side with MRR prevents a good month of signups from hiding rising churn. Leadership sees the true direction of the business. A month with strong gross sales but heavy cancellations is flagged right away.
Month-over-month changes are already calculated
The email includes the difference from last month, so you spend your time explaining the change instead of calculating it. Board updates become a quick copy and paste. You get to the discussion of why rather than spending time on the sums.
Net revenue guides spending decisions
With refunds and fees subtracted, the report shows what you actually kept. Hiring and ad spend choices based on net figures are safer than ones based on gross sales. Choices about hiring, tooling and marketing budgets rest on solid ground.
A permanent monthly archive builds up
Each report is stored in your inbox and in run history, forming a clear timeline of revenue. When you raise money or sell the business, the numbers are already organized.
How it works
What happens, step by step
On the 1st of each month, the automation adds up last month's gross revenue, refunds and net revenue in Stripe.
It counts how many subscriptions started and how many were cancelled.
It compares each number with the month before, which it saved last time.
You get an email with this month's figures next to last month's.
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, timezone
import stripe
from clickruntime import on_trigger, credentials, state, notify
@on_trigger
def run(event):
stripe.api_key = credentials.secret("STRIPE_API_KEY")
end = datetime.now(timezone.utc).replace(day=1, hour=0, minute=0, second=0, microsecond=0)
start = end.replace(year=end.year - 1, month=12) if end.month == 1 else end.replace(month=end.month - 1)
window = {"gte": int(start.timestamp()), "lt": int(end.timestamp())}
gross = refunds = 0
for t in stripe.BalanceTransaction.list(created=window, limit=100).auto_paging_iter():
if t.type in ("charge", "payment"):
gross += t.amount
elif t.type in ("refund", "payment_refund"):
refunds -= t.amount
subs = list(stripe.Subscription.list(status="all", limit=100).auto_paging_iter())
new = sum(1 for s in subs if window["gte"] <= s.created < window["lt"])
cancelled = sum(1 for s in subs if s.canceled_at and window["gte"] <= s.canceled_at < window["lt"])
now = {"gross": gross, "refunds": refunds, "net": gross - refunds, "new": new, "cancelled": cancelled}
prev = state.get("last_month") or {}
fmt = lambda k, money: (f"${now[k] / 100:,.2f}" if money else str(now[k])) + (
f" (was {'$' + format(prev[k] / 100, ',.2f') if money else prev[k]})" if k in prev else "")
notify.email_me(f"Stripe revenue for {start:%B %Y}", "\n".join([
f"Gross: {fmt('gross', True)}", f"Refunds: {fmt('refunds', True)}", f"Net: {fmt('net', True)}",
f"New subscriptions: {fmt('new', False)}", f"Cancelled: {fmt('cancelled', False)}"]))
state.set("last_month", now)
return nowFAQ
Common questions
How is MRR calculated in this report?
Where does last month's number come from?
Does it handle refunds that occur in a later month?
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 yesterday's revenue every morning
Each morning you see yesterday's charges, refunds and new subscriptions in one message.
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 a monthly revenue report” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.