Skip to content

Weekly

Send overdue invoice reminders from Xero

Customers more than 14 days overdue get their invoice again from Xero, and you get the list of who was reminded.

Runs
Weekly
Apps
Xero
AI
Not needed
Access
accounting.transactions

Send this to your assistant

Create a ClickRuntime automation: every Tuesday at 10am, resend by email any approved Xero sales invoice more than 14 days overdue, add a note to its history, and email me who received one.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Reminding customers about overdue invoices is a task everyone agrees is necessary and nobody wants to do. Someone has to open Xero, filter for overdue, click into each invoice, send it again and write down that a reminder went out. When the month gets busy this stops, and the invoices that most need a nudge are the ones that never get it.

Every week, overdue sales invoices are found in Xero, and each customer is emailed the invoice again through Xero itself, so the message comes from your usual sending address with the invoice attached. A history note is added to each invoice, and you receive a summary of who was reminded.

Small businesses with many customers and no credit controller are the best fit, particularly when most overdue invoices are simply forgotten rather than disputed.

What you get out of it

  • Forgotten invoices get paid

    Many late invoices are not disputes. They are overlooked, and a weekly reminder with the invoice attached is often all it takes for the customer to pay. A routine nudge often recovers money that would otherwise have taken months to arrive.

  • A consistent process, not a mood

    Every overdue customer is treated the same way each week, so reminders do not depend on whether the owner was in a good mood to chase that week. Consistency is also fairer, because no customer is chased harder or less than another.

  • Each reminder is documented

    The history note on each invoice records the date a reminder was sent, which helps if a dispute comes up and you need to show you followed up. A dated note is solid evidence of your collection efforts in any later dispute.

  • The send comes from Xero

    Because the reminder goes out through Xero, it carries your branding and your invoice template, and the customer can pay using the same link they received before. Customers recognize the email and already know how to pay from it.

  • You still see the whole picture

    The summary email lists who was reminded, so you can phone the larger accounts yourself and avoid an automated nudge sitting alone on a sensitive relationship. Personal calls to big accounts then build the relationship while routine chasing runs on its own.

How it works

What happens, step by step

  1. Every week ClickRuntime finds the sales invoices in Xero that are more than 14 days overdue.

  2. It has Xero email each of those invoices to the customer again.

  3. It adds a note to each invoice's history in Xero so your team can see a reminder went out.

  4. You get a summary email listing who was reminded, the amount and how many days late each invoice is.

Before it runs live

  • Connect Xero

What you get

RunsWeekly
Send overdue invoice reminders from Xerotoday, 9:00Succeeded
Email · Overdue remindersSent 3 overdue reminders INV-0377 Acme Ltd: 1,920.00, 22 days late

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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 Xero steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
send_overdue_reminders_from_xero.pyexample
from datetime import date
from clickruntime import on_trigger, credentials, http, notify

API = "https://api.xero.com/api.xro/2.0"

def xero_headers():
    token = credentials.connection("xero", "work")
    tenant = http.get("https://api.xero.com/connections", headers={"Authorization": f"Bearer {token}"}).json()[0]["tenantId"]
    return {"Authorization": f"Bearer {token}", "xero-tenant-id": tenant, "Accept": "application/json"}

@on_trigger
def run(event):
    headers = xero_headers()
    params = {"Statuses": "AUTHORISED", "where": 'Type=="ACCREC" AND AmountDue>0'}
    sent = []
    for inv in http.get(f"{API}/Invoices", headers=headers, params=params).json()["Invoices"]:
        late = (date.today() - date.fromisoformat(inv["DueDateString"][:10])).days
        if late <= 14:
            continue
        http.post(f"{API}/Invoices/{inv['InvoiceID']}/Email", headers=headers, json={}).raise_for_status()
        http.put(f"{API}/Invoices/{inv['InvoiceID']}/History", headers=headers,
                 json={"HistoryRecords": [{"Details": f"Overdue reminder sent ({late} days late)"}]})
        sent.append(f"{inv['InvoiceNumber']} {inv['Contact']['Name']}: {inv['AmountDue']:,.2f}, {late} days late")
    if sent:
        notify.email_me(f"Sent {len(sent)} overdue reminders", "\n".join(sent))
    return {"sent": len(sent)}

FAQ

Common questions

Will it remind customers who are already disputing an invoice?
It reminds all overdue sales invoices unless you exclude them. For disputed accounts, tell your AI assistant to skip certain contacts, or add a rule such as ignoring invoices with a particular reference or tracking category.
How often will the same customer be reminded?
Once per weekly run while the invoice stays overdue. If that is too frequent for your relationship, ask to space reminders at 14 days instead, or to stop after a set number, so customers do not feel pestered.
What does the customer actually receive?
The standard Xero invoice email with the invoice attached and your usual message. Since it is sent through Xero, replies go to the address on your account, so you handle responses exactly as you do for the first send.
What permissions does it need?
accounting.transactions. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (weekly). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Send overdue invoice reminders from Xero” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.