Log Stripe Payments from Zapier into a Google Sheets Accounting Ledger
An n8n workflow that receives successful Stripe charges relayed by Zapier, calculates fees and net amount, and appends a clean bookkeeping row to a Google Sheets ledger — giving small businesses a real-time revenue log without paying for accounting software.
- 1
Create the n8n webhook
Add a
Webhooknode (POST) and copy its URL. This receives the charge data Zapier forwards. Send a test charge to confirm the field names Stripe/Zapier provide (amount, currency, customer email, charge ID). - 2
Build the Stripe Zap
In Zapier: trigger
New Charge in Stripe, actionWebhooks by Zapier → POSTto the n8n URL, mapping amount, currency, customer email, description and charge ID. Enable it and every successful charge now flows to n8n. - 3
Compute fees and net
A
Setnode converts the amount from cents to a decimal, computes the Stripe fee (amount * 0.029 + 0.30), and the net (gross - fee). Adjust the fee formula to your real rate, or pass Stripe's actual fee field from Zapier. - 4
Append the ledger row
A
Google Sheetsnode appends date, charge ID, customer email, description, gross, fee and net. Your ledger updates the instant a payment succeeds — a live revenue picture at zero software cost. - 5
Optional monthly total
Add a
SUMformula or a pivot in the sheet to see running monthly revenue and fees. For a push report, a second scheduled n8n flow can total the month and message it to Slack on the 1st.
Frequently asked questions
Why not connect Stripe to n8n directly?
You can, but Stripe's raw webhooks require signature verification and careful event filtering. Zapier's Stripe trigger handles the auth and gives you a clean 'New Charge' event in one click. This recipe lets you lean on that convenience and keep the accounting logic — fee math, categorization — in free n8n.
How are Stripe fees calculated?
Stripe's standard fee in many regions is 2.9% + $0.30 per successful charge. The workflow computes this from the gross amount, but you should confirm your exact rate (it varies by country, card type and plan) and adjust the formula. For exact fees, Zapier can also pass Stripe's `balance_transaction.fee` field directly.
Can it separate refunds and disputes?
Yes — add more Zaps for the 'Refund' and 'Dispute' Stripe triggers pointing at the same n8n webhook with an `event_type` field. An `IF`/`Switch` node in n8n then writes negative rows or a separate tab, keeping your ledger accurate rather than only counting the wins.