Skip to main content

Scheduled Xero Report Refresh in Excel

XO Report is pull, not push — here are the honest ways to automate refresh.

XO Report does not have built-in scheduled refresh. The add-in is a pull model — it fetches from Xero when Excel recalculates a formula or when you click the task pane Refresh button. There is no daemon, no cloud worker, no "refresh at 6am" toggle.

That said, you can absolutely automate refresh on a schedule. This tutorial walks the three realistic patterns: Windows Task Scheduler opening the file daily, Excel for Web + Office Scripts running on a Power Automate flow, and external workflow tools (Make, Zapier, n8n) that open the workbook to trigger recalculation. Each pattern has clear trade-offs, listed step-by-step below.

Prerequisite: a refreshable workbook built on XO Report formulas. If you do not have one yet, read live Xero data in Excel first to understand the control-cell pattern these schedules rely on.

  1. Build a workbook that refreshes on file open

    Every scheduled-refresh pattern works the same way: an automation opens the file, Excel recalculates the formulas (pulling fresh Xero data through the XO Report add-in), and the automation saves the file. For this to work the workbook must recalculate on file open.

    Excel desktop has this on by default — File → Options → Formulas → Workbook Calculation set to Automatic. Excel for Web defaults to automatic too. If a previous user set it to Manual, change it back; otherwise the workbook opens with stale numbers and the automation has accomplished nothing.

    Sanity check: open the file in Excel, change a date in the Setup tab, and confirm the dependent XO.BALANCE formulas re-pull from Xero. If they do, the same recalculation trigger fires on file open and the schedule patterns below will keep the workbook current.

  2. Pattern A — Windows Task Scheduler (simplest, file lives on the user PC)

    The simplest pattern for a single-PC setup. Windows Task Scheduler ships with every Windows install; the cost is zero. Open Task Scheduler, create a new task, set the trigger to your desired schedule (daily at 06:00 is typical for morning-pack delivery), set the action to Start a program, browse to excel.exe (commonly C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE), and pass the workbook path as the argument.

    Excel opens, recalculates, the XO Report add-in fetches fresh Xero data, and the workbook is current. To save the file in place, either rely on Excel's AutoSave (when the file is on OneDrive / SharePoint) or run a small companion PowerShell that calls $wb.Save() and $xl.Quit()via the Excel COM object. Trade-offs: the PC must be on and signed in; the user account running the task needs the same Xero OAuth tokens (so run as the user who installed XO Report). Best for a single analyst's working file.

  3. Pattern B — Excel for Web + Office Scripts + Power Automate

    The cloud-native pattern. Save the workbook to OneDrive for Business or SharePoint, then write a small Office Script (TypeScript-flavoured Excel automation that runs in Excel for Web). The script wakes Excel up, recalculates, and saves:

    function main(workbook: ExcelScript.Workbook) {
      workbook.getApplication().calculate(ExcelScript.CalculationType.full);
      // The file is saved automatically by AutoSave when stored on OneDrive/SharePoint.
    }

    Then create a Power Automate Scheduled cloud flow with two actions: (1)Run scriptagainst your workbook on OneDrive / SharePoint; (2) a follow-up notification action if you want a Teams message on success. The flow runs in Microsoft 365 cloud — no local PC needed. Cost: an Office 365 Business Standard licence covers Power Automate's standard connectors, which is what this flow uses.

    Trade-off: XO Report custom functions need to be authorised for the Excel for Web session running the script. The first run typically requires the user account owning the OneDrive file to have approved the add-in's Excel-for-Web permission once. After that the scheduled flow runs unattended.

  4. Pattern C — External workflow tools (Make, n8n, Zapier, Power Automate Desktop)

    If your team already runs a workflow tool, you can probably reuse it. Power Automate Desktop excels at the Pattern A trick of opening Excel on a PC, but on a schedule managed centrally rather than per-PC. Make and n8n can hit the Microsoft Graph API to trigger the same Office Scripts run that Pattern B uses, with more elaborate downstream actions — fire a Slack message, write a CSV snapshot to S3, push a row to a Postgres table.

    The lowest-friction implementation in this family is usually: an n8n cron node calls Microsoft Graph "run script" on the OneDrive workbook, the script recalculates and saves, then the workflow can optionally read the workbook range and forward the numbers wherever you need them.

    Trade-off: any pattern that involves the Microsoft Graph API needs an admin consent for the app registration, which means tenant admins have to approve it once. Pattern A avoids that ceremony entirely; Patterns B and C trade it for the ability to run unattended in the cloud.

  5. Pick a pattern by where the file lives and what stops the process

    None of these patterns are inherently better than the others — they suit different setups. A 60-second decision tree:

    • File lives on a single PC, only one analyst opens it. Pattern A (Task Scheduler). Cheapest, no admin involvement, but breaks when the PC is off.
    • File lives on OneDrive / SharePoint, multi-user finance team. Pattern B (Office Scripts + Power Automate). Survives any one user being on holiday because the schedule runs server-side.
    • Team already runs Make / n8n / Zapier for other automation. Pattern C. Reuse the orchestration you have; add downstream actions (Slack, database, S3) without inventing new infrastructure.

    Whichever pattern you pick, monitor it. The most common failure mode is a Xero OAuth token expiring or the Excel add-in needing re-authorisation. Add a tiny check at the end of the script — fetch a single cell and assert it is a number, not the #N/A that XO Report returns for an unauthorised call — and alert when it fails.

The honest summary: XO Report does not push data to a schedule, but Excel and Microsoft 365 give you three good ways to pull on a schedule. Pattern A is free and simple but fragile; Patterns B and C are more robust but need a one-time setup of cloud automation.

If your only requirement is "Excel workbook current first thing in the morning", Pattern B (Office Scripts + Power Automate) is the path of least regret. If you need richer downstream behaviour (notify, archive, forward), Pattern C. If the workbook lives on one analyst's PC and the analyst is fine with the responsibility, Pattern A.

Frequently asked questions

Does XO Report have built-in scheduled refresh?
No. XO Report is a pull model — refresh happens when Excel recalculates a formula or when the user clicks Refresh in the task pane. Scheduled refresh is implemented by the patterns in this tutorial: an external schedule opens the workbook, the add-in pulls fresh Xero data on recalculation, the file is saved.
Will scheduled refresh consume Xero API rate limits?
Each refresh pulls from Xero exactly like a manual recalculation would. Xero's API rate limits apply (60 calls per minute per app per tenant, with daily ceilings). A typical refreshable workbook makes a few dozen calls per recalculation, well within limits; running it once daily is invisible against the quota.
Can the scheduled-refresh run while a user is editing the workbook?
For Pattern A (Task Scheduler) this can collide — if the user has the file open, the second open will be read-only or prompt. For Pattern B and C the cloud automation runs against the SharePoint / OneDrive copy and resolves with the standard co-authoring conflict logic; in practice the schedule fires when nobody is editing (typically overnight).
What happens if the Xero OAuth token expires during a scheduled run?
XO Report attempts to refresh the token automatically. If the refresh fails (e.g., the user revoked access or the tenant disconnected the app), the formulas return #N/A. Add a sentinel check to the end of your script that asserts a known cell is numeric and alerts on failure — same pattern as monitoring any other scheduled job.
Do I need a Microsoft 365 Business licence for Pattern B?
Yes. Office Scripts runs in Excel for Web, which requires Office 365 / Microsoft 365 Business Standard or higher. Power Automate scheduled flows are included in the same licences. Personal / Family Office plans do not include the standard Power Automate connectors needed for the Run Script action.
Can I trigger refresh from a Xero webhook so the workbook updates after every invoice?
Technically yes — Pattern C can listen for a Xero webhook (n8n / Make / Power Automate webhook trigger) and run the recalculation script. Practically this hammers the workbook on high-volume orgs and rarely improves decision-making over a daily schedule. Daily is usually right; webhook-triggered makes sense only for specific dashboards that demand sub-hour freshness.

Related reading

For a complete overview of building Xero reports in Excel — including how this function fits into a full workflow — see our complete Xero to Excel guide.

Get Xero data flowing into Excel

Install XO Report and try the tutorial above with your own Xero data. 14-day free trial — no credit card.

Free trial · No credit card · Cancel anytime