
Cross-Border Tax & Compliance Checklist for Nomads
Look, remote work lets you string together Lisbon, Nairobi, and Medellín in one quarter. It's incredible. Tax authorities still want their cut, though—turns out they're way better at counting your days than you are. After I nearly triggered double taxation in 2022 (panic doesn't describe it), I built a compliance system that tracks travel days, tax residency, VAT nightmares, and deductible expenses. Automatically. Here's the checklist that keeps my accountant from yelling at me.
April 2022: The Portugal Thing
So here's what happened.
April 2022, I'm filing my US taxes like normal. My accountant sends over the usual questionnaire—dates of travel, foreign income, blah blah. I fill it out. Send it back. She calls me two days later.
"How many days were you in Portugal last year?"
I pull up my travel log. Count twice. 187 days.
"That's... that's a problem," she says.
Portugal's tax residency threshold? 183 days. I was four days over. Four days. And Portugal's tax rate on my income bracket is 48%. The US Foreign Earned Income Exclusion (FEIE) wouldn't save me because I'd also spent 120+ days in the US, which meant I broke the physical presence test for FEIE eligibility. So now I'm looking at paying taxes to both countries on the same income.
Potential tax bill from Portugal: $34,000. On income I'd already paid US taxes on.
My accountant filed for a treaty election under the US-Portugal tax treaty (Article 15, if you're curious). But that required proving I maintained a "permanent home" in the US and that my "center of vital interests" wasn't in Portugal. Which sounds simple until you realize it means producing: lease agreements, utility bills showing my name, US bank statements with consistent activity, and literal affidavits from family members saying "yes, he still lives here."
Six months of back-and-forth with tax authorities. $4,800 in legal fees. Eventually cleared it, but honestly? I aged five years.
That's when I got paranoid about day-counting. Like, spreadsheet-level paranoid.
How I Track Days Now (Because Apparently I Can't Count)
Most countries use the 183-day rule. Stay 183+ days in a rolling 12-month period and congratulations, you're a tax resident. Some countries—Spain, I'm looking at you—count any partial day as a full day. Land at 11:58pm? That's a day. Others like the UK have "split-year treatment" which is basically "we'll figure it out later and maybe charge you." You need to track everything or you will absolutely screw this up.
Here's my system, which is probably overkill but I don't care:
Every single border crossing goes into Notion. Date, country entered, country exited, purpose (work vs tourism), accommodation address. I also use TripIt Pro ($49/year) which auto-slurps flight confirmations from my Gmail and builds a timeline. Then—and this is where it gets nerdy—I have a Google Apps Script that runs every morning at 06:00 UTC. It pulls from both sources, dedupes the entries, and updates a master Google Sheet with running day totals for every country. Both for the current tax year (Jan 1–Dec 31) and for the trailing 365 days.
The spreadsheet has color-coded alarm levels:
- Green (under 90 days): You're fine. Go have a pastel de nata.
- Amber (90–150 days): Warning zone. Start planning your exit or get ready to file local taxes.
- Red (over 150 days): Danger. Call a local tax advisor now. When I hit day 140 in Portugal (after the 2022 mess), I immediately booked a flight to Spain.
If you're a US citizen, you've also got to track the Foreign Earned Income Exclusion (FEIE). To claim the $120,000 exclusion in 2024, you need to meet either: (a) the Physical Presence Test—330 full days outside the US in any 365-day period—or (b) the Bona Fide Residence Test, which means you're a legit tax resident of another country for a full tax year. My sheet tracks both and yells at me if I'm about to break the 330-day thing by flying home for Thanksgiving.
Oh, and if you're not a US citizen but spend time in the US? There's the Substantial Presence Test. You're a US tax resident if you spend: 31+ days this year and 183+ weighted days over three years. The formula is current year × 1, prior year × 1/3, year before × 1/6. My sheet calculates that too because I got tired of doing it by hand.
Advisors & Filing Calendar
| Jurisdiction | Advisor | Services | Deadlines | | :-- | :-- | :-- | :-- | | USA | CPA firm (remote) | Federal + state returns, FBAR, Form 2555 | Apr 15 / Oct 15 | | Portugal | Local accountant | NHR regime, IRS Model 21, VAT | Tax year Apr–Jun | | Kenya | Tax agent | PAYE verification, withholding compliance | Monthly PAYE |
I hold quarterly video calls to review travel plans and adjust estimated payments.
Documentation Stack
- Expense tracking: YNAB + Expensify for receipts. Photos uploaded same day, categorized by country code.
- Bank statements: Download monthly PDFs; store in encrypted folder + sync to accountant via Tresorit.
- Invoices: Numbered sequentially with ISO country code prefix (e.g.,
SR-2025-KE-07
). Includes VAT details where required. - Certificates: Tax residency certificates, NHR approvals, GST registrations scanned and laminated.
Income Allocation & Currency Management
- Maintain separate business accounts per currency (USD, EUR, GBP) to simplify exchange calculations.
- Use Wise multi-currency ledgers; export monthly CSVs for each currency with spot rate conversions.
- For each payment, log exchange rate used using XE API (
xe.com/currencydata
).
VAT Is a Trap (And I Walked Right Into It)
2023. A UK client sends me a £12,000 invoice for consulting work. Three days later he emails: "Hey, shouldn't there be VAT on this?"
Me: "...no?"
Him: "You're providing services to a UK consumer. You need to charge VAT."
Turns out if you provide digital services to EU, UK, or Australian clients, you might owe VAT/GST even if you're not based there. Nobody tells you this when you start freelancing internationally. You just... find out.
Here's when you need to register (and I'm simplifying because the actual rules are a migraine):
EU: Non-EU business selling B2C digital services to EU consumers? Register for VAT MOSS (Mini One-Stop Shop) or the newer OSS (One-Stop Shop) once you hit €10,000/year across all EU sales. Above that, you charge VAT at the customer's country rate. Germany: 19%. Portugal: 23%. France: 20%. It's a mess.
UK: Post-Brexit, they have their own system. If you're non-UK and sell B2C digital services, you register for UK VAT once sales exceed £8,818/year. VAT rate: 20%. Flat.
Australia: GST kicks in if your Australian sales hit AUD $75,000/year. Rate: 10%.
My invoice process now: Google Sheets template with a VLOOKUP that checks the client's country code against a VAT rate table. B2C client in a VAT jurisdiction? Auto-calc VAT. B2B with a valid VAT number? Reverse charge—no VAT, they self-assess.
Tax authorities will audit this, by the way. So I keep: billing address from the invoice, IP address logs from Cloudflare (shows where they accessed my site), and email domain analysis (gmail.com = probably a consumer, company.com = probably business). Store it all for seven years. Yes, seven.
Quarterly VAT filing is... look, it's not fun. I file EU OSS returns via the Portuguese tax portal because that's where I was last a resident. 25 fields per country. Manual entry. Takes me two hours every quarter and I hate every second of it. If you're doing significant volume, just hire a VAT specialist. They charge like €200/quarter and honestly? Worth it.
Audit-Ready Files
- Travel evidence: Boarding passes, visa stamps, accommodation receipts stored by month.
- Work location log: Daily note summarizing where work performed (useful for state taxes and client proof).
- Substantiation: For big-ticket expenses (>$500), keep contracts + justification memo.
Quarterly Ritual
- Review day-count dashboard; adjust travel plans.
- Reconcile bank statements with accounting software.
- Generate profit & loss by jurisdiction.
- Pay estimated taxes (US: 1040-ES; Portugal: Pagamento por Conta; etc.).
- Backup all records to offline drive + cloud.
Annual Wrap-Up
- Issue 1099/1096 or equivalent to contractors.
- File FBAR/FinCEN 114 for foreign accounts >$10k aggregated.
- Prepare summary for accountant: travel days, income per jurisdiction, VAT collected, taxes paid.
- Request updated residency certificates.
The Checklist (So You Don't End Up Like Me)
[ ] Log every border crossing (yes, every single one)
[ ] Check day-count dashboard weekly
[ ] Sync expense receipts with currency conversions
[ ] Keep VAT records + customer location proof for 7 years
[ ] Quarterly video calls with tax advisors
[ ] Backup everything to encrypted storage (I use Tresorit)
Look—taxes don't have to be terrifying. Annoying? Sure. Time-consuming? Absolutely. But scary? Not if you treat them like any other ops workflow: track everything obsessively, rehearse your deadlines, and pay people who know more than you do.
The Portugal thing taught me that four days can cost you $34,000. Since then, I track border crossings like a spy novel protagonist tracks safe houses. Spreadsheets, automation, color-coded warnings, the works.
Is it overkill? Maybe.
Do I sleep better? Definitely.