Skip to content
agents/en vrai

Catch a double charge from your emailed receipts

Whenever a payment receipt lands in Gmail, the agent pulls out the merchant and amount, logs it in a spreadsheet and alerts you if the same amount from the same merchant shows up twice within 48 hours.

L3 autonomousVerified sourceBased on official documentation we checked; not tested by us yet.Updated
Difficulty
Intermediate
Setup time
≈ 1 h 30 (estimate)
Estimated cost
n8n: €0 self-hosted or from €20/month (Starter, billed annually); Gemini API: free tier with limits, then pay as you go; Slack: free plan available
Category
Personal productivity

⏱ Trigger

New receipt email in Gmail (Gmail trigger, checked every minute)

✋ Human approval

The agent never touches a payment: it only flags. You check your statement and contact the merchant or your bank.

→ Output

Payment log in Google Sheets + Slack alert for possible duplicates

Autonomy level 3 — Autonomous: Runs end to end on its own; only low-risk actions (read, notify, archive).

01Connected tools

02What the agent does on its own

  1. step 01

    Fires on every new email matching your Gmail search (for example "receipt").

  2. step 02

    Fetches the full message and has Gemini extract merchant, amount, currency, date, reference and transaction type.

  3. step 03

    Keeps only successful charges with all required fields, then normalises merchant, amount and timestamps.

  4. step 04

    Checks recent transactions in the sheet: same merchant, same amount and same currency within 48 hours flags a possible duplicate.

  5. step 05

    Appends the transaction to Google Sheets, posts a Slack alert for a possible duplicate and labels the email as processed.

03Agent instructions

$ instructions.txt · replace the {VARIABLES}
> Here is an email from {SENDER}: "{BODY}". If it confirms a successful payment, return JSON {"merchant":"…","amount":0.00,"currency":"EUR","date":"YYYY-MM-DDTHH:MM","reference":"…","type":"charge|refund|other"}. If something is missing, use null instead of guessing.

04Limits and legal points

The agent only sees payments that come with an emailed receipt: a direct debit with no receipt slips through, so this is not a bank reconciliation. Two identical, legitimate purchases (two tickets, two coffees) will also trigger an alert: it's a signal, not proof. Tune the 48-hour window to your habits. On the Gemini API free tier, Google says data may be used to improve its products: for receipts, prefer the paid tier or send less. To get alerts by email or Telegram instead of Slack, swap the last step.

05In short

When does the agent run, and what does it produce?
Trigger: New receipt email in Gmail (Gmail trigger, checked every minute). Output: Payment log in Google Sheets + Slack alert for possible duplicates.
What stays under your control?
The agent never touches a payment: it only flags. You check your statement and contact the merchant or your bank. Autonomy level 3 — Autonomous: Runs end to end on its own; only low-risk actions (read, notify, archive).
How much does it cost and how long does setup take?
Estimated cost: n8n: €0 self-hosted or from €20/month (Starter, billed annually); Gemini API: free tier with limits, then pay as you go; Slack: free plan available. Setup time: ≈ 1 h 30 (estimate), difficulty "intermediate". Tools: n8n – Gmail Trigger, n8n – Google Gemini, n8n – Google Sheets, n8n – Slack, n8n – Gmail.

Answers taken from this recipe · updated 22 October 2026

06Source

https://n8n.io/workflows/20859-detect-duplicate-payment-charges-from-gmail-using-gemini-google-sheets-and-slack/

07Related recipes

Same category or same connected tools.

All recipes in "Personal productivity" →

→ weekly newsletter

3 agents en vrai.
Every week.

Three reproducible, sourced autonomous agents. No hype, no "top 100 tools". One-click unsubscribe.