Quick overview
This workflow runs daily to pull unpaid invoices from Xero, calculates how overdue they are, sends tiered Gmail reminders and Slack alerts, and logs each invoice-tier reminder in Google Sheets to prevent duplicate follow-ups.
How it works
- Runs every day at 08:00 using a scheduled trigger.
- Loads reminder thresholds (7/14/30 days) and then fetches unpaid invoices from Xero for the selected organisation.
- Calculates each invoice’s days overdue, assigns it to a 7-, 14-, or 30-day tier, and prepares key fields like contact email, amount due, and a unique
invoiceId_tier identifier.
- Checks a Google Sheets log to see whether that
invoiceId_tier reminder has already been sent and skips any that are already recorded.
- For 7-day overdue invoices, sends a friendly reminder email to the customer via Gmail.
- For 14-day overdue invoices, sends a firmer Gmail reminder and posts an internal Slack alert about the overdue invoice.
- For 30-day overdue invoices, posts a Slack escalation message that includes a call task, then writes the processed
invoiceId_tier entries back to Google Sheets.
Setup
- Add Xero OAuth credentials and set the correct Organisation/Tenant ID in the Xero node.
- Add Gmail OAuth credentials and ensure your Xero contacts have an email address populated so reminders have a valid recipient.
- Add Google Sheets OAuth credentials and point both Google Sheets nodes to a spreadsheet tab that includes an
invoiceId_tier column for deduplication.
- Add Slack credentials, set the target channel IDs in both Slack nodes, and invite the Slack app/bot to those channels.
- Review and adjust the tier day thresholds and message text (email and Slack) to match your collections process before activating the workflow.
Requirements
-
Quick troubleshooting
- 403 AuthenticationUnsuccessful on Xero → usually Return All on, or wrong/expired org auth.
- Empty Calculate output → invoices not ≥ tier1 days overdue, or date parse issue (workflow already handles /Date(...)/ + DueDateString).
- Slack shows {{ $... }} text → message field missing leading =.
- No email → contactEmail null (Xero contact has no email).
Additional info
Connect with us:
Website: https://www.intuz.com/n8n-workflow-automation-templates/
Email: getstarted@intuz.com
LinkedIn: https://www.linkedin.com/company/intuz
Get Started: https://n8n.partnerlinks.io/intuz
For Custom Worflow Automation
https://www.intuz.com/get-started/