Weekly Xero cash flow and financial health digest
Every Monday at 8am, get a one-screen brief of last week's revenue, cash on hand, overdue customers, and upcoming bills, posted to Slack and emailed to your finance team.
Build me an agent workflow that delivers a weekly cash flow and financial health digest from Xero to my finance team.
Trigger: cron, every Monday at 8am in the user's local timezone (make the timezone configurable at setup). The window the digest covers is the previous Monday through Sunday.
On each run, the agent should pull the following from Xero for the configured organisation: Profit and Loss Report for last week and for month to date, Bank Summary Report for last week, Balance Sheet Report as of last Sunday, Aged Receivables by Contact Report, and Aged Payables by Contact Report. Use the documented Xero operations for each of those reports.
Xero specifics the agent must handle. Every Xero call needs a tenant ID in the Xero-Tenant-Id header. After the user connects Xero, fetch the list of authorised organisations from the connections endpoint and let the user pick which tenant this workflow reports on, then store that tenant ID with the workflow config. Xero returns dates in .NET JSON date format like /Date(1551830400000+0000)/. Parse the millisecond timestamp before formatting any date or doing arithmetic; never display the raw .NET date string. Money fields are decimals, not cents. Set Accept: application/json explicitly on every request.
From those reports, synthesise a one-screen executive brief with these sections, in this order. 1) Revenue last week vs the prior week, plus month to date vs the same point last month. 2) Cash on hand across bank accounts, plus weekly burn (cash change over the week). 3) Top three overdue customers by amount, each line showing the customer name, amount outstanding, and days past due, taken from the aged receivables report. 4) The largest bills coming due in the next 14 days from the aged payables report, with vendor, amount, and due date. 5) One or two short commentary lines from the agent flagging anything that looks off. The agent should use judgment here rather than dumping numbers: examples of things worth calling out include a meaningful revenue drop or spike, a customer slipping into a worse aging bucket, cash falling below a configurable floor, or a large bill landing in a thin cash week. If nothing is unusual, say so in one line.
Output destinations. Post the digest to a configurable Slack channel using Slack Send a Message. Format it as a Slack mrkdwn message (use *bold*, not **bold**), with clear section headers and a compact layout that fits on one screen. Also send the same brief via Gmail Send a Message to a configurable distribution list, as a clean HTML email with the same sections. Use the same content for both; reformat for the destination, do not generate two different briefs.
Configurable settings the user should set during onboarding: Xero organisation (tenant), timezone for the 8am schedule, Slack channel, Gmail recipient list, optional cash-on-hand floor for the alert, optional revenue-change threshold for the alert, optional minimum bill size for the upcoming-bills section.
Error handling. If a Xero report comes back empty or errors, include a short line in the brief saying which section is missing and why, rather than failing the whole run. Respect Xero rate limits and the Retry-After header.
Additional information
What does this prompt do?
- Pulls last week's Profit and Loss, Bank Summary, Balance Sheet, and aged receivables and payables straight from Xero, no spreadsheets required.
- Builds a one-screen executive brief covering revenue vs the prior week and month to date, cash on hand, weekly burn, the three biggest overdue customers, and the largest bills coming due in the next 14 days.
- Adds one or two AI-written commentary lines flagging anything that looks off, like a revenue drop, a customer slipping past 60 days, or a large bill landing during a thin cash week.
- Posts the formatted brief to your finance Slack channel and emails the same digest to a distribution list via Gmail, every Monday at 8am.
What do I need to use this?
- A Xero account with the reporting and contacts permissions, connected by someone with access to the organisation you want reported on.
- A Slack workspace and a channel for the finance team where the digest should post.
- A Gmail account that can send the digest to your distribution list.
- A list of email recipients (CFO, founders, finance ops, board observers, whoever you want on the brief).
How can I customize it?
- Change the schedule. Move it to Friday afternoon for an end of week wrap, or run it daily during a cash crunch.
- Adjust the thresholds. Tell the agent what counts as a meaningful revenue swing, what overdue age to start flagging at, and how big a bill needs to be before it lands on the brief.
- Change the recipients. Swap the Slack channel, edit the Gmail distribution list, or send a personal copy to the CFO with extra context the wider team should not see.
- Tune the commentary. Ask for a more conservative tone, more specific call outs (runway, gross margin, a particular customer), or a plain numbers-only version with no AI commentary.
Frequently asked questions
What does the digest actually look like?
Will this work for my Xero region?
I manage several Xero organisations. Can I pick which one?
Can I send it somewhere other than Slack and Gmail?
Does it post as me in Slack or as a bot?
Stop chasing finance numbers every Monday morning.
Connect Xero, Slack, and Gmail once, and Geni delivers the cash flow brief to your team at 8am every Monday.