Weekly
Email yourself overdue Wave invoices every Monday
The week starts with one email listing each late invoice and how much is still due.
- Runs
- Weekly
- Apps
- Wave
- AI
- Not needed
- Access
- full access token
Send this to your assistant
Create a ClickRuntime automation: every Monday at 7:30am, email me a list of overdue Wave invoices with customer, due date and amount due, sorted by the oldest first.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Late payments hurt small businesses quietly. Wave marks invoices as overdue when the due date passes, but nothing tells you which ones are affected, how late they are, or whether the same client keeps appearing. Without a weekly look, a 30-day invoice slides to 75 days, the client's attention moves on, and the money is collected only after an uncomfortable conversation, if at all.
Every week the automation queries Wave for invoices with the OVERDUE status and emails you a list: customer, invoice number, amount and due date. You get a single sheet to work from, such as making calls on Tuesday morning, rather than a hunt through the Invoices page and a mental note of who owes what.
It is especially valuable for service businesses that bill after delivery and carry real cash risk in unpaid invoices.
What you get out of it
Chase while the invoice is still fresh
A client who is two weeks late usually pays after a polite nudge. One who is ten weeks late often needs escalation and sometimes never pays. A weekly list keeps you in the first group, where collecting is cheap and friendly.
One list to work through on a set day
Having every overdue invoice in a single email turns collections into a thirty-minute task you can schedule, rather than an item that never gets time because nobody can see how big the problem is.
See repeat late payers
If the same customer is on the list month after month, that is a pattern worth acting on with shorter terms, a deposit up front or a late fee written into the next quote, instead of repeating the same chase.
Know the total owed to you
Adding up the overdue amounts shows how much cash is waiting outside your account, which helps when deciding on a purchase or a hire and when explaining a cash squeeze to a partner or a lender.
Evidence for a collections conversation
The email shows due dates, so you can say exactly how many days late an invoice is when you call, and the client cannot easily claim it was only sent recently or that they never saw it.
How it works
What happens, step by step
Every Monday ClickRuntime gets the invoices Wave marks as overdue.
It lists each one with its due date, customer, invoice number and the amount still due.
The list arrives in your inbox as one email.
Before it runs live
- Connect Wave
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 Wave steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify
BUSINESS_ID = "your-wave-business-id"
def wave(query, variables=None):
token = credentials.connection("wave", "work")
resp = http.post("https://gql.waveapps.com/graphql/public", headers={"Authorization": f"Bearer {token}"},
json={"query": query, "variables": {"biz": BUSINESS_ID, **(variables or {})}})
return resp.json()["data"]["business"]
QUERY = """query($biz: ID!) { business(id: $biz) { invoices(status: OVERDUE, pageSize: 100) {
edges { node { invoiceNumber dueDate customer { name } amountDue { value } } } } } }"""
@on_trigger
def run(event):
invoices = sorted((e["node"] for e in wave(QUERY)["invoices"]["edges"]), key=lambda i: i["dueDate"])
lines = [f"{i['dueDate']} {i['customer']['name']} #{i['invoiceNumber']}: {i['amountDue']['value']}" for i in invoices]
notify.email_me(f"{len(lines)} overdue Wave invoices", "\n".join(lines) or "Nothing overdue.")
return {"count": len(lines)}FAQ
Common questions
Which invoices does Wave treat as overdue?
Will the same invoice appear in every weekly email?
Can I send the digest to my bookkeeper too?
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 Friday summary of invoices you sent
At the end of each week you have a record of every invoice created in Wave and the total billed.
See how it worksGet a Slack ping when a Wave invoice is paid
Within a quarter of an hour of an invoice turning paid, you see the customer and amount in Slack.
See how it worksPost new Wave customers to Slack
When a customer is added in Wave, their details appear in Slack within the hour.
See how it worksKeep exploring
Set up “Email yourself overdue Wave invoices every Monday” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
