Reconcile Stripe payouts with invoice ledgers in Google Sheets and Gmail

Go to Workflow
0 views
Built by Jessy Mariau Jessy Mariau
Created on September 11, 2026

Description

Quick overview
Stripe pays me in lumps and my invoice sheet lists single amounts, so I built this to do the matching every Monday. It opens each payout and pairs the charges inside it with your invoices. Each line gets a verdict in a report tab. I only read the exceptions.

How it works
A schedule fires every Monday morning, and one Settings node holds everything you would ever change.
The workflow fetches recent paid payouts inside your lookback window.
It opens each payout to list the balance transactions behind it, then reads your invoice ledger once.
My matcher pairs those lines to invoices on a reference first, and falls back to an exact amount inside a date window where there is none.
A tolerance in pence stops a rounding difference from being reported as a fault, and every verdict lands in your report tab beside its payout ID.
When something fails to match and the summary is switched on, a Gmail draft is written for you to read before anyone sends it.

Setup
Import the workflow, then add a Stripe credential. The two HTTP Request nodes use it as a predefined credential type, so there is no key to paste anywhere.
Add a Google Sheets credential and point both sheet nodes at your ledger document.
In Settings, swap every placeholder for your own values, and make sure the column names match your ledger exactly.
Give the report tab the headers listed on the canvas note beside the report node.
I would run it once by hand and read the report before switching the schedule on. Gmail is optional, so add it only if you want the exceptions draft.

Requirements
You need an n8n instance, cloud or self hosted. Stripe read access and a Google account for Sheets cover the rest. Gmail is optional, and I only use it for the summary draft when something failed to match.

Customization
If your invoices live in Airtable or Postgres, swap the Google Sheets nodes and the rest keeps working. I kept the matcher to one Code node with its rules in plain view at the top, so widening the date window or matching on a customer name is a single edit. The summary stays a draft until you change that node on purpose.

Additional info
The download carries a START-HERE guide and a TESTED note that says exactly what I checked before shipping it. The headers your report tab needs are on the canvas note beside the report node.

Nodes Used (4)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest