Hey everyone,
I built a production-ready n8n workflow that automates monthly bank reconciliation for Xero users, targeting Australian SMEs and bookkeepers.
What it does:
- Connects directly to Xero API (no CSV exports)
- Fetches unreconciled bank transactions and authorised invoices
- Matches them by amount and date using OData server-side filtering
- Saves results to Google Sheets (Reconciled, Differences, History, Errors tabs)
- Emails the accountant a formatted HTML summary report
- Optionally marks matched transactions as reconciled directly in Xero
Technical notes:
- OData filter: Date>=DateTime(y,m,d) and AmountDue>0 on invoices
- Single CONFIG node for all settings
- 27 nodes with full error handling for Xero, Sheets, and Gmail failures
- templateCredsSetupCompleted: false for clean credential wizard on import
Available with 12-page installation guide and pre-formatted Google Sheet template here:
Happy to answer questions about the Xero API implementation, especially the date filtering quirks.