Your bank already sends you a notification for every payment. UPI Ingestor reads those emails, extracts the structured data, and keeps a clean searchable record — with automatic categorization and optional publishing to Monarch Money.
Use just the parser, add Telegram for categorization, or wire up Monarch for full expense tracking — each layer works on its own.
Point it at a Gmail label and every UPI debit is automatically extracted, deduplicated, and stored with amount, merchant, timestamp, and bank reference. No manual entry. HDFC supported today — parser registry is open for contributions.
Define rules (regex / contains / equals on merchant name) or just let the app ask. A Telegram inline keyboard prompts you for unknown merchants, and every answer is saved as a permanent mapping — each merchant is only categorized once, ever.
Connect Monarch Money and categorized transactions are automatically pushed via their GraphQL API — no CSV exports, no import steps. Transactions appear in Monarch as soon as they land in your inbox.
A single Vercel function invocation moves data from Gmail to Monarch. No queues, no workers — just a cron and a manual trigger.
Monarch is a personal finance app for tracking net worth, budgets, and transactions. UPI Ingestor feeds your Indian bank transactions in automatically — closing the gap for accounts Monarch doesn't natively support.
Try Monarch free →
Don't use Monarch? The app still works as a standalone parser and dashboard.
See the setup guide to skip the Monarch connection step.
Self-host on Vercel. Data stays in your Supabase project. You control everything.
Clone the repo, run npm install, and copy .env.example to .env.local. Fill in your Supabase URL, anon key, secret key, and encryption key.
Create a Google Cloud project, enable the Gmail API, and authorize via OAuth in the app dashboard. Set a Gmail filter to label UPI emails.
Create a bot via @BotFather, add the token, and send your link code to the bot from the dashboard. Inline keyboards activate for unknown merchants.
Push to GitHub and import in Vercel. Set your environment variables (including SUPABASE_SECRET_KEY for cron). The daily cron is pre-configured in vercel.json.
Need the full service-by-service walkthrough?
Open setup guide →