Automated Excel Sales Data to Xero Invoice Sync (Make.com)

Streamline financial workflows by converting Excel rows into verified Xero Invoices using Make.com’s advanced iterators.

Tools: ExcelXero

Platform: Make.com

Short Answer

A fully automated pipeline where new Excel entries are instantly validated and transformed into Xero Draft Invoices. This ensures 100% data integrity, utilizes Make.com's error handling to catch formatting issues, and reduces administrative overhead by 90%.

The Problem

Manual entry of sales data from Excel into Xero is time-consuming and prone to human error, often leading to mismatched tax codes or duplicate records. Businesses struggle to maintain real-time financial visibility when data remains trapped in static spreadsheets.

The Outcome

A fully automated pipeline where new Excel entries are instantly validated and transformed into Xero Draft Invoices. This ensures 100% data integrity, utilizes Make.com's error handling to catch formatting issues, and reduces administrative overhead by 90%.

Step-by-Step Guide

1. **Establish Connections**: In Make.com, add the **Microsoft Excel** module and sign into your Office 365/OneDrive account. Repeat for **Xero**, ensuring you authorize access to the correct Organization via OAuth2. 2. **Configure Spreadsheet Trigger**: Add the 'Watch Table Rows' module. Select your Workbook and the specific Table. Ensure your Excel data is formatted as a 'Table' (Ctrl+T) or Make won't detect the headers. 3. **Search for Contact**: Add a Xero 'Search Contacts' module. Use the mapping `Name = {{row.CustomerName}}`. This prevents creating duplicate contact records for every invoice. 4. **Add Router Logic**: Use a Router to check if the Contact ID exists. If not, add a Xero 'Create a Contact' module using data from the Excel row. 5. **Format Dates for Xero**: In the Xero 'Create an Invoice' module, use the Make.com built-in function `formatDate(row.Date; "YYYY-MM-DD")`. Xero is strict about the date format; passing a standard Excel serial number will cause a 400 error. 6. **Map Line Items**: Map the 'Line Amount', 'Account Code' (e.g., 200), and 'Tax Type'. Use the `ifempty()` function for optional fields to provide default values. 7. **Implement Error Handling**: Right-click the Xero module and select 'Add error handler'. Use the **Breakthrough** or **Ignore** directive to prevent the entire scenario from stopping if one row has an invalid account code. 8. **Update Source Status**: Add an Excel 'Update a Row' module at the end. Map the `Row ID` from the trigger and update a 'Status' column to 'Synced' and a 'Xero ID' column with the newly created Invoice ID for traceability. 9. **Schedule the Run**: Set the scenario to run 'Immediately' (if using Webhooks) or at a specific interval (e.g., every 15 minutes) depending on your data volume.