See llms.txt for all machine-readable content.

Back to Templates

Check vendor statements against a Google Sheets ledger and email a summary

Quick overview

A monthly accounts-payable check: upload a supplier's statement and each invoice on it is matched to your Google Sheets ledger by invoice number and amount. Every invoice gets one of four results, written to a Reconciliation tab and emailed to you.

How it works

  1. An n8n form asks for the vendor name, the period (optional) and the statement file (.csv or .xlsx).
  2. The Settings node holds the only values you edit: spreadsheet id, tab names, column names, date order, CSV delimiter and the summary email address.
  3. The workflow reads your Ledger tab and the uploaded file. CSV and Excel each go to their own reader; any other file type gets a plain-English error page.
  4. Both sides are normalised: columns are matched by name, invoice numbers like INV-000123, inv 123 and INV/123 become one, and both 1,240.00 and 1.240,00 are read. Several lines for one invoice are added up.
  5. Compare Datasets matches on invoice number and amount. Each invoice gets one result: matched, amount differs, missing from your ledger, or not on the statement, with a short "what to do" note.
  6. One row per invoice is written to the Reconciliation tab (append or update on RowKey, so a re-run corrects rows instead of duplicating them), and a summary is emailed through Gmail and shown on the form's last page.

Setup

  1. In your spreadsheet, create a Ledger tab (Vendor, Invoice Number, Invoice Date, Amount, Currency, Status) and a Reconciliation tab (RowKey, Run Date, Period, Vendor, Invoice Number, Result, Ledger Amount, Statement Amount, Difference, What To Do, Notes).
  2. Connect Google Sheets with edit access to that spreadsheet, and connect Gmail (or delete the Email The Summary node).
  3. In the Settings node, fill in ledgerSheetId (the long id in the sheet URL, between /d/ and /edit) and notifyEmail.
  4. Activate the workflow, open the form URL (path: /vendor-statement-check), upload a statement and check the Reconciliation tab.

Requirements

  • n8n 2.45 or newer (tested on 2.45.6) with a Google Sheets spreadsheet you can edit
  • Gmail for the summary email (optional). No AI model, no API key, no paid service

Customization

  • US dates: set dateOrder to mdy. European CSV exports: set statementDelimiter to ;
  • Other column names: every header name in Settings is a comma-separated list of alternatives, so add yours there
  • Slack instead of email: add a Slack node after Build The Digest; to start a payment run, filter Result = MATCHED in a later workflow

Additional info

One statement and one currency per run; amounts are compared exactly to the cent. Lines with no invoice number or an unreadable amount are never dropped: they are written as UNREADABLE LINE with the reason. Nothing is sent outside your n8n instance and your own Google account.