Not tax advice. Computation tools only. Have a professional check your work before filing.
OpenAccountants/Skills/Global Router

Global Router

Universal entry point for OpenAccountants — the open-source accounting skill set covering 10 domains: tax, bookkeeping, e-invoicing, payroll, company formation, financial statements, transfer pricing, tax optimization, cross-border, and platform integrations. Detects the user's jurisdiction, busi…

GLOBALTax year 2025· Last reviewed Apr 13, 2026

Key facts — GLOBAL, 2025

SignalExampleJurisdiction
Country name"I'm in Germany"DE
City name"I live in London"GB
State/province"California", "Ontario"US-CA, CA-ON
Tax system mention"Self Assessment", "TA24"GB, MT
Tax form mention"Schedule C", "Modelo 303", "GSTR-3B"US, ES, IN
Tax authority mention"HMRC", "ATO", "SAT", "IRAS"GB, AU, MX, SG
Currency context"earning in GBP", "invoicing in EUR"GB, EU
Language + contextGerman text + tax questionDE

Use these rules in your AI

Connect once and your AI follows Global Router automatically — it stays current when a rate changes, and hands you to a licensed accountant when you need one. A copied file goes stale the day the law moves.

Use this in your AI

Want a licensed accountant to check your AI-generated return?

Get reviewed

Are you a GLOBAL accountant? Sign off these rules and put your name on them.

These rules are research-verified. They need a licensed practitioner for GLOBAL to confirm them and become their named verifier. Reviewing reference rules — not signing returns.

Apply to verify GLOBAL

About

Universal entry point for OpenAccountants — the open-source accounting skill set covering 10 domains: tax, bookkeeping, e-invoicing, payroll, company formation, financial statements, transfer pricing, tax optimization, cross-border, and platform integrations. Detects the user's jurisdiction, business type, and domain, then routes to the correct country-specific skills. Handles freelancers, contractors, consultants, sole traders, e-commerce sellers, side hustlers, gig workers, content creators, landlords, small companies, employers, and any self-employed individual. ALWAYS load this skill as the default entry point. Trigger on any mention of: taxes, tax return, filing, payroll, payslip, salary, company formation, incorporate, register a business, annual accounts, financial statements, transfer pricing, tax optimization, save tax, e-invoicing, CFDI, FatturaPA, KSeF, Peppol, bookkeeping, chart of accounts, P&L, balance sheet, cross-border, two countries, moved abroad, Stripe, Xero, QuickBooks, VAT, GST, income tax, self-employment, business tax, or accounting.

GLOBALTax year 2025

Full guide

Global Router v1.0

What this file is

This is the universal entry point for OpenAccountants. Every user interaction starts here.

The router does five things:

  1. Figure out where the user is (jurisdiction)
  2. Figure out what they need (domain + business type)
  3. Check refusal rules (narrow — most things are in scope now)
  4. Route to the right skill(s) for their jurisdiction and domain
  5. Hand off with structured context

The user never sees this skill. They just talk naturally. The router works silently.


Step 0: Detect jurisdiction

From the user's message, extract location using these signals (check in order):

SignalExampleJurisdiction
Country name"I'm in Germany"DE
City name"I live in London"GB
State/province"California", "Ontario"US-CA, CA-ON
Tax system mention"Self Assessment", "TA24"GB, MT
Tax form mention"Schedule C", "Modelo 303", "GSTR-3B"US, ES, IN
Tax authority mention"HMRC", "ATO", "SAT", "IRAS"GB, AU, MX, SG
Currency context"earning in GBP", "invoicing in EUR"GB, EU
Language + contextGerman text + tax questionDE

City → jurisdiction mapping

CitiesJurisdiction
New York, NYC, Manhattan, Brooklyn, Queens, BronxUS-NY
Los Angeles, San Francisco, San Diego, Sacramento, San JoseUS-CA
Houston, Dallas, Austin, San Antonio, Fort WorthUS-TX
Miami, Orlando, Tampa, Jacksonville, Fort LauderdaleUS-FL
Chicago, Springfield IL, NapervilleUS-IL
Seattle, Tacoma, Bellevue, SpokaneUS-WA
Philadelphia, Pittsburgh, AllentownUS-PA
Phoenix, Tucson, Scottsdale, MesaUS-AZ
Atlanta, Savannah, AugustaUS-GA
Denver, Colorado Springs, BoulderUS-CO
Boston, Cambridge, WorcesterUS-MA
Detroit, Grand Rapids, Ann ArborUS-MI
Minneapolis, St. Paul, Rochester MNUS-MN
Portland OR, Eugene, Salem ORUS-OR
Las Vegas, Reno, HendersonUS-NV
Nashville, Memphis, Knoxville, ChattanoogaUS-TN
Charlotte, Raleigh, Durham, AshevilleUS-NC
Columbus OH, Cleveland, CincinnatiUS-OH
Indianapolis, Fort WayneUS-IN
Baltimore, Annapolis, BethesdaUS-MD
Washington DC, Georgetown, Arlington VAUS-DC
Salt Lake City, Provo, Park CityUS-UT
Richmond, Virginia Beach, NorfolkUS-VA
New Orleans, Baton RougeUS-LA
Kansas City MO, St. LouisUS-MO
Milwaukee, Madison WIUS-WI
Honolulu, MauiUS-HI
Anchorage, Fairbanks, JuneauUS-AK
London, Manchester, Birmingham, Edinburgh, Glasgow, Bristol, LeedsGB
Berlin, Munich, Hamburg, Frankfurt, Cologne, Stuttgart, DüsseldorfDE
Paris, Lyon, Marseille, Toulouse, Nice, BordeauxFR
Milan, Rome, Florence, Turin, Naples, BolognaIT
Madrid, Barcelona, Valencia, Seville, Malaga, BilbaoES
Amsterdam, Rotterdam, The Hague, Utrecht, EindhovenNL
Lisbon, Porto, Faro, BragaPT
Dublin, Cork, Galway, LimerickIE
Valletta, Sliema, St Julian's, Birkirkara, MostaMT
Sydney, Melbourne, Brisbane, Perth, Adelaide, CanberraAU
Auckland, Wellington, Christchurch, HamiltonNZ
Toronto, Vancouver, Montreal, Calgary, OttawaCA
Mumbai, Bangalore, Delhi, Hyderabad, Chennai, Pune, KolkataIN
Tokyo, Osaka, Nagoya, FukuokaJP
SingaporeSG
Seoul, BusanKR
Dubai, Abu Dhabi, SharjahAE
São Paulo, Rio de Janeiro, Brasília, Belo HorizonteBR
Mexico City, Guadalajara, MonterreyMX
Riyadh, Jeddah, DammamSA
Nairobi, MombasaKE
Lagos, AbujaNG
Johannesburg, Cape Town, DurbanZA

If jurisdiction is unclear

Ask ONE question:

"Where are you based? I need your country (and state/province if US, Canada, or Australia) to load the right rules."

Do not proceed until jurisdiction is confirmed.


Step 1: Detect what the user needs

A. Domain detection

Identify which of the 10 accounting domains the user needs. A single query may trigger multiple domains (see section C below).

SignalDomainRoute to
"tax return", "file taxes", "income tax", "VAT", "GST", "annual return", "estimated tax", "deductions"TaxCountry tax skills
"bookkeeping", "classify transactions", "chart of accounts", "P&L", "balance sheet", "trial balance", "categorize expenses", "reconcile"BookkeepingCountry bookkeeping skill + bookkeeping-workflow-base
"invoice", "e-invoice", "CFDI", "FatturaPA", "KSeF", "Peppol", "invoice compliance", "LIPE", "SII", "MyInvois"E-invoicingCountry einvoice skill + einvoice-workflow-base
"payroll", "payslip", "salary", "wages", "PAYE", "withholding", "employer", "hire", "employee", "staff", "NIC employer"PayrollCountry payroll skill + payroll-workflow-base
"set up a company", "register a business", "incorporate", "LLC", "Ltd", "GmbH", "formation", "articles of association"Company formationCountry formation skill + company-formation-workflow-base
"annual accounts", "financial statements", "year-end", "balance sheet filing", "Companies House", "statutory accounts"Financial statementsCountry financial-statements skill + financial-statements-workflow-base
"transfer pricing", "intercompany", "arm's length", "CbCR", "related party", "TP documentation"Transfer pricingCountry transfer-pricing skill + transfer-pricing-workflow-base
"save tax", "reduce tax", "optimize", "deductions I'm missing", "tax planning", "restructure"Tax optimizationCountry tax-optimization skill
"two countries", "cross-border", "moved abroad", "foreign clients", "treaty", "relocated", "digital nomad"Cross-bordercross-border-workflow-base + relevant country skills
"crypto", "bitcoin", "ethereum", "staking", "mining", "NFT", "DeFi", "airdrop", "token", "Coinbase", "Binance", "Form 8949", "digital assets"Crypto taxCountry crypto-tax skill + crypto-tax-workflow-base
"Stripe export", "Xero", "QuickBooks", "PayPal download", "bank CSV", "Wise", "Revolut", "Shopify", "FreeAgent", "Sage"Platform integrationRelevant integration skill from _integrations/

B. Business type detection

SignalBusiness typeIn scope?
"freelancer", "contractor", "independent contractor"Self-employedYes
"self-employed", "sole trader", "sole proprietor"Self-employedYes
"consultant", "consulting", "advisory"Self-employedYes
"e-commerce", "online store", "Shopify", "Etsy", "Amazon seller"Self-employed sellerYes
"content creator", "YouTuber", "influencer", "streamer"Self-employedYes
"gig worker", "Uber", "Deliveroo", "DoorDash", "Fiverr", "Upwork"Self-employedYes
"side hustle", "side business", "moonlighting"Employed + self-employedYes — handle both income streams
"tutor", "music teacher", "personal trainer", "photographer"Self-employedYes
"artist", "writer", "musician", "designer", "developer"Self-employedYes
"doctor", "lawyer", "architect", "accountant" (solo practice)Self-employed professionalYes — check jurisdiction for special regimes
"LLC", "single-member LLC", "SMLLC"Disregarded entity (US)Yes
"Einzelunternehmen", "Freiberufler", "Gewerbetreibender"Self-employed (DE)Yes
"autónomo"Self-employed (ES)Yes
"auto-entrepreneur", "micro-entrepreneur"Self-employed (FR)Yes
"zzp'er", "zelfstandige"Self-employed (NL)Yes
"partita IVA"Self-employed (IT)Yes
"landlord", "rental property", "property investor"Property investorYes — route to property-investor vertical
"employees", "staff", "payroll", "hiring"EmployerYes — route to payroll skills
"limited company", "Ltd", "GmbH", "SL", "SARL", "Srl"Small companyYes for formation, bookkeeping, financial statements, payroll, e-invoicing. Refuse only for corporate tax returns
"partnership", "LLP", "OHG", "SNC"PartnershipRefuse for partnership tax returns. Yes for formation advice, bookkeeping, payroll
"S-corp", "C-corp", "AG", "SA"CorporateRefuse for corporate tax returns
"I'm a developer", "software engineer"Industry verticalYes — load freelance-developer vertical
"e-commerce", "online shop"Industry verticalYes — load ecommerce-seller vertical
"content creator", "YouTuber", "influencer"Industry verticalYes — load content-creator vertical
"doctor", "medical", "healthcare practice"Industry verticalYes — load medical-professional vertical
"consultant", "advisory", "professional services"Industry verticalYes — load consultant-professional vertical

C. Multi-domain detection

Users often need multiple domains at once. When you detect overlapping needs, load ALL relevant skills simultaneously.

User saysDomains to load
"I want to start a business"Formation + bookkeeping + tax overview
"I have employees" / "I'm hiring"Payroll + bookkeeping
"End of year" / "year-end"Financial statements + tax + bookkeeping
"I invoice clients in other countries"E-invoicing + cross-border VAT
"How do I pay less tax?" / "tax planning"Tax optimization + relevant country tax skill
"I moved abroad" / "I live in X but work for Y"Cross-border + tax skills for both countries
"I need to set up payroll for my new company"Formation + payroll
"Annual accounts and tax return"Financial statements + tax
"I sell on Shopify to customers in the EU"E-invoicing + cross-border VAT + ecommerce-seller vertical + shopify-integration
"I have crypto / Bitcoin / staking rewards"Crypto tax + country tax skill (gains affect total income)
"I mine crypto as a side business"Crypto tax + bookkeeping + tax (business income)

D. Side hustle / dual income detection

If the user mentions BOTH employment AND self-employment:

  • "I have a day job but also freelance on the side"
  • "I'm employed at [company] but have a side business"
  • "I get a W-2/P60/Lohnsteuerbescheinigung AND 1099/invoices"

This is IN SCOPE. Handle the self-employment income using the normal skills. Flag for the reviewer that employment income exists and affects:

  • Tax bracket (total income determines marginal rate)
  • Social contributions (may already be covered by employer — check jurisdiction)
  • Estimated tax (PAYE/withholding from employment may cover most of the liability)

Step 2: Handle refusals

Hard refusals (any jurisdiction)

TriggerRefusalWhy
Partnership TAX RETURNS (multi-member LLC, LLP)RefuseDifferent forms, allocation rules, K-1 complexity
Corporate TAX RETURNS (Ltd, GmbH, S-corp, C-corp)RefuseCorporate tax is fundamentally different
Large corporate groups with complex structuresRefuseConsolidation, group relief, multi-entity tax — specialist territory
Day trading with hundreds of leveraged positions dailyRefuseRequires real-time portfolio tracking beyond skill scope
Multi-country split-year residencyRefuseTax treaties, allocation, dual residency — specialist
Amended returns / audit defenseRefuseRequires review of original return and correspondence
Trust / estate incomeRefuseFiduciary rules, different forms
Listed / public company complianceRefuseSEC/FCA reporting, IFRS audit, board governance — specialist

What is NOT a refusal (previously refused, now in scope)

TriggerAction
Employees / staff / payroll / hiringIN SCOPE — route to payroll skills
Limited company (Ltd, GmbH) asking about formationIN SCOPE — route to formation skills
Limited company asking about bookkeepingIN SCOPE — route to bookkeeping skills
Limited company asking about financial statementsIN SCOPE — route to financial statements skills
Limited company asking about payrollIN SCOPE — route to payroll skills
Rental property (any level of activity)IN SCOPE — route to property-investor vertical
Small company with simple structureIN SCOPE for all domains except corporate tax returns

Soft flags (in scope but needs attention)

TriggerAction
Crypto holdings (trading or investment)IN SCOPE — load country crypto-tax skill + crypto-tax-workflow-base
Foreign income / clients abroadLoad cross-border skills, flag for reviewer
Multiple businesses / tradesHandle each separately, flag for reviewer
First year in businessFlag — may qualify for special reliefs (ACRE, tarifa plana, startersaftrek)
Partnership asking about formation or bookkeepingIn scope for those domains — refuse only tax return preparation

Refusal message template

"I can help with [list of available domains] for your situation. However, [specific reason] is outside what I cover — you'd need a [local practitioner type] who specialises in [area]. Visit openaccountants.com to find one.

Is there anything else I can help with?"


Step 3: Route to jurisdiction

End-to-end jurisdictions (full intake → assembly → output)

JurisdictionIntake skillWhat it covers
US — Californiaus-ca-freelance-intakeFederal 1040 + CA 540 + Form 568
US — New Yorkus-ny-freelance-intakeFederal 1040 + NY IT-201 + NYC UBT
US — Texasus-tx-freelance-intakeFederal 1040 + TX franchise tax
Maltamt-freelance-intakeTA24 + VAT + SSC + provisional tax
UKuk-freelance-intakeSA100 + SA103 + NIC + VAT + student loan
Germanyde-freelance-intakeESt + UStVA + SV + GewSt
Australiaau-freelance-intakeITR + BAS + super + Medicare
Canadaca-freelance-intakeT1 + T2125 + GST/HST + CPP/EI
Indiain-freelance-intakeITR-3/4 + GST + advance tax
Spaines-freelance-intakeIRPF + IVA + RETA + Modelo 130
Francefr-freelance-intakeIR + TVA + URSSAF
Netherlandsnl-freelance-intakeIB + BTW + ZZP deductions
Japanjp-freelance-intakeShotoku-zei + consumption tax
Mexicomx-freelance-intakeISR + IVA + CFDI
Brazilbr-freelance-intakeIRPF + INSS + Simples

For these: Hand off directly to the intake skill. User gets the full experience.

US states — all 50 states + DC have tax skills

Every US state has a dedicated folder under packages/us-[code]/ containing income tax, sales tax, bookkeeping, and specialty tax skills. When a US user is detected:

  1. Always load the federal skills: skills/foundation/us-tax-workflow-base.md + all of skills/federal/ + us-federal-return-assembly.md
  2. Then load the state folder. Find the user's state by two-letter code and load ALL .md files from packages/us-[code]/.
  3. If the user is in California, New York, or Texas, ALSO load the full intake and assembly skills.
State codeState folderIncome tax?Sales tax?Specialty
AL–WYpackages/us-[code]/42 states + DC have income tax skills45 states have sales tax skillsWA: B&O, TX: franchise, OH: CAT, DE: gross receipts, NV: commerce, NY: NYC UBT

No income tax states (load sales/specialty skills only): AK, FL, NV, NH, SD, TN, TX, WA, WY

No sales tax states (load income tax only): DE, MT, NH, OR (Alaska has local-only sales tax)

See skills/us-states/README.md for the full coverage matrix.

Domain-specific routing

Not every country has skills for every domain. Here is the current coverage:

DomainCountries with skillsCount
Tax133+ countries (consumption tax); 15 countries with full guided intake133+
BookkeepingAU, BE, CA, DE, ES, FR, GB, IT, JP, MT, NL, PT, SE + all US states13
E-invoicingBE, BR, DE, ES, FR, GR, HU, IN, IT, MX, MY, PL, PT, RO, SA15
PayrollAU, BE, BR, CA, DE, ES, FR, GB, ID, IN, IT, JP, MT, NL, PT, SE16
Company formationAU, CA, DE, ES, FR, GB, IN, IT, JP, MT, NL, PT, SG13
Financial statementsAU, BE, CA, DE, ES, FR, GB, IN, IT, JP, MT, NL, PT13
Transfer pricingAU, BR, CA, DE, ES, FR, GB, IN, IT, JP, MX, MT, NL, SG, ZA15
Tax optimizationAU, CA, DE, ES, FR, GB, IN, IT, JP, MT, NL, PT, SG13
Crypto taxAU, BE, BR, CA, CH, DE, ES, FR, GB, IL, IN, IT, JP, KR, MT, MX, NL, NZ, PT, SE, SG, US22

When a domain skill exists for the user's country, load both the country-specific skill AND the foundation workflow base for that domain.

When a domain skill doesn't exist for the user's country:

"I have [available domains] skills for [country] but not [requested domain] yet. Want me to help with what I have, or would you like general guidance based on the universal workflow?"

130+ countries with consumption tax skills only

"I can help you classify transactions and prepare your [VAT/GST/sales tax] return for [country]. I don't cover [requested domain] for [country] yet. Want me to help with what I have?"

Countries with nothing

"I don't have skills for [country] yet. We're building them — visit openaccountants.com if you'd like to help. In the meantime, I'd recommend a local [practitioner type]."


Step 4: Handoff

When routing to a jurisdiction skill, pass:

{
  "jurisdiction": "[detected]",
  "domain": "[detected — tax, bookkeeping, payroll, formation, financial_statements, einvoicing, transfer_pricing, tax_optimization, cross_border, integration]",
  "business_type": "[detected — e.g., sole_trader, contractor, e-commerce, side_hustle, small_company, employer]",
  "tax_obligation": "[detected — e.g., full_return, vat_only, income_tax_only, estimation]",
  "user_message": "[original message]",
  "documents_attached": true/false,
  "language": "[detected]",
  "dual_income": true/false,
  "first_year": true/false,
  "industry_vertical": "[detected — e.g., freelance_developer, ecommerce_seller, content_creator, medical_professional, property_investor, consultant]",
  "integration": "[detected — e.g., stripe, xero, quickbooks, shopify, wise, paypal]",
  "multi_domain": true/false,
  "domains_detected": ["[list of all detected domains]"]
}

When routing directly to a content skill (no intake available), explain:

"I'm loading the [skill name] skill. I'll need some information from you to get started — the skill will guide you through what's needed."


Step 5: Special packages routing

Three special package directories contain cross-cutting skills that augment country-specific routing.

PackageWhen to loadContents
_cross-border/User mentions 2+ countries, foreign clients, relocation, digital nomad, treaty, withholding on foreign income22 skills: treaty defaults, PE risk, withholding matrix, EU reverse charge, OSS, VAT place of supply, forex controls, payroll coordination, corridors (EU, US, UK, APAC, Americas, emerging markets)
_verticals/User mentions a specific industry or professionfreelance-developer, ecommerce-seller, content-creator, medical-professional, consultant-professional, property-investor
_integrations/User mentions specific software or platformstripe, xero, quickbooks, paypal, wise, revolut-business, shopify, amazon-seller, freeagent, sage

Load these in addition to the country-specific domain skills, not instead of them.


Step 6: Language handling

Respond in the user's language. If the user writes in:

  • German → respond in German, use German tax terms (Steuererklärung, Einnahmenüberschussrechnung)
  • Spanish → respond in Spanish (declaración de la renta, autónomo)
  • French → respond in French (déclaration de revenus, travailleur indépendant)
  • Italian → respond in Italian (dichiarazione dei redditi, partita IVA)
  • Portuguese → respond in Portuguese (declaração de IRS, trabalhador independente)
  • Dutch → respond in Dutch (belastingaangifte, zzp'er)
  • Japanese → respond in Japanese (確定申告, 個人事業主)
  • English → respond in English

Tax forms and legal terms should always use the local-language name (e.g., "Modelo 303" not "Form 303").


PROHIBITIONS

  • NEVER guess a jurisdiction — ask if unclear
  • NEVER route to a skill that doesn't exist
  • NEVER claim you can do something you can't — be honest about availability
  • NEVER refuse a side hustler — employed + self-employed is in scope
  • NEVER refuse based on profession — doctors, lawyers, architects are in scope if self-employed
  • NEVER refuse e-commerce sellers — they use the same tax forms as any sole trader
  • NEVER respond in English if the user wrote in another language (unless they switch to English)
  • NEVER refuse a small company asking about formation, bookkeeping, or financial statements
  • NEVER load only tax skills when the user clearly needs a different domain
  • NEVER ignore industry context — if they say they're a developer, load the freelance-developer vertical
  • NEVER refuse payroll queries — payroll is a fully supported domain
  • NEVER refuse employer queries — route to payroll skills
  • NEVER refuse rental property / landlord queries — route to property-investor vertical

Disclaimer

This skill and its outputs are provided for informational and computational purposes only and do not constitute tax, legal, or financial advice. Open Accountants and its contributors accept no liability for any errors, omissions, or outcomes arising from the use of this skill. All outputs must be reviewed and signed off by a qualified professional (such as a CPA, EA, tax attorney, or equivalent licensed practitioner in your jurisdiction) before filing or acting upon.

The most up-to-date, verified version of this skill is maintained at openaccountants.com. Log in to access the latest version, request a professional review from a licensed accountant, and track updates as tax law changes.


<!-- openaccountants-cta-block -->

Talk to a verified accountant

This skill is a tool, not an engagement. Every taxpayer's situation is different, and the rules in the skill may not match your specific facts.

To speak with one of the licensed accountants who verifies skills for your jurisdiction — no liability on either side until you and the accountant sign a formal engagement letter — book a free 30-minute call:

Book a call

We'll route you to the named verifier covering your country or state. You can also see the full list of verified accountants at openaccountants.com/network.

More GLOBAL tax skills

Other GLOBAL computations in the OpenAccountants library.

See all GLOBAL skills →

34 of 59 in the GLOBAL workflow: