Mindket

Rent payments checked against bank CSVs and a local workbook

Newversion 1 · updated

Overview

An n8n workflow that watches a folder for bank statement CSVs. An AI agent checks each one against tenants and properties in a local Excel workbook, then writes alerts to a sheet of the same workbook.

Rent payments checked against bank CSVs and a local workbook 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
  • Your own n8n server: the same file, with the folder mounted into n8n’s container if you use Docker
  • OpenAI: the model that reads the statement and calls the lookups
  • An Excel workbook: the tenants, the properties and the alerts
  • n8n Cloud: not suitable, because it cannot reach your folders

Platform

Connects 1 app

How it works

Trigger

CSV file added to a folder

It starts when a CSV file is added to the watched folder:

  • The folder’s path, set in Watch For Bank Statements
  • The workbook’s path, set in Set Variables
  • A bank statement CSV with date, reference, money in and money out

Actions

  1. The CSV is read and each row becomes an item
  2. An AI agent gets the statement as a table and looks up tenants and properties in the workbook
  3. It returns alerts for missed or wrong rent, tenancies ending soon and unpaid final fees
  4. A Code node saves a backup and adds one row per alert to the alerts sheet

Result

New rows on the alerts sheet of the workbook, one for each problem the agent found

Integrations

What you need before you start.

OpenAI

Language model

Reads the statement, calls the two workbook lookups and returns the alerts as JSON.

NeedsAn OpenAI API key

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
7 steps, starting on its trigger node
AI
1 step calls an AI model: Reconcile Rental Payments
Sign-ins
Signs in to: OpenAI
API keys
No API key is left in the file
Step types
Mindket’s checker reads 6 of its 7 step types. It does not read: Local File Trigger

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

About

What it is

This n8n workflow checks rent against bank statements. It watches a folder for CSV files and gives each statement to an AI agent, which looks up tenants and properties in a local Excel workbook. It flags missed or wrong rent, tenancies that end soon and unpaid final fees. The alerts go to a sheet of the same workbook. Eleven nodes run it, beside six sticky notes.

Who it suits

Small landlords and property managers who run their own n8n and keep tenant records in a spreadsheet. Skip it on n8n Cloud, which cannot see your folders, and skip it if you cannot send statement rows to OpenAI.

Who uses it, and how
IndustryWho uses itHow they use itExample
PropertyLandlordsCheck a month of rent against the tenant listA landlord drops in a statement and sees which tenants paid late or short.
LettingLetting agentsReview many tenancies in one passAn agent runs the statements of a block of flats and reads the alerts.
AccountingBookkeepersFlag rent exceptions for a clientA bookkeeper gets a list of tenants whose payment is missing.
HousingHousing teamsTrack final fees at the end of a tenancyA team sees a leaving tenant who still owes a fee.

You need some n8n and a little spreadsheet work: allow two things in n8n, make a workbook, add one credential and drop in a CSV.

Where to use it

Only a self-hosted n8n, since the trigger and the workbook code work on the files of the machine that runs n8n. The reasoning comes from OpenAI’s cloud.

  • Your own n8n server: the same file, with the folder mounted into n8n’s container if you use Docker
  • OpenAI: the model that reads the statement and calls the lookups
  • An Excel workbook: the tenants, the properties and the alerts
  • n8n Cloud: not suitable, because it cannot reach your folders

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Setup takes one credential, two paths and a workbook with three sheets.

What you need first
NeedDetail
n8nA self-hosted n8n with Local File Trigger allowed and the xlsx module available to code
FolderA folder n8n can reach, with a backup of everything in it
Workbookreconciliation-workbook.xlsx with the sheets tenants, properties and alerts
StatementsCSV files with date, reference, money_in and money_out in the first row
OpenAIAn API key
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an OpenAI credential and select it in OpenAI Chat Model.
  3. In Watch For Bank Statements, set the folder’s path as n8n sees it.
  4. In Set Variables, set the workbook’s path.
  5. Save, then press Publish.
  6. Drop a statement CSV into the folder and wait for the run to finish.

How to use it

Drop a bank statement CSV into the watched folder. After a moment new rows appear on the alerts sheet of the workbook. Test on a copy of your files first.

What to change for a different result
To changeWhere
What counts as a problemThe system message of Reconcile Rental Payments
The modelOpenAI Chat Model
The watched folderWatch For Bank Statements
The details the agent seesThe sheets tenants and properties

Example

A landlord has twelve tenants in the workbook and drops in March’s statement. One tenant paid short and another has not paid at all.

The agent looks both tenants up, compares the rent due with the statement rows and returns two alerts. Two new rows appear on the alerts sheet, and the earlier state of the workbook is saved as a .bak.xlsx copy.

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. Here one box reads the CSV, an agent compares it with your tenant list and a Code node writes the alerts. Try it first on a made up statement and a workbook with two tenants.

For experts. The agent has two Code Tool nodes that read the workbook with SheetJS, and a structured output parser fixes the shape of the alerts. A final Code node appends rows and saves a backup.

Where to look closer
NodeWhat it doesWhat to know
Get Tenant DetailsLooks tenants up by name or ID in the tenants sheetIt calls require('xlsx'), so the module must be allowed
Get Property DetailsLooks properties up by ID in the properties sheetIt reads the workbook path from Set Variables
Reconcile Rental PaymentsCompares the statement with the records and answers in JSONThe statement goes in as a Markdown table
Append To SpreadsheetAdds one row per alert to the alerts sheetIt saves a .bak.xlsx copy first, always under the same name

Good to know

This workflow rewrites your workbook and sends financial records to OpenAI, so test it on copies and check every alert.

  • The repair: OpenAI’s deprecations page, read on 12 November 2026, gives 14 January 2027 as the shutdown date of the gpt-4o snapshots. This copy names gpt-5.6-terra, because OpenAI’s page for gpt-6-luna limits function calling on Chat Completions
  • Two small fixes: the agent’s instructions now ask for action_required, which the parser and the Code node use, and the workbook name is spelled reconciliation-workbook.xlsx
  • Node settings: n8n’s 2.0 breaking changes, read on 12 November 2026, list LocalFileTrigger as disabled by default, and NODES_EXCLUDE brings it back
  • Modules: n8n’s documentation says external modules need NODE_FUNCTION_ALLOW_EXTERNAL, and the variable goes on the task runners when you use them
  • Half written files: the trigger’s wait for a finished write is off, so a large CSV may be read early
  • The backup: it keeps one name, so it holds only the state before the latest run
  • Judgement: the agent decides what is wrong, and a person should check the alerts
  • Your data: the statement rows and the tenant and property records the agent asks for go to OpenAI
  • Credentials: the JSON holds none

README and files

README

Rent payments checked against bank CSVs and a local workbook

An n8n workflow that watches a folder for bank statement CSV files. An AI agent checks each statement against tenants and
properties kept in a local Excel workbook. It flags missed or wrong rent, tenancies that end soon and unpaid final fees, and
it writes the alerts to a sheet of the same workbook. It needs a self-hosted n8n.

What is inside

  • workflow.json: the workflow as n8n exports it, seventeen nodes: eleven that do the work and six sticky notes. It holds
    no credential.
  • README.md: these notes.

What we changed from the original copy

  • The credential link on OpenAI Chat Model is gone. Select your own.
  • The model was gpt-4o. OpenAI's deprecations page, read on 12 November 2026, gives 14 January 2027 as the shutdown date of
    the gpt-4o snapshots and names gpt-6-luna. OpenAI's page for that model says Chat Completions supports function
    calling only with reasoning effort set to none, and this agent calls tools, so the node now names gpt-5.6-terra.
  • The agent's instructions asked for a field named action required, with a space. The output parser and the last Code
    node use action_required, so the instructions now say that.
  • The workbook name was spelled reconcilation-workbook.xlsx. It is reconciliation-workbook.xlsx now.
  • The notes are rewritten as short notes about each step.
  • Nothing else.

Before you start

  • A self-hosted n8n. The trigger and the workbook code use the files of the machine that runs n8n.
  • The Local File Trigger node enabled. n8n's 2.0 breaking changes, read on 12 November 2026, list it as disabled by
    default, and removing it from NODES_EXCLUDE brings it back.
  • The xlsx module available to code. The Code node and both code tools call require('xlsx'). n8n's documentation says external
    modules need NODE_FUNCTION_ALLOW_EXTERNAL, and that the variable goes on the task
    runners when you use them.
  • A folder that n8n can reach. The file uses /home/node/host_mount/reconciliation_project, a path in a Docker setup.
  • A workbook named reconciliation-workbook.xlsx in that folder, with three sheets.
  • tenants needs the columns Tenant ID and Tenant Name, plus the terms, rent amount and notes you want the agent to see.
  • properties needs Property ID, plus the address, postcode and type.
  • alerts needs a header row, and the workflow appends below it.
  • Bank statement CSV files with the columns date, reference, money_in and money_out in the first row.
  • An OpenAI API key.
  • A backup of the workbook. The workflow rewrites it.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an OpenAI credential and select it in OpenAI Chat Model.
  3. In Watch For Bank Statements, set the folder's path as n8n sees it.
  4. In Set Variables, set the workbook's path.
  5. Save, then press Publish.
  6. Drop a statement CSV into the folder and wait for the run to finish.

How a run goes

  1. Watch For Bank Statements fires when a file is added. Its ignore pattern, !**/*.csv, is meant to skip everything that
    is not a CSV.
  2. Set Variables keeps the workbook's path.
  3. Get Bank Statement File reads the CSV and Get CSV Data turns each row into an item.
  4. Reconcile Rental Payments is an AI agent. It gets the statement as a table, and it can call Get Tenant Details and
    Get Property Details, two code tools that read the workbook.
  5. The agent answers with a list of alerts, and Structured Output Parser holds it to one shape.
  6. Alert Actions To List makes one item per alert, and Append To Spreadsheet adds one row each to the alerts sheet.

Change the look

  • What counts as a problem: the system message of Reconcile Rental Payments.
  • The model: OpenAI Chat Model.
  • The watched folder: Watch For Bank Statements.
  • Which columns the agent sees about a tenant or a property: the sheets themselves, since the tools return whole rows.

Good to know

  • This workflow changes your workbook. Append To Spreadsheet saves a copy first, next to the workbook with .bak.xlsx added
    to its name. The same name is used each time, so the copy holds only the state before the latest run.
  • The trigger does not wait for a file to finish writing, because its option for that is off by default. A large CSV may be
    read half written.
  • The agent decides what is wrong. Check its alerts before you act on them.
  • A long statement goes into the prompt in full and can pass the model's limits.
  • The statement rows and the tenant and property records the agent asks for go to OpenAI.
  • The JSON holds no credential.
Files
NOTICE.md  678 B
README.md  5 KB
workflow.json  13 KB

3 files, 19 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