Collects as they arrive, acts daily
Chase overdue invoices automatically
Clients with overdue invoices get polite reminders from your email, firmer after 30 days, and finance sees a daily summary in Slack.
- Runs
- Collects as they arrive, acts daily
- Apps
- Gmail, Slack
- AI
- Optional
- Access
- Gmail gmail.send; Slack chat:write
Send this to your assistant
Create a ClickRuntime automation: give me a link my accounting tool can send invoices to. Every morning, email a reminder for each overdue invoice, use a firmer tone after 30 days, and post a summary to #finance.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Chasing late payments is one of the most uncomfortable parts of running a small business. Invoices go out, due dates pass and a finance person has to remember who is late, how late, and how firmly to word the nudge. Some clients get reminded three times, others never, and the cash that was supposed to arrive on the first of the month turns up in the middle of the next.
As invoice emails arrive, they are stored. Each day, the ones past due are picked out and a reminder goes from Gmail, with wording that depends on the stage, such as a friendly nudge at 3 days and a firmer note at 14. Finance gets a daily Slack summary of who was reminded.
Freelancers, agencies and small finance teams without a collections tool find it most useful.
What you get out of it
Cash arrives sooner
A prompt, polite reminder is often all a client needs to pay, and collecting invoices a week earlier improves cash flow without any hard conversation. Healthy cash flow also reduces the stress of paying your own bills.
Tone matches how late the invoice is
Early reminders are gentle while later ones are firmer, so long-term clients are not offended and persistent late payers get a clear message. That keeps relationships intact while still protecting your income.
No client is forgotten or over-chased
Stage tracking means every overdue invoice gets the right reminder at the right time, instead of random reminders when someone happens to remember. Consistency alone often shortens average payment time noticeably.
Finance sees one daily summary
A Slack post listing who was reminded gives the team a view of overdue exposure at a glance, which supports decisions about pausing work for a client. Decisions about continuing work can be made with real numbers.
Reminders come from your own address
Messages sent from your Gmail look personal and reach the person who matters, which gets better responses than a generic billing system address. The personal touch tends to get a quick human reply.
How it works
What happens, step by step
Each time an invoice is sent to ClickRuntime, it records the client, email, amount, due date and status.
Every morning it picks out the unpaid invoices that are past their due date.
Each client gets a polite reminder from your Gmail, with a firmer one once the invoice is more than 30 days late.
A summary appears in your #finance Slack channel listing each reminder sent, the amount and how many days late it is.
Before it runs live
- Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Paste your automation's link into the other app's webhook settings
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
- Act only on the items that match your own rules, and skip the rest
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Google Sheets
- Combine it with other Gmail and Slack steps into one automation
Under the hood
The code that runs this automation
import base64
from datetime import date
from email.message import EmailMessage
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, on_trigger, credentials, state, notify
@on_event
def handle(event):
inv = event.json or {}
invoices = state.get("invoices") or {}
invoices[inv["number"]] = {k: inv.get(k) for k in ("email", "client", "amount", "due_date", "status")}
state.set("invoices", invoices)
return {"stored": inv["number"]}
@on_trigger
def run(event): # every morning
gmail = build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
invoices, lines = state.get("invoices") or {}, []
for number, inv in invoices.items():
late = (date.today() - date.fromisoformat(inv["due_date"])).days
if inv["status"] == "paid" or late <= 0:
continue
firm = late > 30
msg = EmailMessage()
msg["To"], msg["Subject"] = inv["email"], f"{'Final reminder' if firm else 'Reminder'}: invoice {number}"
msg.set_content(f"Hi {inv['client']},\n\nInvoice {number} for {inv['amount']} was due on {inv['due_date']}. "
+ ("It is now over 30 days overdue. Please pay within 7 days." if firm else
"Could you let us know when we can expect payment?") + "\n\nThanks")
gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
lines.append(f"• {inv['client']} {number}: {inv['amount']}, {late} days late{' (firm)' if firm else ''}")
if lines:
notify.slack(f"Sent {len(lines)} invoice reminders\n" + "\n".join(lines), channel="#finance")
return {"reminders": len(lines)}FAQ
Common questions
How does it know an invoice is overdue?
How do paid invoices stop receiving reminders?
How many reminders will a client get?
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
Track your spending from receipt emails
Each receipt that lands in your inbox is posted to Slack, and you always know this month's total.
See how it worksWelcome new hires by email and in Slack
Each new starter gets a welcome email with first-day details, and the team gets an intro in Slack.
See how it worksReply to every enquiry and tell your team
New website enquiries reach your team in Slack, and the sender gets a thank-you from your own email address.
See how it worksKeep exploring
Set up “Chase overdue invoices automatically” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.