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…
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.
Manual run
It starts when you choose Execute workflow, with one setting to check first:
A Google Sheet that lists every receipt and payment notice by payment rail, with its amount, currency, card ending and evidence
What you need before you start.
Mail source
Runs seven read-only searches and returns each message’s subject, sender, date and snippet.
NeedsA Gmail OAuth2 credential
Spreadsheet
Appends one row for each message.
NeedsA Google Sheets OAuth2 credential and a tab called rails
Checked by Mindket on 13 Nov 2026
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.
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.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Freelance | Solo professionals | Find every subscription across PayPal, Apple and Google | A designer sorts the sheet by rail and spots two forgotten plans. |
| Small business | Owners | Review the tools a business pays for before the year ends | An owner checks which rail pays for the software stack. |
| Software | Indie developers | Separate store fees from tool costs | A developer checks the Stripe and Paddle rows next to the Google Play rows. |
| Personal finance | Households | Review direct debits and card-linked payments | A 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.
Any n8n that can reach Gmail and Google Sheets will run it.
rails, which can start emptyDownload 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.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Gmail | An OAuth2 credential for the mailbox to search |
| Google Sheets | An OAuth2 credential and a sheet with a tab called rails |
workflow.json.Gmail.Append sheet. Replace <YOUR_SHEET_ID> with your sheet’s id.Set window, set WINDOW_AFTER to the date to search from, written as YYYY/MM/DD.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.
| To change | Where |
|---|---|
| The start date | WINDOW_AFTER in Set window |
| What each rail searches for | The q search in each Gmail node |
| How many messages each rail returns | The limit in each Gmail node |
| What counts as evidence | The code in Classify rails |
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.
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.
| Node | What it does | What to know |
|---|---|---|
Gmail PayPal and six more | Search one rail each | Each has the limit 200 and always passes an item on |
Wait for all rails | Merge with seven inputs | It waits for every search, even an empty one |
Classify rails | Builds one row per message | It reads Subject, From and internalDate |
Append sheet | Appends the rows | Append Row, because an empty tab has no column to match on |
The sheet shows what Gmail knows, which is not the same as your bank statement.
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.
workflow.json: the workflow as n8n exports it, sixteen nodes. Four are sticky notes. It holds no credential.README.md: these notes.maxResults, which the Gmail node does not have. WithClassify rails read the keys subject, from and date. The simplified Gmail output names them Subject andFrom, and gives the date as internalDate in milliseconds. The code now reads both spellings and turns theAppend sheet used Append or Update Row, which needs a column to match on and stops without one. It now uses AppendREPLACE_SHEET_ID, is now <YOUR_SHEET_ID>. The credential ids, which wereREPLACE, are gone.REPLACE.rails. The tab can beworkflow.json.Gmail.Append sheet. Replace <YOUR_SHEET_ID> with your sheet's id,/d/ and /edit.Set window and set WINDOW_AFTER to the date you want to search from, written as YYYY/MM/DD.evidence column before you cancel anything.When clicking ‘Execute workflow’ starts the run, and Set window holds the start date.Wait for all rails is a Merge node with seven inputs. It waits for every search to finish.Classify rails skips the empty items and builds one row for each message. A row holds the rail, the merchant (theAppend sheet adds the rows to the rails tab.q search in each Gmail node. Add a Gmail node and a line in the rails list inClassify rails for a new rail, and raise the inputs of Wait for all rails.WINDOW_AFTER in Set window.Classify rails.2025/08/01 in the original copy was meant as a window of about 13 months. On 12 November 2026 it coversNOTICE.md 618 B README.md 5 KB workflow.json 15 KB
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…
Qwen · Kit
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…
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…
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…
An n8n workflow that sends a Hebrew WhatsApp reminder for an unpaid invoice 7, 14 and 30 days after its due date. It reads the open invoices from a Google Shee…
An n8n workflow that files invoices. It watches a Google Drive folder, has LlamaParse read each new file and an OpenAI model pick out the line items. Airtable…