export interface TaxId {
  name: string
  type: string
  country: string
  countryIso2: string
  placeholder: string
  vatPrefix?: string
  /** Override the country code sent to Orb when it differs from countryIso2 */
  taxCountryIso2?: string
}

// Commented out countries are not currently supported by Orb API

export const TAX_IDS: TaxId[] = [
  {
    name: 'AL TIN',
    type: 'al_tin',
    country: 'Albania',
    placeholder: 'J12345678N',
    countryIso2: 'AL',
  },
  {
    name: 'AE TRN',
    type: 'ae_trn',
    country: 'United Arab Emirates',
    placeholder: '123456789012345',
    countryIso2: 'AE',
  },
  {
    name: 'AT VAT',
    type: 'eu_vat',
    country: 'Austria',
    placeholder: 'ATU12345678',
    vatPrefix: 'ATU',
    countryIso2: 'AT',
  },
  {
    name: 'AD NRT',
    type: 'ad_nrt',
    country: 'Andorra',
    placeholder: 'A-123456-Z',
    countryIso2: 'AD',
  },
  {
    name: 'AO TIN',
    type: 'ao_tin',
    country: 'Angola',
    placeholder: '5123456789',
    countryIso2: 'AO',
  },
  {
    name: 'AR CUIT',
    type: 'ar_cuit',
    country: 'Argentina',
    placeholder: '12-3456789-01',
    countryIso2: 'AR',
  },
  {
    name: 'AM TIN',
    type: 'am_tin',
    country: 'Armenia',
    placeholder: '02538904',
    countryIso2: 'AM',
  },
  {
    name: 'AW TIN',
    type: 'aw_tin',
    country: 'Aruba',
    placeholder: '12345678',
    countryIso2: 'AW',
  },
  {
    name: 'AU ABN',
    type: 'au_abn',
    country: 'Australia',
    placeholder: '12345678912',
    countryIso2: 'AU',
  },
  {
    name: 'AU ARN',
    type: 'au_arn',
    country: 'Australia',
    placeholder: '123456789123',
    countryIso2: 'AU',
  },
  {
    name: 'AZ TIN',
    type: 'az_tin',
    country: 'Azerbaijan',
    placeholder: '0123456789',
    countryIso2: 'AZ',
  },
  {
    name: 'BS TIN',
    type: 'bs_tin',
    country: 'Bahamas',
    placeholder: '123.456.789',
    countryIso2: 'BS',
  },
  {
    name: 'BH VAT',
    type: 'bh_vat',
    country: 'Bahrain',
    placeholder: '123456789012345',
    countryIso2: 'BH',
  },
  {
    name: 'BD BIN',
    type: 'bd_bin',
    country: 'Bangladesh',
    placeholder: '123456789-0123',
    countryIso2: 'BD',
  },
  {
    name: 'BB TIN',
    type: 'bb_tin',
    country: 'Barbados',
    placeholder: '1123456789012',
    countryIso2: 'BB',
  },
  {
    name: 'BE VAT',
    type: 'eu_vat',
    country: 'Belgium',
    placeholder: 'BE0123456789',
    vatPrefix: 'BE',
    countryIso2: 'BE',
  },
  {
    name: 'BJ IFU',
    type: 'bj_ifu',
    country: 'Benin',
    placeholder: '1234567890123',
    countryIso2: 'BJ',
  },
  {
    name: 'BO TIN',
    type: 'bo_tin',
    country: 'Bolivia',
    placeholder: '123456789',
    countryIso2: 'BO',
  },
  {
    name: 'BA TIN',
    type: 'ba_tin',
    country: 'Bosnia & Herzegovina',
    placeholder: '123456789012',
    countryIso2: 'BA',
  },
  {
    name: 'BG VAT',
    type: 'eu_vat',
    country: 'Bulgaria',
    placeholder: 'BG0123456789',
    vatPrefix: 'BG',
    countryIso2: 'BG',
  },
  {
    name: 'BG UIC',
    type: 'bg_uic',
    country: 'Bulgaria',
    placeholder: '123456789',
    countryIso2: 'BG',
  },
  {
    name: 'BR CNPJ',
    type: 'br_cnpj',
    country: 'Brazil',
    placeholder: '01.234.456/5432-10',
    countryIso2: 'BR',
  },
  {
    name: 'BR CPF',
    type: 'br_cpf',
    country: 'Brazil',
    placeholder: '123.456.789-87',
    countryIso2: 'BR',
  },
  {
    name: 'BF IFU',
    type: 'bf_ifu',
    country: 'Burkina Faso',
    placeholder: '12345678A',
    countryIso2: 'BF',
  },
  {
    name: 'KH TIN',
    type: 'kh_tin',
    country: 'Cambodia',
    placeholder: '1001-123456789',
    countryIso2: 'KH',
  },
  {
    name: 'CM NIU',
    type: 'cm_niu',
    country: 'Cameroon',
    placeholder: 'M123456789000L',
    countryIso2: 'CM',
  },
  {
    name: 'CA BN',
    type: 'ca_bn',
    country: 'Canada',
    placeholder: '123456789',
    countryIso2: 'CA',
  },
  {
    name: 'CA GST/HST',
    type: 'ca_gst_hst',
    country: 'Canada',
    placeholder: '123456789RT0002',
    countryIso2: 'CA',
  },
  {
    name: 'CA PST-BC',
    type: 'ca_pst_bc',
    country: 'Canada',
    placeholder: 'PST-1234-5678',
    countryIso2: 'CA',
  },
  {
    name: 'CA PST-MB',
    type: 'ca_pst_mb',
    country: 'Canada',
    placeholder: '123456-7',
    countryIso2: 'CA',
  },
  {
    name: 'CA PST-SK',
    type: 'ca_pst_sk',
    country: 'Canada',
    placeholder: '1234567',
    countryIso2: 'CA',
  },
  {
    name: 'CA QST',
    type: 'ca_qst',
    country: 'Canada',
    placeholder: '1234567890TQ1234',
    countryIso2: 'CA',
  },
  {
    name: 'CV NIF',
    type: 'cv_nif',
    country: 'Cape Verde',
    placeholder: '213456789',
    countryIso2: 'CV',
  },
  {
    name: 'CH VAT',
    type: 'ch_vat',
    country: 'Switzerland',
    placeholder: 'CHE-123.456.789 MWST',
    vatPrefix: 'CHE',
    countryIso2: 'CH',
  },
  {
    name: 'CH UID',
    type: 'ch_uid',
    country: 'Switzerland',
    placeholder: 'CHE-123.456.789 HR	',
    countryIso2: 'CH',
  },
  {
    name: 'CL TIN',
    type: 'cl_tin',
    country: 'Chile',
    placeholder: '12.345.678-K',
    countryIso2: 'CL',
  },
  {
    name: 'CN TIN',
    type: 'cn_tin',
    country: 'China',
    placeholder: '123456789012345678',
    countryIso2: 'CN',
  },
  {
    name: 'CO NIT',
    type: 'co_nit',
    country: 'Colombia',
    placeholder: '123.456.789-0',
    countryIso2: 'CO',
  },
  {
    name: 'CD NIF',
    type: 'cd_nif',
    country: 'Congo (DRC)',
    placeholder: 'A0123456M',
    countryIso2: 'CD',
  },
  {
    name: 'CR TIN',
    type: 'cr_tin',
    country: 'Costa Rica',
    placeholder: '1-234-567890',
    countryIso2: 'CR',
  },
  {
    name: 'CY VAT',
    type: 'eu_vat',
    country: 'Cyprus',
    placeholder: 'CY12345678Z',
    vatPrefix: 'CY',
    countryIso2: 'CY',
  },
  {
    name: 'CZ VAT',
    type: 'eu_vat',
    country: 'Czech Republic',
    placeholder: 'CZ1234567890',
    vatPrefix: 'CZ',
    countryIso2: 'CZ',
  },
  {
    name: 'DE VAT',
    type: 'eu_vat',
    country: 'Germany',
    placeholder: 'DE123456789',
    vatPrefix: 'DE',
    countryIso2: 'DE',
  },
  {
    name: 'DE STN',
    type: 'de_stn',
    country: 'Germany',
    placeholder: '1234567890',
    countryIso2: 'DE',
  },
  {
    name: 'DK VAT',
    type: 'eu_vat',
    country: 'Denmark',
    placeholder: 'DK12345678',
    vatPrefix: 'DK',
    countryIso2: 'DK',
  },
  {
    name: 'DO RCN',
    type: 'do_rcn',
    country: 'Dominican Republic',
    placeholder: '123-4567890-1',
    countryIso2: 'DO',
  },
  {
    name: 'EC RUC',
    type: 'ec_ruc',
    country: 'Ecuador',
    placeholder: '1234567890001',
    countryIso2: 'EC',
  },
  {
    name: 'EG TIN',
    type: 'eg_tin',
    country: 'Egypt',
    placeholder: '1234567890',
    countryIso2: 'EG',
  },
  {
    name: 'SV NIT',
    type: 'sv_nit',
    country: 'El Salvador',
    placeholder: '1234-567890-123-4',
    countryIso2: 'SV',
  },
  {
    name: 'ET TIN',
    type: 'et_tin',
    country: 'Ethiopia',
    placeholder: '1234567890',
    countryIso2: 'ET',
  },
  {
    name: 'EE VAT',
    type: 'eu_vat',
    country: 'Estonia',
    placeholder: 'EE123456789',
    vatPrefix: 'EE',
    countryIso2: 'EE',
  },
  {
    name: 'ES CIF',
    type: 'es_cif',
    country: 'Spain',
    placeholder: 'A12345678',
    countryIso2: 'ES',
  },
  {
    name: 'ES VAT',
    type: 'eu_vat',
    country: 'Spain',
    placeholder: 'ESX1234567Z',
    vatPrefix: 'ES',
    countryIso2: 'ES',
  },
  {
    name: 'SR FIN',
    type: 'sr_fin',
    country: 'Suriname',
    placeholder: '1234567890',
    countryIso2: 'SR',
  },
  {
    name: 'FI VAT',
    type: 'eu_vat',
    country: 'Finland',
    placeholder: 'FI12345678',
    vatPrefix: 'FI',
    countryIso2: 'FI',
  },
  {
    name: 'FR VAT',
    type: 'eu_vat',
    country: 'France',
    placeholder: 'FRAB123456789',
    vatPrefix: 'FR',
    countryIso2: 'FR',
  },
  {
    name: 'GB VAT',
    type: 'eu_vat',
    country: 'United Kingdom',
    placeholder: 'GB123456789',
    vatPrefix: 'GB',
    countryIso2: 'GB',
  },
  {
    name: 'UK VAT',
    type: 'gb_vat',
    country: 'United Kingdom',
    placeholder: 'GB123456789',
    vatPrefix: 'GB',
    countryIso2: 'GB',
  },
  {
    // Isle of Man uses GB VAT numbers, taxCountryIso2 must be GB for Orb validation
    name: 'IM VAT',
    type: 'gb_vat',
    country: 'Isle of Man',
    placeholder: 'GB123456789',
    vatPrefix: 'GB',
    countryIso2: 'IM',
    taxCountryIso2: 'GB',
  },
  {
    name: 'GE VAT',
    type: 'ge_vat',
    country: 'Georgia',
    placeholder: '123456789',
    countryIso2: 'GE',
  },
  {
    name: 'EL VAT',
    type: 'eu_vat',
    country: 'Greece',
    countryIso2: 'GR',
    placeholder: 'EL123456789',
    vatPrefix: 'EL',
  },
  {
    name: 'GN NIF',
    type: 'gn_nif',
    country: 'Guinea',
    placeholder: '123456789',
    countryIso2: 'GN',
  },
  {
    name: 'HK BR',
    type: 'hk_br',
    country: 'Hong Kong SAR China',
    placeholder: '12345678',
    countryIso2: 'HK',
  },
  {
    name: 'HR VAT',
    type: 'eu_vat',
    country: 'Croatia',
    placeholder: 'HR12345678912',
    vatPrefix: 'HR',
    countryIso2: 'HR',
  },
  {
    name: 'HR OIB',
    type: 'hr_oib',
    country: 'Croatia',
    placeholder: '12345678901',
    countryIso2: 'HR',
  },
  {
    name: 'HU VAT',
    type: 'eu_vat',
    country: 'Hungary',
    placeholder: 'HU12345678912',
    vatPrefix: 'HU',
    countryIso2: 'HU',
  },
  {
    name: 'HU TIN',
    type: 'hu_tin',
    country: 'Hungary',
    placeholder: '12345678-1-23',
    countryIso2: 'HU',
  },
  {
    name: 'ID NPWP',
    type: 'id_npwp',
    country: 'Indonesia',
    placeholder: '012.345.678.9-012.345',
    countryIso2: 'ID',
  },
  {
    name: 'IE VAT',
    type: 'eu_vat',
    country: 'Ireland',
    placeholder: 'IE1234567AB',
    vatPrefix: 'IE',
    countryIso2: 'IE',
  },
  {
    name: 'IL VAT',
    type: 'il_vat',
    country: 'Israel',
    placeholder: '000012345',
    countryIso2: 'IL',
  },
  {
    name: 'IN GST',
    type: 'in_gst',
    country: 'India',
    placeholder: '12ABCDE3456FGZH',
    countryIso2: 'IN',
  },
  {
    name: 'IS VAT',
    type: 'is_vat',
    country: 'Iceland',
    placeholder: '123456',
    countryIso2: 'IS',
  },
  {
    name: 'IT VAT',
    type: 'eu_vat',
    country: 'Italy',
    placeholder: 'IT12345678912',
    vatPrefix: 'IT',
    countryIso2: 'IT',
  },
  {
    name: 'KE PIN',
    type: 'ke_pin',
    country: 'Kenya',
    placeholder: 'P000111111A',
    countryIso2: 'KE',
  },
  {
    name: 'KZ BIN',
    type: 'kz_bin',
    country: 'Kazakhstan',
    placeholder: '123456789012',
    countryIso2: 'KZ',
  },
  {
    name: 'KG TIN',
    type: 'kg_tin',
    country: 'Kyrgyzstan',
    placeholder: '12345678901234',
    countryIso2: 'KG',
  },
  {
    name: 'JP CN',
    type: 'jp_cn',
    country: 'Japan',
    placeholder: '1234567891234',
    countryIso2: 'JP',
  },
  {
    name: 'JP RN',
    type: 'jp_rn',
    country: 'Japan',
    placeholder: '12345',
    countryIso2: 'JP',
  },
  {
    name: 'JP TRN',
    type: 'jp_trn',
    country: 'Japan',
    placeholder: 'T1234567891234',
    countryIso2: 'JP',
  },
  {
    name: 'KR BRN',
    type: 'kr_brn',
    country: 'Korea',
    placeholder: '123-45-67890',
    countryIso2: 'KR',
  },
  {
    name: 'LI UID',
    type: 'li_uid',
    country: 'Liechtenstein',
    placeholder: 'CHE123456789',
    countryIso2: 'LI',
  },
  {
    name: 'LI VAT',
    type: 'li_vat',
    country: 'Liechtenstein',
    placeholder: '12345',
    vatPrefix: 'LI',
    countryIso2: 'LI',
  },
  {
    name: 'LT VAT',
    type: 'eu_vat',
    country: 'Lithuania',
    placeholder: 'LT123456789123',
    vatPrefix: 'LT',
    countryIso2: 'LT',
  },
  {
    name: 'LU VAT',
    type: 'eu_vat',
    country: 'Luxembourg',
    placeholder: 'LU12345678',
    vatPrefix: 'LU',
    countryIso2: 'LU',
  },
  {
    name: 'LA TIN',
    type: 'la_tin',
    country: 'Laos',
    placeholder: '123456789-000',
    countryIso2: 'LA',
  },
  {
    name: 'LV VAT',
    type: 'eu_vat',
    country: 'Latvia',
    placeholder: 'LV12345678912',
    vatPrefix: 'LV',
    countryIso2: 'LV',
  },
  {
    name: 'MT VAT',
    type: 'eu_vat',
    country: 'Malta',
    placeholder: 'MT12345678',
    vatPrefix: 'MT',
    countryIso2: 'MT',
  },
  {
    name: 'MR NIF',
    type: 'mr_nif',
    country: 'Mauritania',
    placeholder: '12345678',
    countryIso2: 'MR',
  },
  {
    name: 'MX RFC',
    type: 'mx_rfc',
    country: 'Mexico',
    placeholder: 'ABC010203AB9',
    countryIso2: 'MX',
  },
  {
    name: 'MD VAT',
    type: 'md_vat',
    country: 'Moldova',
    placeholder: '1234567',
    countryIso2: 'MD',
  },
  {
    name: 'ME PIB',
    type: 'me_pib',
    country: 'Montenegro',
    placeholder: '12345678',
    countryIso2: 'ME',
  },
  {
    name: 'MA VAT',
    type: 'ma_vat',
    country: 'Morocco',
    placeholder: '12345678',
    countryIso2: 'MA',
  },
  {
    name: 'MY FRP',
    type: 'my_frp',
    country: 'Malaysia',
    placeholder: '12345678',
    countryIso2: 'MY',
  },
  {
    name: 'MY ITN',
    type: 'my_itn',
    country: 'Malaysia',
    placeholder: 'C 1234567890',
    countryIso2: 'MY',
  },
  {
    name: 'MY SST',
    type: 'my_sst',
    country: 'Malaysia',
    placeholder: 'A12-3456-78912345',
    countryIso2: 'MY',
  },
  {
    name: 'NP PAN',
    type: 'np_pan',
    country: 'Nepal',
    placeholder: '123456789',
    countryIso2: 'NP',
  },
  {
    name: 'NL VAT',
    type: 'eu_vat',
    country: 'Netherlands',
    placeholder: 'NL123456789B12',
    vatPrefix: 'NL',
    countryIso2: 'NL',
  },
  {
    name: 'NG TIN',
    type: 'ng_tin',
    country: 'Nigeria',
    placeholder: '12345678-0001',
    countryIso2: 'NG',
  },
  {
    name: 'MK VAT',
    type: 'mk_vat',
    country: 'North Macedonia',
    placeholder: 'MK1234567890123',
    countryIso2: 'MK',
  },
  {
    name: 'NO VAT',
    type: 'no_vat',
    country: 'Norway',
    placeholder: '123456789MVA',
    countryIso2: 'NO',
  },
  {
    name: 'NO VOEC',
    type: 'no_voec',
    country: 'Norway',
    placeholder: '1234567	',
    countryIso2: 'NO',
  },
  {
    name: 'OM VAT',
    type: 'om_vat',
    country: 'Oman',
    placeholder: 'OM1234567890',
    countryIso2: 'OM',
  },
  {
    name: 'PE RUC',
    type: 'pe_ruc',
    country: 'Peru',
    placeholder: '12345678901',
    countryIso2: 'PE',
  },
  {
    name: 'PH TIN',
    type: 'ph_tin',
    country: 'Philippines',
    placeholder: '123456789012',
    countryIso2: 'PH',
  },
  {
    name: 'NZ GST',
    type: 'nz_gst',
    country: 'New Zealand',
    placeholder: '123456789',
    countryIso2: 'NZ',
  },
  {
    name: 'PL VAT',
    type: 'eu_vat',
    country: 'Poland',
    placeholder: 'PL1234567890',
    vatPrefix: 'PL',
    countryIso2: 'PL',
  },
  {
    name: 'PT VAT',
    type: 'eu_vat',
    country: 'Portugal',
    placeholder: 'PT123456789',
    vatPrefix: 'PT',
    countryIso2: 'PT',
  },
  {
    name: 'RO VAT',
    type: 'eu_vat',
    country: 'Romania',
    placeholder: 'RO1234567891',
    vatPrefix: 'RO',
    countryIso2: 'RO',
  },
  {
    name: 'RO TIN',
    type: 'ro_tin',
    country: 'Romania',
    placeholder: '1234567890123',
    countryIso2: 'RO',
  },
  {
    name: 'RU INN',
    type: 'ru_inn',
    country: 'Russia',
    placeholder: '1234567891',
    countryIso2: 'RU',
  },
  {
    name: 'RU KPP',
    type: 'ru_kpp',
    country: 'Russia',
    placeholder: '123456789',
    countryIso2: 'RU',
  },
  {
    name: 'SA VAT',
    type: 'sa_vat',
    country: 'Saudi Arabia',
    placeholder: '123456789012345',
    countryIso2: 'SA',
  },
  {
    name: 'SN NINEA',
    type: 'sn_ninea',
    country: 'Senegal',
    placeholder: '12345672A2',
    countryIso2: 'SN',
  },
  {
    name: 'RS PIB',
    type: 'rs_pib',
    country: 'Serbia',
    placeholder: '123456789',
    countryIso2: 'RS',
  },
  {
    name: 'SE VAT',
    type: 'eu_vat',
    country: 'Sweden',
    placeholder: 'SE123456789123',
    vatPrefix: 'SE',
    countryIso2: 'SE',
  },
  {
    name: 'SG GST',
    type: 'sg_gst',
    country: 'Singapore',
    placeholder: 'M12345678X',
    countryIso2: 'SG',
  },
  {
    name: 'SG UEN',
    type: 'sg_uen',
    country: 'Singapore',
    placeholder: '123456789F',
    countryIso2: 'SG',
  },
  {
    name: 'SI VAT',
    type: 'eu_vat',
    country: 'Slovenia',
    placeholder: 'SI12345678',
    vatPrefix: 'SI',
    countryIso2: 'SI',
  },
  {
    name: 'SI TIN',
    type: 'si_tin',
    country: 'Slovenia',
    placeholder: '12345678',
    countryIso2: 'SI',
  },
  {
    name: 'SK VAT',
    type: 'eu_vat',
    country: 'Slovakia',
    placeholder: 'SK1234567891',
    vatPrefix: 'SK',
    countryIso2: 'SK',
  },
  {
    name: 'TH VAT',
    type: 'th_vat',
    country: 'Thailand',
    placeholder: '1234567891234',
    countryIso2: 'TH',
  },
  {
    name: 'TR TIN',
    type: 'tr_tin',
    country: 'Turkey',
    placeholder: '0123456789',
    countryIso2: 'TR',
  },
  {
    name: 'TW VAT',
    type: 'tw_vat',
    country: 'Taiwan',
    placeholder: '12345678',
    countryIso2: 'TW',
  },
  {
    name: 'TJ TIN',
    type: 'tj_tin',
    country: 'Tajikistan',
    placeholder: '123456789',
    countryIso2: 'TJ',
  },
  {
    name: 'TZ VAT',
    type: 'tz_vat',
    country: 'Tanzania',
    placeholder: '12345678A',
    countryIso2: 'TZ',
  },
  {
    name: 'UG TIN',
    type: 'ug_tin',
    country: 'Uganda',
    placeholder: '0123456789',
    countryIso2: 'UG',
  },
  {
    name: 'UA VAT',
    type: 'ua_vat',
    country: 'Ukraine',
    placeholder: '123456789',
    countryIso2: 'UA',
  },
  {
    name: 'US EIN',
    type: 'us_ein',
    country: 'United States',
    placeholder: '12-3456789',
    countryIso2: 'US',
  },
  {
    name: 'XI VAT',
    type: 'eu_vat',
    country: 'United Kingdom (Northern Ireland)',
    placeholder: 'XI123456789',
    vatPrefix: 'XI',
    countryIso2: 'GB',
  },
  {
    name: 'ZA VAT',
    type: 'za_vat',
    country: 'South Africa',
    placeholder: '4123456789',
    countryIso2: 'ZA',
  },
  {
    name: 'UY RUC',
    type: 'uy_ruc',
    country: 'Uruguay',
    placeholder: '123456789012',
    countryIso2: 'UY',
  },
  {
    name: 'UZ TIN',
    type: 'uz_tin',
    country: 'Uzbekistan',
    placeholder: '123456789',
    countryIso2: 'UZ',
  },
  {
    name: 'UZ VAT',
    type: 'uz_vat',
    country: 'Uzbekistan',
    placeholder: '123456789012',
    countryIso2: 'UZ',
  },
  {
    name: 'VE RIF',
    type: 've_rif',
    country: 'Venezuela',
    placeholder: 'A-12345678-9',
    countryIso2: 'VE',
  },
  {
    name: 'VN TIN',
    type: 'vn_tin',
    country: 'Vietnam',
    placeholder: '1234567890',
    countryIso2: 'VN',
  },
  {
    name: 'ZM TIN',
    type: 'zm_tin',
    country: 'Zambia',
    placeholder: '1004751879',
    countryIso2: 'ZM',
  },
  {
    name: 'ZW TIN',
    type: 'zw_tin',
    country: 'Zimbabwe',
    placeholder: '1234567890',
    countryIso2: 'ZW',
  },
]
