I'm not very good at managing finances and often lose track of how much I've spent throughout the month, usually ending up counting pennies by the end. I've tried a lot of expense trackers to sort out this mess, and while they worked, I never felt comfortable giving them access to my emails and messages.
A better solution seemed to be creating my own expense tracker using n8n. I recently started experimenting with the platform, and it's fairly easy to use. I certainly didn’t think building an expense tracker from scratch would be this simple.
Related
I automated my home with Home Assistant and Node-RED, and it was so worth it
Node-RED is an upgrade, flow-style option to create nifty automations without overloading the Home Assistant
A not-so-complex expense tracker
Nothing too fancy
I didn’t build a fully automated expense tracker that goes through my messages and emails to log expenses automatically. That kind of tracker doesn’t really serve my needs. See, with automated trackers, you're not able to track how much hard cash you spent and where it went. They only track withdrawals, and if you’re someone like me who still keeps cash handy, you’ll need to manually enter your spends. Plus, building a fully automated tracker would add extra complexity, and I’ll admit, I’m not entirely confident I could pull it off.
Another issue with most trackers is that they don’t clearly categorize what the money was spent on, whether it was food, groceries, travel, bills, or something else. That’s because the messages and emails you receive about transactions often don’t include that level of detail.
Instead, I decided to build a tracker that gets triggered by a text message. I just send the automation a message with the expense details, something like "create an expense: shopping, 15 USD, 28 Jan 25", and it gets automatically added to a Google Sheet. I have the flexibility to add expenses in different formats since the automation uses an AI model to analyze the text and input it into the database.
This setup strikes a nice balance between automation and manual control. I don’t need to go through a complicated UI or sign in to yet another app. I just shoot a quick message to n8n, and it gets logged. The AI parser I used helps extract the date, amount, and category from natural language, which means I don’t have to stick to one fixed format. Whether I say “coffee, 3 USD, today” or “bought groceries; 25.5 usd; 29 May 2025”, it works.
Over time, I might add categories, build graphs, or even set up monthly spend summaries. But for now, it’s already helping me stay on top of my spending way more consistently than before.
How I set it up
The whole process didn’t take more than an hour
To begin with, I created a Google Sheet to store all my expenses. It only has three columns: description, amount, and date. I liked keeping it simple because it made reviewing everything easier. Every new entry will appear as a new row on this sheet.
In n8n, I started by creating a workflow that gets triggered when I send a chat message. The message flows into an AI Agent node, which uses OpenAI’s chat model to understand what I typed. I also connected it to a small memory node so the AI could keep track of short conversations, though this part is not essential.
The most important tool connected to the AI Agent is a sub-workflow. This tool parses the message and saves the expense data into my Google Sheet. When I send something like "coffee; 120 INR; 29 May 2025," the AI passes it to this sub-workflow for processing.
Inside the sub-workflow, it all starts with a Workflow Input Trigger node. That node receives the message and uses another OpenAI model to convert the message into structured data. The output is a neat little JSON object with fields like description, cost, and date.
Once the parsing is done, the data flows into the final node that saves it to Google Sheets. This node writes a new row using the extracted values. It directly updates the same sheet I created earlier in the setup.
The only part that required a bit of attention was making sure the AI Agent knew which sub-workflow to call. Inside the agent node, there's a dropdown where you have to select the correct workflow. If you forget to set that, nothing works correctly and the data won't be passed along.
The expense tracker didn’t cost me a penny
Almost

The expense tracker didn’t cost me anything. n8n is free to use if you self-host it, which I did using Docker. The Google Sheets API is available for free (within a limit), and you can easily enable it by creating a Google Cloud account. The only potential cost is the OpenAI API. I tried creating the same workflow using an API key from OpenAI’s free tier, but kept getting the message, “You exceeded your current quota. Please check your plan and billing details.” I tried it again using an API key from the Plus tier, and it worked.
You don’t have to stick to OpenAI, of course. Any decent LLM can do the job. n8n supports most of them, whether it’s Google Gemini, Claude, or even DeepSeek. Even X’s Grok is pretty handy, plus it comes with $25 worth of credits, which roll out each month.
Automation is fun
I am fairly new to automation, but it’s pretty fun. You can automate a lot of repetitive tasks, both at work and in your personal life. Apps like IFTTT let you automate things you might not even think are possible. While you're at it, give alternatives like Hugging Face a try.
Related
These 5 Home Assistant automations make my day without extra hardware
You can craft different automation in Home Assistant without needing any hardware and brighten up your day