Inspiration
Banking apps tell you what you spent. We wanted one that helps you decide what to spend. Mobile banking is full of forms and confirmation taps. AI assistants exist, but they either fake the banking part or skip the safety nets. We wanted to build the version that does both - natural language and live API access - without taking control away from the user.
What it does
bunqY is a banking app you talk to. Ask the AI assistant about your accounts by voice or chat, send money between accounts, pay an external invoice you just photographed, or invest in crypto - all through natural language. Every money-moving action passes through an AI reviewer that checks it against your real bunq balance, your spending patterns, and your category limits before a single euro moves.
Core capabilities:
- Live AI chat (text + voice) that reads accounts, executes commands, moves money, and explains spending
- Receipt Scanner - OCR + auto-categorization, attaches the receipt as a real document on the bunq transaction
- Invoice Scanner - extracts the IBAN and pays the bill directly through bunq
- AI Insights - overspending detection across categories
- Three-way approval logic - approve / soft-reject / hard-reject with a manual review queue
- AI Review System with user feedback so the agent's calls trend toward each user's preferences
- Upcoming subscription alerts that warn you before a charge if your balance won't cover it
Every balance, transaction, and payment is real bunq sandbox activity, verifiable in the official bunq sandbox app moments after using bunqY.
How we built it
React (TypeScript) frontend deployed on Cloudflare Pages. n8n orchestrates the AI workflows: a LangChain agent runs on Google Gemini 2.5 Flash via OpenRouter, with tools for reading accounts, listing transactions, moving money, and creating new transactions. Receipts go through Google Cloud Vision for OCR and a follow-up LLM for categorization. Voice commands run through OpenAI Whisper for transcription and an LLM for intent extraction.
A Python FastAPI service (the bunq client) handles the bunq sandbox integration end-to-end: RSA keypair generation, the three-step installation/device-server/ session handshake, automatic session refresh, and clean REST endpoints that n8n proxies to. Every "money-moving" branch in our n8n workflow calls into this service after the AI agent has approved the action.
Challenges we ran into
The bunq RSA handshake - every API call beyond installation requires either a session token or a request signed with the client's private key. We vendored the bunq hackathon toolkit's BunqClient to skip that pain. Sandbox quirks like sugardaddy@bunq.com only auto-accepting on certain account types took a while to map out.
Designing the AI gate took several iterations. We started with Draft Payments (every action requires accepting on the bunq mobile app), then switched to direct payments after deciding the AI agent's review WAS the human-in-the-loop. The soft-rejection queue - where the AI is unsure, the user gets a one-tap override - made the flow feel responsible without blocking every transaction on a phone.
Removing data tables in favor of bunq as the source of truth meant rewiring how soft-rejected transactions persist (they live only in localStorage now, since they don't yet exist anywhere on the bank side).
Accomplishments that we're proud of
- Every transaction in the demo is a real bunq sandbox payment - no mocking.
- The AI gate works in three modes (approve / soft-reject / hard-reject) and explains its reasoning every time.
- Receipts uploaded through the scanner are attached to the actual bunq payment as a native document, visible in the bunq mobile app.
- The chat agent calls into bunq through the same service the UI uses, so natural-language commands and explicit UI actions produce identical results.
What we learned
PSD2 patterns are real and worth respecting - Draft Payments aren't friction, they're a feature when the third party is an AI. We also learned how cleanly n8n separates orchestration from business logic, which let our AI prompts and our banking calls evolve independently.
What's next for bunqY
- Real-time webhooks from bunq so the UI updates without a refresh
- Card spending limit controls ("cap my card at €100/day for the next week")
- A learning loop where the AI reviewer adjusts category thresholds based on user feedback over time
- Bilingual voice support (EN + NL) for production-realistic Dutch users
Built With
- bunq-api
- cloudflare
- fastapi
- framer-motion
- google-cloud-vision
- google-gemini
- langchain
- n8n
- openai-whisper
- openrouter
- python
- react
- tailwind-css
- typescript
- vite
Log in or sign up for Devpost to join the conversation.