Mindket

Gmail payment rails audit written to a Google Sheet

Newversion 1 · updated

Overview

An n8n workflow that searches your Gmail once for receipts from seven payment rails, such as PayPal, Apple, Google Play and Klarna. It reads each amount and card ending and writes one row per message to a Google Sheet, with no AI.

Gmail payment rails audit written to a Google Sheet is an n8n workflow in the Finance & accounting category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file and run it by hand
  • Your own n8n server: the same file and steps
  • Google Sheets: one tab called rails, which can start empty

Platform

Connects 2 apps

How it works

Trigger

Manual run

It starts when you choose Execute workflow, with one setting to check first:

  • The date to search from, written as YYYY/MM/DD

Actions

  1. Runs seven Gmail searches at once, one each for PayPal, Apple, Google Play, Google Pay, Stripe or Paddle, SEPA and Klarna
  2. Waits until every search has finished, even one with no result
  3. Reads the amount, the currency and the last four card digits from each message’s subject and snippet
  4. Marks each message VERIFIED when it has an amount and UNCERTAIN when it has none
  5. Appends one row for each message to a tab of your Google Sheet

Result

A Google Sheet that lists every receipt and payment notice by payment rail, with its amount, currency, card ending and evidence

Integrations

What you need before you start.

Gmail

Mail source

Runs seven read-only searches and returns each message’s subject, sender, date and snippet.

NeedsA Gmail OAuth2 credential

Google Sheets

Spreadsheet

Appends one row for each message.

NeedsA Google Sheets OAuth2 credential and a tab called rails

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
12 steps, starting by hand
AI
No step calls an AI model
Sign-ins
Signs in to: Gmail and Google Sheets
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 6 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow shows how your money leaves your inbox. You run it by hand. It sets a start date and runs seven Gmail searches at once, one for each payment rail: PayPal, Apple, Google Play, Google Pay, Stripe or Paddle, SEPA direct debit and Klarna. A Code step reads the amount, the currency and the last four card digits from each message and marks it verified or uncertain. Each message becomes a row in a Google Sheet. It uses no AI, downloads no attachment and changes nothing in your mailbox. Twelve nodes run it, beside four sticky notes.

Who it suits

Freelancers and small business owners who pay for tools through several rails and want to see them side by side before they cancel anything. Skip it if you need exact totals. It only reads a message’s subject and snippet.

Who uses it, and how
IndustryWho uses itHow they use itExample
FreelanceSolo professionalsFind every subscription across PayPal, Apple and GoogleA designer sorts the sheet by rail and spots two forgotten plans.
Small businessOwnersReview the tools a business pays for before the year endsAn owner checks which rail pays for the software stack.
SoftwareIndie developersSeparate store fees from tool costsA developer checks the Stripe and Paddle rows next to the Google Play rows.
Personal financeHouseholdsReview direct debits and card-linked paymentsA household lists its SEPA and Klarna messages in one place.

You need to know n8n’s settings: import a file, add two credentials, set a date and name a sheet.

Where to use it

Any n8n that can reach Gmail and Google Sheets will run it.

  • n8n Cloud: import the file and run it by hand
  • Your own n8n server: the same file and steps
  • Google Sheets: one tab called rails, which can start empty

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Setup is two credentials, one sheet id and a date.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
GmailAn OAuth2 credential for the mailbox to search
Google SheetsAn OAuth2 credential and a sheet with a tab called rails
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add a Gmail credential and select it in the seven nodes whose names start with Gmail.
  3. Add a Google Sheets credential and select it in Append sheet. Replace <YOUR_SHEET_ID> with your sheet’s id.
  4. In Set window, set WINDOW_AFTER to the date to search from, written as YYYY/MM/DD.
  5. Choose Execute workflow and open your sheet.

How to use it

Run it once and read the rails tab. Sort by rail, then read the evidence column before you cancel anything. Run it again later with a new start date.

What to change for a different result
To changeWhere
The start dateWINDOW_AFTER in Set window
What each rail searches forThe q search in each Gmail node
How many messages each rail returnsThe limit in each Gmail node
What counts as evidenceThe code in Classify rails

Example

Your PayPal search finds a receipt for a monthly tool.

rail: PayPal | amount: € 12,50 | currency: EUR | last4: 4242 | evidence: VERIFIED

The row also holds the subject as the merchant, the date of the message, the sender and a short snippet. A Google Pay “card added” notice gets the evidence UNCERTAIN, because it is not a charge.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one searches, waits for every search, labels each message and writes rows. Run it once with a short date range to see the columns.

For experts. Seven searches feed one Merge node with seven inputs, and one Code step does the reading.

Where to look closer
NodeWhat it doesWhat to know
Gmail PayPal and six moreSearch one rail eachEach has the limit 200 and always passes an item on
Wait for all railsMerge with seven inputsIt waits for every search, even an empty one
Classify railsBuilds one row per messageIt reads Subject, From and internalDate
Append sheetAppends the rowsAppend Row, because an empty tab has no column to match on

Good to know

The sheet shows what Gmail knows, which is not the same as your bank statement.

  • Fixes: the original asked for 200 messages with an option the Gmail node lacks, so it returned 50. It also read lowercase keys that the simplified output does not use, and it used a sheet operation that needs a matching column. This copy repairs all three
  • Window: the start date 2025/08/01 was meant as about 13 months and now covers about 15, so set your own
  • Language: the search words are English and Dutch, so change them to the words your senders use
  • Amounts: found only in the subject or snippet, in euros or dollars, and never converted
  • Repeat runs: each run adds the rows again, so clear the tab first
  • Blind spots: rent, health and phone plans often send no email
  • Not run: Mindket did not run it against Gmail or Google Sheets
  • Credentials: the JSON holds none

README and files

README

Gmail payment rails audit written to a Google Sheet

An n8n workflow that maps how money leaves your inbox. In one run it searches your Gmail for receipts and payment notices
from seven payment rails: PayPal, Apple, Google Play, Google Pay, Stripe or Paddle, SEPA direct debit and Klarna. A Code
step reads the amount and the last four card digits from each message and marks it as verified or uncertain. Every message
becomes a row in a Google Sheet. It uses no AI model, downloads no attachment and changes nothing in your mailbox.

What is inside

  • workflow.json: the workflow as n8n exports it, sixteen nodes. Four are sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • The seven Gmail nodes asked for 200 messages with an option called maxResults, which the Gmail node does not have. With
    no limit set, the node returns 50. Each node now has the limit 200.
  • Classify rails read the keys subject, from and date. The simplified Gmail output names them Subject and
    From, and gives the date as internalDate in milliseconds. The code now reads both spellings and turns the
    milliseconds into a date, so the merchant, sender and last charge columns are filled.
  • Append sheet used Append or Update Row, which needs a column to match on and stops without one. It now uses Append
    Row, which is what the sticky notes describe.
  • The sheet id, which was the placeholder REPLACE_SHEET_ID, is now <YOUR_SHEET_ID>. The credential ids, which were
    REPLACE, are gone.
  • The main sticky note has a shorter title, and its setup lines no longer mention REPLACE.

Before you start

  • A Gmail account you can connect to n8n with OAuth2.
  • A Google account for a Google Sheets OAuth2 credential, and a Google Sheet with a tab called rails. The tab can be
    empty: n8n writes the column names from the first run.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add a Gmail OAuth2 credential and select it in the seven nodes whose names start with Gmail.
  3. Add a Google Sheets OAuth2 credential and select it in Append sheet. Replace <YOUR_SHEET_ID> with your sheet's id,
    the part of its address between /d/ and /edit.
  4. Open Set window and set WINDOW_AFTER to the date you want to search from, written as YYYY/MM/DD.
  5. Choose Execute workflow and open your sheet.
  6. Read the evidence column before you cancel anything.

How a run goes

  1. When clicking ‘Execute workflow’ starts the run, and Set window holds the start date.
  2. Seven Gmail nodes search in parallel, each for one rail. A rail's search combines the sender or the subject with words
    such as receipt, invoice, payment, abonnement or incasso. Each returns up to its limit, and none downloads an
    attachment. A search with no result still passes an empty item on.
  3. Wait for all rails is a Merge node with seven inputs. It waits for every search to finish.
  4. Classify rails skips the empty items and builds one row for each message. A row holds the rail, the merchant (the
    subject), the amount, the currency, the date, the last four card digits, the evidence, a note, the sender and a snippet.
  5. Append sheet adds the rows to the rails tab.

Change the result

  • The rails and their search words: the q search in each Gmail node. Add a Gmail node and a line in the rails list in
    Classify rails for a new rail, and raise the inputs of Wait for all rails.
  • The start date: WINDOW_AFTER in Set window.
  • How many messages each rail returns: the limit in each Gmail node, at most 500.
  • What counts as evidence: the code in Classify rails.

Good to know

  • The start date 2025/08/01 in the original copy was meant as a window of about 13 months. On 12 November 2026 it covers
    about 15. Set it to the date you want.
  • The search words are English and Dutch, as in the original copy. Change them to the words your senders use.
  • An amount is found only when it appears in the subject or in the snippet, in euros or dollars. Nothing is converted.
  • A message is marked VERIFIED when it has an amount and UNCERTAIN when it has none. A "card added" notice is never a
    charge.
  • Each run adds the rows again. Running it twice doubles them, so clear the tab or change the start date first.
  • Household direct debits, such as rent or a phone plan, often send no email. A missing row is not proof that there is
    no payment.
  • The workflow reads only the metadata and the snippet of each message. It writes no label and sends no mail.
  • Mindket did not run this workflow against Gmail or Google Sheets. These notes follow n8n's published node code, read on
    12 November 2026, and the Code step was run on sample messages on a local computer.
Files
NOTICE.md  618 B
README.md  5 KB
workflow.json  15 KB

3 files, 20 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

anaksor-ocr

Sokheng · Kit

Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

New

Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…

New

ACE-Step 1.5 XL SFT

ACE-Step · Kit

Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…

New

Similar in Finance & accounting

See all in Finance & accounting

Kronos-mini

NeoQuasar · Kit

Forecasts financial candlestick series with a 4.1M-parameter foundation model trained on data from over 45 exchanges. For quant researchers and developers who…

New