I freelance from three bases: San Francisco for part of the year, Berlin for a few months, and occasionally Southeast Asia when a project takes me there. My income arrives in USD, EUR, and sometimes GBP. My expenses are in all of those plus Thai baht and Indonesian rupiah.
For two years I either ignored the complexity or handled it badly - rough estimates, incomplete records, quarterly tax stress. Then I built a simple system that actually works.
Here is what it looks like.
Standard expense trackers assume:
- One country
- One currency (usually USD)
- Income from a domestic employer
None of those are true for me.
Bank sync makes it worse. My accounts are at two different banks in two countries. One is a Wise account that receives international transfers. None of these connect cleanly to Plaid.
The solution was to stop trying to connect anything and just log manually.
Tool: DrakeAI for all expense logging. Text input, no bank connection.
What I include in each entry:
- Amount in the local currency I paid
- The currency code (EUR, USD, THB)
- Category
- Country tag (SF, Berlin, Bali)
- Brief note if it is business-related
Example entries:
- "lunch 15 EUR Berlin"
- "coworking space 350 EUR Berlin business"
- "Grab taxi 120 THB Bali"
- "client dinner 140 USD SF business"
I do not convert to a base currency at time of entry. That complexity is unnecessary for budgeting purposes.
At month end I pull a summary filtered by country tag. This tells me my actual cost of living in each place:
- SF: highest total, dominated by housing
- Berlin: mid-range, the coworking space is significant
- Southeast Asia: low, particularly for food and local transport
This comparison is the financial data that helps me make decisions: how long to stay somewhere, where to base myself when project volume is high, whether the rent savings in one place outweigh the lost productivity in another.
Income tracking is separate - a simple spreadsheet with columns for invoice date, client, amount, currency, and payment date.
I use spot exchange rates from XE.com at the time of payment to calculate USD equivalents for tax purposes. This is the number that goes into my tax filing.
The expense tracker handles spending. The spreadsheet handles income. They are separate systems because they serve different purposes.
This is the hard part. I have obligations in the US (citizen, must file regardless of residence) and Germany (resident for part of the year, which triggers German tax obligations above certain income thresholds).
I have a CPA who handles the cross-border complexity. What I give them is:
- My income spreadsheet (by month, by client, by currency)
- My business expense export from DrakeAI (business-tagged expenses, CSV)
- A brief note on which months I was in which country
That is all they need. Clean records, organized by source. The CPA does the actual cross-border calculation.
Starting clean instead of retrofitting. My first year, I tried to sort through 18 months of mixed bank statements with no tagging. It took a full weekend.
If you are starting or about to go multi-country, set up your tracking system before the chaos. Tag expenses by country from day one. Keep business and personal separate. Log at time of purchase.
The habit is what matters. The tool is secondary.
Try DrakeAI free on Android - multi-currency support, no bank sync required. iOS coming soon.
Over 15 years of experience, we have developed more than 200 projects, startups, websites, MVPs. Book a free Zoom call with our CTO to discuss how to bring your project to life 🤙
MVP / Mobile apps / Startups / Websites / Bots / Marketplaces / Crypto projects/ API
15 Years of Expertise in Cutting-Edge Development
At Zavod-IT, we specialize in building startups, cryptocurrency exchanges, cashback platforms, Telegram bots, and advanced software solutions. With over 15 years of experience, we serve clients across the USA and Europe, delivering high-quality, tailored solutions that meet the unique demands of various industries.
Coiner.cab Corp