Every 15 minutes
Get 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.
- Runs
- Every 15 minutes
- Apps
- Wave
- AI
- Not needed
- Access
- full access token
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, check my Wave invoices and post to #payments in Slack whenever one changes to paid, with the customer, invoice number and amount.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A freelance designer or a two-person bookkeeping shop invoices through Wave and then keeps refreshing the Invoices page to see whether a client has paid. Payment can land through a card, a bank transfer or a manual entry, and Wave does not push a message to the team when the status flips to Paid. Work waits on money that already arrived, or a reminder goes out to a client who settled the bill yesterday.
Every fifteen minutes the automation queries your Wave invoices with their status, compares each one with the status it stored last time, and posts a message whenever an invoice has changed to Paid. The post names the invoice number, the customer and the amount so you can act on it without opening Wave.
It suits owner-operators who start the next phase of a project only after a deposit clears, and bookkeepers who watch several small clients.
What you get out of it
Start work the hour the deposit lands
Many projects begin only after the first invoice is paid. A message within fifteen minutes of the status change lets you schedule the kickoff the same day instead of discovering the payment two days later and losing momentum.
No awkward reminders to paying clients
Chasing a client who already paid is embarrassing and costs goodwill. Seeing Paid status in your feed means your follow-up list only contains invoices that are genuinely outstanding, so every reminder you send is justified.
Cash position without logging in
Each notice carries the amount, so a quick scroll of the channel tells you roughly how much came in this week. That is useful when deciding whether to pay a contractor, buy software or wait until next Friday.
Shared visibility for a small team
A partner or assistant who does not have access to Wave still sees which invoices were settled, so nobody has to interrupt the owner to ask whether the Henderson invoice is paid before they release the files.
A dated record of payments
The channel history shows when each invoice flipped to Paid. When a client disputes timing or an accountant asks for dates, you have the answer without digging through Wave reports or bank statements.
How it works
What happens, step by step
Every 15 minutes ClickRuntime checks the status of your Wave invoices.
It compares each status with what it saw last time, so it only reacts to invoices that have just turned paid.
For each newly paid invoice, your Slack channel gets the invoice number, customer and amount.
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
- Act only on the items that match your own rules, and skip the rest
- 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, state, report_fetched
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: PAID, sort: [MODIFIED_AT_DESC], pageSize: 50) {
edges { node { id invoiceNumber customer { name } total { value currency { code } } } } } } }"""
@on_trigger
def run(event):
paid = [e["node"] for e in wave(QUERY)["invoices"]["edges"]]
seen = state.get("paid_ids")
new = [i for i in paid if seen is not None and i["id"] not in seen]
report_fetched(len(new))
if seen is not None and not new:
return {"posted": 0}
for inv in new:
notify.slack(f"Paid: invoice {inv['invoiceNumber']} from {inv['customer']['name']}, "
f"{inv['total']['value']} {inv['total']['currency']['code']}", channel="#payments")
state.set("paid_ids", [i["id"] for i in paid])
return {"posted": len(new)}FAQ
Common questions
Does it catch invoices marked as paid manually in Wave?
Will I be alerted about partial payments?
Does the first run flood the channel with old paid invoices?
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
Post new Wave customers to Slack
When a customer is added in Wave, their details appear in Slack within the hour.
See how it worksEmail yourself overdue Wave invoices every Monday
The week starts with one email listing each late invoice and how much is still due.
See how it worksGet 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 worksKeep exploring
Set up “Get a Slack ping when a Wave invoice is paid” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
