I was browsing the community archives and saw a closed thread from
The standard native workaround usually involves complex search loops, "Lookup Spreadsheet Rows" modules, and multi-step filters. This can be incredibly fragile and structurally struggles when QBO rejects negative numbers in standard line detail.
I wanted to share a much cleaner, 3-step alternative that uses a webhook and a custom JavaScript payload to reshape the array. This bypasses the native connector entirely and handles both positive and negative lines dynamically.
The Logic:
-
Catch the Google Sheet rows via Webhook.
-
Run a custom JavaScript block to reshape the product objects into the clean nested JSON array QuickBooks expects (routing positive lines to SalesItemLineDetail and negative lines to DiscountLineDetail).
-
Push a single POST request directly to QBO’s /sales/Invoice REST API endpoint.
This eliminates 10+ Zapier steps and prevents the sync from crashing on discounts.
If anyone (or

