I live in Barcelona and keep a Capital One account back in the US. When I buy groceries at Veritas, the transaction shows up as "VERITAS 4231 BARCELONA." When I stock up at Trader Joe's during a trip home, it's "TRADER JOE'S #123." Both are groceries. But the merchant names, the currencies, and the banks are all different.
Now multiply that across every category, restaurants, transit, subscriptions, utilities, in two countries, two languages, two currencies. Categorizing transactions by hand gets old fast. After a few weeks, you stop doing it. And once you stop, your budget goes dark.
This was one of the first problems I wanted to solve when building Borderless Budget. Not just "auto-categorize transactions" in the generic sense that every budgeting app claims to do, but do it well across currencies, across countries, across banks that describe the same purchase in completely different ways.
Here's how it actually works under the hood.
The two-tier pipeline: your rules first, then AI
When a new transaction comes in from any of your connected bank accounts, it goes through a two-step categorization process. The order matters.
First tier: your rules. These are custom rules you create. Each rule says "if the transaction description contains this text, put it in this category." Rules are case-insensitive, so "veritas" matches "VERITAS 4231 BARCELONA" just fine. Rules are also priority-ordered, if two rules could match the same transaction, the one you ranked higher wins.
Rules can also flag transactions as recurring. If you create a rule for your gym membership ("DIR FITNESS"), it can automatically mark every matching transaction as a recurring expense. That's useful for tracking subscriptions across countries, your Netflix charge in USD and your gym in EUR both get flagged without you doing anything each month.
Second tier: AI. Any transaction that doesn't match a rule gets passed to AI categorization. The AI uses context from the transaction to figure out what category it belongs in. It processes transactions in batches for speed and returns a confidence score for each one.
Why this order? Because your rules are deterministic. If you've told the system "VERITAS = Groceries," that's always right. There's no confidence score to worry about, no model to second-guess. The AI handles everything else, the long tail of transactions where you haven't set up a rule yet.
Your categories, not ours
Most budgeting apps categorize transactions against a fixed list. "Food & Drink." "Transportation." "Shopping." These are fine for someone who lives in one country, but they break down when your financial life spans borders. Where does "RENFE" (the Spanish train system) go? What about "MUTUA MADRILENA" (Spanish health insurance)?
Borderless Budget starts you with sensible default categories, but you can customize them however you want. Add "Spanish Healthcare." Rename "Transportation" to "Transit & Travel." Create a "US Obligations" category for your student loans and storage unit back home. The categories are yours.
Here's why that matters for categorization: the AI doesn't work from a fixed list. It works from your categories, defaults plus whatever you've added or changed. So if you create a "Coworking" category because you're a freelancer who hops between spaces in different cities, the AI will start sorting your coworking charges into it. The more specific your categories, the more accurate the AI gets, because it has better options to choose from.
The correction loop
No categorization system is perfect out of the gate. The first week, you'll probably need to fix a few things. Maybe the AI put your CaixaBank account fee in "Other" when it should be in "Bank Fees." Maybe it categorized "EL CORTE INGLES" as "Shopping" when you were buying groceries in their supermarket.
When you manually re-categorize a transaction, two things happen.
First, that correction is permanent. We mark the transaction's source as "manual," and it's never re-categorized by rules or AI again. Your decision is final.
Second, you can create a rule directly from that correction. Fixed "EL CORTE INGLES SUPERMERCADO" from Shopping to Groceries? One click and you've created a rule: any future transaction containing "EL CORTE INGLES SUPERMERCADO" goes straight to Groceries, no AI needed.
This creates a feedback loop. Every correction you make can become a rule. Every rule means one fewer transaction the AI needs to handle. Over time, your rules cover more and more of your regular spending, and the AI only deals with genuinely new merchants. The goal being that after a month or two, corrections are rare.
Nothing slips through
Sometimes transactions arrive at odd times, a bank connection syncs late, or a pending charge finally clears. A background process catches anything that slipped through initial categorization and runs it through the same two-tier pipeline. So even if a transaction shows up at 3 AM, it'll be categorized by the time you check your budget in the morning.
This matters more than you'd think when you have accounts in multiple time zones. My Banc Sabadell transactions tend to post during European business hours. My Capital One transactions post on US time. The system handles both without me thinking about it.
One category, many currencies
Here's where it gets interesting for multi-currency budgets. A single category e.g., "Groceries", can hold transactions in EUR, USD, GBP, or any other currency. Your Mercadona run in euros and your Trader Joe's trip in dollars both land in the same place.
When you look at your budget, category totals are converted to your home currency using daily exchange rates. So if your home currency is USD, your Groceries total for March might include EUR 287.50 from Mercadona runs and $143.20 from Trader Joe's, all displayed as one dollar amount. The conversion uses the exchange rate from the day each transaction occurred, not a monthly average, not yesterday's rate.
This is a big deal because it means you don't need separate "EUR Groceries" and "USD Groceries" categories. That approach is what you're forced into with most budgeting apps, and it makes it impossible to answer a simple question: "How much did I spend on groceries this month?" With Borderless Budget, the answer is one number.
Why this approach beats a fixed model
Some budgeting apps use a single categorization model trained on millions of transactions. That works well for common US merchants, Starbucks, Amazon, Walmart. It falls apart when half your transactions are from CaixaBank, Bizum transfers, or a local bar in the Gothic Quarter that your bank describes as "TPV COMPRA EN BAR OVISO."
Our approach is different because of two things:
Your rules handle the predictable. You know your own spending. You know that "BIZUM" is a transfer, that "MUTUA" is insurance, that "BONAREA" is groceries. Once you've told the system, it never forgets.
The AI handles the unpredictable. New restaurant? One-time purchase at a store you've never been to? The AI categorizes it using context from the transaction and your existing categories. It won't be right 100% of the time, but it's right often enough that you only need to fix the occasional edge case.
And every fix feeds back into the system.
What this means in practice
Let me walk through a typical month. I have a Banc Sabadell account (EUR) and a Capital One account (USD). Here's what happens:
Transactions sync from both banks. My rules immediately catch the recurring stuff, rent, gym, internet, Spotify, phone plans in both countries. That's probably 15-20 transactions handled instantly, no AI involved.
The AI picks up everything else, restaurants, groceries, one-off purchases, ATM withdrawals. It categorizes them using my custom categories. Most of them are right.
I check my budget a couple times a week. If something's miscategorized, I fix it. If it's a merchant I'll see again, I create a rule. By the end of the month, I have a complete picture of my spending, across both currencies, in one view, without maintaining a spreadsheet or doing mental math about what category "TPV COMPRA" belongs in.
The first month takes a bit of setup. By the second month, most of your regular spending is covered by rules, and the system mostly runs itself.
Try it yourself
Borderless Budget launches in mid 2026. We're building it for people who live across borders and are tired of budgeting tools that assume everyone lives in one country with one bank account.
If you want to be among the first to try it, join the waitlist.
Related reading: