Monthly
Get links to last month's invoice PDFs
Each month you get every paid invoice's PDF link and total, ready for bookkeeping.
- 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 a list of last month's paid Stripe invoices with their PDF links, customer and total.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
At month end, a bookkeeper asks for every paid invoice from Stripe. Someone logs in, filters by date, opens each invoice and downloads the PDF one by one, then repeats it next month. For a business with 200 invoices, that is an afternoon of clicking, and a missed file only turns up when the accountant questions a number during the quarterly filing. The same chore repeats every single month.
On the 1st, ClickRuntime lists all invoices that were paid in the previous month, collects the invoice_pdf link for each and emails you a list with links, invoice numbers, customers and a total. Forward it to your accountant or save it with your records, and the bookkeeping handoff is done.
It fits freelancers, agencies and small SaaS teams that work with an external accountant.
What you get out of it
Bookkeeping handoff takes seconds
One email with every link replaces an afternoon of downloads. The accountant gets the complete set at the same time each month, which makes closing the books predictable. You can send it before your accountant even asks, which is a small thing that builds trust.
Missing invoices are caught early
Because the list covers all paid invoices with a count and total, a gap is easy to see against the revenue figures. You find the discrepancy in week one, not at tax time.
Audit trails are ready when needed
If a tax authority or investor asks for evidence of a sale, the link and invoice number are in an email from the month it happened. Proving revenue stops being a scavenger hunt.
Accountant fees can come down
Accountants charge for time spent chasing documents. Delivering a tidy monthly list with totals removes follow-up emails, which lowers the hours on your bill. Over a year those saved hours add up to a noticeable difference in fees.
The routine survives holidays and turnover
Nobody has to remember the monthly download. If the person who normally does it is away or leaves, the archive still arrives on schedule. Bookkeeping then no longer depends on one person remembering a chore.
How it works
What happens, step by step
Once a month, the automation collects every Stripe invoice paid last month.
It gathers each invoice's number, customer, total and PDF link.
You get one email with the full list and the month's total, ready for your bookkeeper.
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, 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)
invoices = list(stripe.Invoice.list(status="paid", limit=100,
created={"gte": int(start.timestamp()), "lt": int(end.timestamp())}).auto_paging_iter())
lines = [f"{i.number} {i.customer_name or i.customer_email} {i.total / 100:,.2f} {i.currency.upper()}\n {i.invoice_pdf}"
for i in invoices]
total = sum(i.total for i in invoices) / 100
notify.email_me(f"Paid invoices for {start:%B %Y}: {len(invoices)} (${total:,.2f})", "\n".join(lines) or "None.")
return {"invoices": len(invoices)}FAQ
Common questions
Does the email contain the PDFs or only links?
Are void or refunded invoices included?
Which month does it cover when it runs on the 1st?
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 worksGet 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 worksKeep exploring
Set up “Get links to last month's invoice PDFs” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.