Nonresident alien's ETF domicile decision table

When selecting an index tracking fund, US nonresident alien investors have a broad choice between US domiciled ETFs and non-US domiciled ETFs. This page summarises the recommended ETF domicile that US nonresident aliens might use, based on their own country of residence and domicile. The goal is for investors to obtain the best tax result.

ETF domicile recommendations table
Find your country of residence and domicile in the table below to help you decide whether US domiciled ETFs or non-US domiciled ETFs are likely to be the best ones for you to use for your own investing.

<!-- The following Python code will generate the wikitable that follows this comment:
 * 1) !/usr/bin/python
 * 2) ... or run online through http://pythonfiddle.com/

INCOME_TAX_TREATY_DATA = ''' Australia 15 10(2)/P6 Austria 15 10(2) Bangladesh 15 10(2) Barbados 15 10(2)/PIII(1) Belgium 15 10(2) Bulgaria 10 10(2) Canada 15 X(2)/5P5(1) China, People's Rep. of 10 9(2) Comm. of Independent States 30 None Cyprus 15 12(2) Czech Republic 15 10(2) Denmark 15 10(2)/PII Egypt 15 11(2) Estonia 15 10(2) Finland 15 10(2)/PIII France 15 10(2)/2P2 Germany 15 10(2)/PIV Greece 30 IX Hungary 15 9(2) Iceland 15 10(2) India 25 10(2) Indonesia 15 11(2)/P1 Ireland 15 10(2) Israel 25 12(2) Italy 15 10(2) Jamaica 15 10(2)/P2 Japan 10 10(2) Kazakhstan 15 10(2) Latvia 15 10(2) Lithuania 15 10(2) Luxembourg 15 10(2) Malta 15 10(2) Mexico 10 10(2) Morocco 15 10(2) Netherlands 15 10(2)/P3(a) New Zealand 15 10(2)/PVI Norway 15 8(2)/P1V(1) Pakistan 30 VII(2)/VI(1) Philippines 25 11(2) Poland 15 11(2) Portugal 15 10(2),(3) Romania 10 10(2) Russia 10 10(2) Slovak Republic 15 10(2) Slovenia 15 10(2) South Africa 15 10(2) South Korea 15 12(2) Spain 15 10(2) Sri Lanka 15 10(2) Sweden 15 10(2)/P1V Switzerland 15 10(2) Thailand 15 10(2) Trinidad & Tobago 30 12(1) Tunisia 20 10(2) Turkey 20 10(2) Ukraine 15 10(2) United Kingdom 15 10(2) Venezuela 15 10(2) Other Countries 30 None'''
 * 1) Source: https://www.irs.gov/pub/irs-utl/Tax_Treaty_Table_1.pdf

ESTATE_TAX_TREATY_DATA = ''' Australia Austria Denmark Finland France Germany Greece Ireland Italy Japan Netherlands Norway South Africa Switzerland United Kingdom '''
 * 1) Source: https://www.irs.gov/businesses/small-businesses-self-employed/estate-gift-tax-treaties-international

ESTATE_TAX_TREATY_DATA += ''' Canada '''
 * 1) Note: Canada effectively has an estate tax treaty, just as part of its US income tax treaty.
 * 2)       The entry for Canada below is added manually after retrieving the above page, which
 * 3)       omits Canada in its list of estate tax treaties.

EU_COUNTRY_DATA = ''' Austria Belgium Bulgaria Croatia Cyprus Czechia Denmark Estonia Finland France Germany Greece Hungary Ireland Italy Latvia Lithuania Luxembourg Malta Netherlands Poland Portugal Romania Slovakia Slovenia Spain Sweden United Kingdom '''
 * 1) Source: https://europa.eu/european-union/about-eu/countries_en

EU_COUNTRY_DATA += ''' Switzerland Norway '''
 * 1) Note: Switzerland is not in the EU, but is treated as if it is for PRIIPs purposes.
 * 2)       And ditto Norway, according to a few blogs.

EU_COUNTRY_DATA += ''' Czech Republic Slovak Republic '''
 * 1) Note: Hacky fix for differences in country names in the US tax treaty and EU lists.

DEFAULT_US_TAX_RATE = 30 IRELAND_US_TREATY_TAX_RATE = 15
 * 1) Source: https://www.irs.gov/pub/irs-utl/Tax_Treaty_Table_1.pdf

def parse_country_data: _lines = lambda data: [line for line in data.split('\n') if line] has_estate_tax_treaty, is_priips, parsed = {}, {}, {} for line in _lines(ESTATE_TAX_TREATY_DATA): country = ' '.join(line.split) has_estate_tax_treaty[country] = True for line in _lines(EU_COUNTRY_DATA): country = ' '.join(line.split) is_priips[country] = True for line in _lines(INCOME_TAX_TREATY_DATA): tokens = line.split country = ' '.join(tokens[0:-2]) if country == 'Other Countries': country = 'ZZZZZ_' + country rate, article = int(tokens[-2]), tokens[-1] parsed[country] = (rate, article,                      country in has_estate_tax_treaty,                       country in is_priips) return parsed
 * 1) Returns: {'country': (tax_rate, 'treaty article',
 * 2)                       has_estate_tax_treaty, is_priips)}

def build_table_data(parsed): table_data = [] for country in sorted(parsed.keys): tax_rate, treaty_article, has_estate_tax_treaty, is_priips = parsed[country] if country.startswith('ZZZZZ_'): country = country[6:] entry = [country, treaty_article, tax_rate] if tax_rate < IRELAND_US_TREATY_TAX_RATE: if is_priips: recommendation = ['Prefer_Limited', 'Accept'] else: recommendation = ['Prefer', 'Avoid'] elif tax_rate > IRELAND_US_TREATY_TAX_RATE: recommendation = ['Avoid', 'Prefer'] else: if is_priips: recommendation = ['Consider_Limited', 'Consider'] else: recommendation = ['Consider', 'Consider'] if has_estate_tax_treaty: entry += ['Yes'] + recommendation + recommendation else: entry += ['No'] + recommendation + ['Avoid', 'Prefer'] table_data.append(entry) return table_data
 * 1) Returns: [['country', 'treaty article', tax_rate, 'Yes/No',
 * 2)            '<$60k_US_ETF_recommendation', '<$60k_nonUS_ETF_recommendation',
 * 3)            '>$60k_US_ETF_recommendation', '>$60k_nonUS_ETF_recommendation'],
 * 4)           ...]

def format_wiki_table(table_data): _color = lambda color, string: 'style="color: ' + color + '" | ' + string def treaty_article_style(article): if article == 'None': return _color('red', article) return article def rate_style(rate): if rate == DEFAULT_US_TAX_RATE: color = 'red' elif rate > IRELAND_US_TREATY_TAX_RATE: color = 'orange' elif rate < IRELAND_US_TREATY_TAX_RATE: color = 'green' else: color = None if color: return _color(color, str(rate) + '%') return str(rate) + '%' def estate_treaty_style(string): _table = {'No': _color('red', 'No'), 'Yes': _color('green', 'Yes')} return _table[string] _background = lambda color, string: 'style="background: ' + color + '" | ' + string def recommendation_style(string): _table = {'Avoid': _background('#f99', 'Avoid'), 'Prefer': _background('#9f9', 'Prefer'), 'Prefer_Limited': _background('#9f9', 'Limited'), 'Consider': _background('#ffff90', 'Consider'), 'Consider_Limited': _background('#ffb', 'Limited'), 'Accept': _background('#ffff90', 'Accept')} return _table[string] table = ['{| class="wikitable sortable"', '|+ ETF domicile recommendations by country of residence and domicile', '|-',          '! scope="col" colspan="4" class="unsortable" |', '! scope="col" colspan="2" class="unsortable" | Holdings below $60,000', '! scope="col" colspan="2" class="unsortable" | Holdings above $60,000', '|-',          '! scope="col" | Country of residence/domicile', '! scope="col" class="unsortable" | Treaty article', '! scope="col" | US dividend tax rate', '! scope="col" | Estate tax treaty?', '! scope="col" class="unsortable" | US domiciled ETFs', '! scope="col" class="unsortable" | Non-US domiciled ETFs', '! scope="col" class="unsortable" | US domiciled ETFs', '! scope="col" class="unsortable" | Non-US domiciled ETFs'] for elements in table_data: table += ['|-'] table += ['! ' + elements[0]] table += ['| ' + treaty_article_style(elements[1])] table += ['| ' + rate_style(elements[2])] table += ['| ' + estate_treaty_style(elements[3])] for element in elements[4:]: table += ['| ' + recommendation_style(element)] table += ['|}'] return table
 * 1) Returns: ['line', ...] in wikitable format

def main: parsed_country_data = parse_country_data table_data = build_table_data(parsed_country_data) wiki_table = format_wiki_table(table_data) for line in wiki_table: print(line)

if __name__ == '__main__': main -->

Recommendations explained
The table above offers recommendations for holdings below $60,000 and above $60,000. This is because for US nonresident aliens domiciled in countries without a US estate tax treaty, US estate taxes begin at a miserly $60,000 of aggregate US situated investments, and rapidly rise to 40% of the balance.

Because of the threat of extortionate US estate taxes, if you live in a country without a US estate tax treaty you should avoid US domiciled ETFs where the balance exceeds $60,000, and strongly prefer non-US domiciled ETFs instead.

Ireland is the most common domicile for non-US domiciled ETFs, although Luxembourg is another popular non-US domicile for ETFs. Of the two, Ireland has the better treatment for dividends from US stocks. ETFs domiciled in Ireland can take advantage of the US/Ireland treaty rate of 15%, but because of a less favourable US treaty ETFs domiciled in Luxembourg suffer 30% tax withholding on dividends from US stocks. In general then, if avoiding US domiciled ETFs you should prefer Ireland domiciled ETFs over Luxembourg domiciled ones unless the ETF itself holds no US stocks.

If your country has a US income tax treaty, and if it also has a US estate tax treaty or where your US ETF holdings balance will always be below $60,000, and if your country's US tax treaty rate is lower than the US/Ireland treaty rate of 15%, you may generally prefer US domiciled ETFs. If however your country's US tax treaty rate is higher than the US/Ireland tax treaty rate, you should prefer Ireland domiciled ETFs.

An EU-wide regulation known as PRIIPs took effect in 2018. As a result, US domiciled ETFs are now limited for residents of EU countries (and non-EU countries which conform to EU regulations), and effectively unavailable to retail investors in these countries. If you live in an EU country where the US tax treaty rate is lower than the US/Ireland tax treaty rate of 15%, you may nevertheless have to accept Ireland domiciled ETFs and live with the slightly worse tax result.

If your country's US tax treaty rate equals the US/Ireland tax treaty rate of 15%, you can consider either US or non-US domiciled ETFs, although you should restrict investments in US domiciled ETFs to below $60,000 if your country does not have a US estate tax treaty. Choosing the best ETF domicile in this case will usually be decided by a combination of how local tax laws treat 'offshore' funds, whether and how they provide foreign tax credits, and any large differences in the ETF annual charges.

If you live in a country with neither a US income tax treaty nor a US estate tax treaty you should strongly avoid US domiciled ETFs and strongly prefer non-US domiciled ones. For you, choosing US domiciled ETFs will probably lead to poor tax results all round.

Specific country notes
There is no US tax treaty with Hong Kong and it is not covered by the treaty with China. The tax treaty with Chile was executed in 2010 but has still not been ratified by the US senate, and so has not entered into force.

The US estate tax treaty with Switzerland may not protect against potential double-tax on US situated assets, but Swiss investors are probably protected up to the level of the US estate tax exemption allowed to US citizens.

The Ireland estate tax treaty is very old, and unlike other US estate tax treaties it may not raise the US estate tax exemption to the level allowed to US citizens. Irish investors should check this carefully before proceeding.

Canada does not have a separate estate tax treaty with the US. Instead, the US maintains a single treaty with Canada that combines both income taxes and estate taxes. Under this combined treaty, Canadians receive protection up to the level of the US estate tax exemption allowed to US citizens, the same as generally provided by the separate US estate tax treaties for other countries.

Residence and domicile
US income tax treaties treaties are generally controlled by your country of residence. Being a 'tax resident' of a country is normally sufficient to allow you to use that country's income tax treaty with the US.

In contrast, US estate tax treaties are generally controlled by your domicile rather than your country of residence. Domicile is where your permanent home is, and although it includes residence as one of its elements, residence alone in a country may not be enough to gain you coverage from a US estate tax treaty, so you may need to be particularly careful here. A few US estate tax treaties also cover citizens even when perhaps not resident in the treaty partner country, for example the UK.