Automated Sales Invoice Generation from Google Sheets (Make.com)

Eliminate manual bookkeeping by automatically syncing 'Closed-Won' deals from Google Sheets to Xero Invoices.

Tools: Google SheetsXero

Platform: Make.com

Short Answer

A seamless, real-time bridge where a status change in Google Sheets instantly creates or updates a Contact in Xero and generates a Draft Invoice. This ensures 100% data accuracy and provides immediate visibility into accounts receivable.

The Problem

Sales teams often manage pipelines in flexible spreadsheets, leading to manual data entry errors and delays when transitioning deals to the finance department for invoicing. This disconnect creates friction in the cash flow cycle and increases the risk of duplicate or missed billings.

The Outcome

A seamless, real-time bridge where a status change in Google Sheets instantly creates or updates a Contact in Xero and generates a Draft Invoice. This ensures 100% data accuracy and provides immediate visibility into accounts receivable.

Step-by-Step Guide

1. **Create Scenario**: Log in to Make.com, click 'Create a new scenario', and add the **Google Sheets > Watch Changes** (Instant) module. 2. **Connect Google Sheets**: Click 'Add' to create a connection. Install the 'Make for Google Sheets' Add-on in your sheet, paste the provided Webhook URL, and select the specific spreadsheet and worksheet. 3. **Set Up Filter**: Add a Filter between the Google Sheets and Xero modules. Set the condition to only proceed if the 'Status' column (e.g., Column C) `Equal to` 'Closed-Won' AND 'Xero Invoice ID' `Does not exist` (to prevent duplicates). 4. **Search Contact**: Add the **Xero > Search for a Contact** module. Map the 'Email' field from the Sheet to the 'EmailAddress' search field. This prevents creating duplicate contacts for returning customers. 5. **Router for Logic**: Add a **Router**. On the first path, set a filter: `Contact ID` (from search) `Does not exist`. Add the **Xero > Create a Contact** module here. 6. **Create Invoice**: Add the **Xero > Create an Invoice** module after the Router paths converge. Map the Contact ID (from either search or create), and fill the Line Items using fields like `Description`, `Quantity`, and `UnitAmount` from the Sheet. 7. **Data Formatting**: Use the Make.com `parseDate()` function for the Invoice Date to ensure it's in ISO 8601 format (e.g., `parseDate(DateColumn; "MM/DD/YYYY")`). 8. **Update Source**: Add a **Google Sheets > Update a Row** module. Map the Original Row ID and write the Xero Invoice ID back to a 'Xero Link' column. This acts as a 'Processed' flag. 9. **Error Handling**: Right-click the Xero Invoice module and select 'Add error handler'. Choose the **Break** or **Rollback** directive, or add a **Slack** module to notify the admin if an Account Code is invalid.