Automated Sales Invoicing from Google Sheets to Xero (Zapier)
Eliminate manual data entry by converting Google Sheet rows into professional Xero draft invoices automatically.
Tools: Google Sheets → Xero
Platform: Zapier
Short Answer
A seamless workflow where marking a row as 'Approved' in Google Sheets triggers the creation of a contact and a draft invoice in Xero, ensuring 100% data accuracy and faster payments.
The Problem
Sales teams often track deals in spreadsheets, requiring accounting teams to manually re-type data into Xero for invoicing. This double-entry leads to typos, delayed billing cycles, and mismatched financial records.
The Outcome
A seamless workflow where marking a row as 'Approved' in Google Sheets triggers the creation of a contact and a draft invoice in Xero, ensuring 100% data accuracy and faster payments.
Step-by-Step Guide
1. **Create the Zap**: Log into Zapier and click 'Create Zap'. Name it 'Sheet Row to Xero Invoice'.
2. **Setup Trigger**: Choose **Google Sheets** and the event **Updated Spreadsheet Row**. Select your Spreadsheet and Worksheet. Set the 'Trigger Column' to your Status column (e.g., 'Status').
3. **Add Filter**: Add a **Filter by Zapier** step. Configure it to only continue if 'Status' (from Step 2) exactly matches 'Approved'.
4. **Search/Create Contact**: Add a **Xero** action: **Find Contact**. Search by 'Contact Name' or 'Email'. Check the box 'Create Xero Contact if it doesn't exist yet' and map the Sheets name/email fields.
5. **Format Line Items (Optional)**: If your sheet doesn't have prices formatted as decimals, add **Formatter by Zapier** (Numbers > Currency) to ensure the value is Xero-compliant.
6. **Create Invoice**: Add another **Xero** action: **Create Type: Outbound Invoice**.
- Map 'Contact ID' from Step 4.
- Set 'Status' to 'Draft'.
- Map 'Line Item Description', 'Quantity', and 'Unit Amount' from the Sheet.
- Assign 'Account Code' (e.g., 200 for Sales).
7. **Write Back to Sheet**: Add a **Google Sheets** action: **Update Spreadsheet Row**. Use the Row ID from Step 2 and update a 'Xero Invoice ID' column with the ID generated in Step 6. This prevents duplicates.
Data Mapping
| Google Sheets Field | Xero Field | Transformation / Required |
| :--- | :--- | :--- |
| Customer Name | Contact Name | **Required** (Exact match) |
| Customer Email | Email Address | Optional (Used for Find Search) |
| Status Column | (Filter Trigger) | **Condition**: Only if 'Approved' |
| Unit Variable | UnitAmount | **Required** (Use Formatter if contains '