Automated Multi-Line Invoice Generation from Google Sheets (Make.com)

Convert spreadsheet rows into consolidated QuickBooks Online invoices using Make.com’s Array Aggregator.

Tools: Google SheetsQuickBooks Online

Platform: Make.com

Short Answer

A fully automated workflow in Make.com that watches for 'Ready' status in Google Sheets, aggregates multiple line items into a single bundle, and generates a professional QuickBooks invoice with duplicate prevention and error logging.

The Problem

Manual entry of line items from spreadsheets into QuickBooks is prone to human error and time-consuming. Standard integrations often create one invoice per row, leading to fragmented billing instead of consolidated invoices for a single customer.

The Outcome

A fully automated workflow in Make.com that watches for 'Ready' status in Google Sheets, aggregates multiple line items into a single bundle, and generates a professional QuickBooks invoice with duplicate prevention and error logging.

Step-by-Step Guide

1. **Create Scenario**: Log into Make.com, click '+ Create a new scenario', and name it 'Sheets to QBO Invoice Sync'. 2. **Google Sheets Trigger**: Add the 'Watch Rows' module. Select your Spreadsheet and Sheet Name. Set 'Limit' to 10 to manage operation usage per run. 3. **Set Filter**: Click the link between the first and second module. Set the condition to `Status (Column)` 'Equal to' `Ready` to ensure only approved items process. 4. **Search Customer**: Add the QuickBooks Online 'Search for Objects' module. Select 'Customer' and search by `Email` from the sheet. This prevents duplicate profiles. 5. **Data Aggregation**: Add the 'Array Aggregator' module. Set the 'Source Module' to the Google Sheets trigger. Under 'Structure', select 'Lines' for the QuickBooks Create Invoice module. Map sheet values (Description, Amount, Qty) to the internal line item fields. 6. **Create QuickBooks Invoice**: Add the 'Create an Invoice' module. Map the `Customer ID` from the Search module and drag the 'Array' output from the Aggregator into the 'Lines' field. 7. **Error Handling**: Right-click the QuickBooks module and select 'Add error handler'. Use the 'Break' directive to store the execution for manual review if the API fails (e.g., due to a closed accounting period). 8. **Update Status**: Add a final Google Sheets 'Update a Row' module. Map the `Row ID` from the trigger and set the `Status` column to `Synced` and add the `Invoice ID` for traceability.