public class IrelandTaxIdentificationNumber
public static void Main()
bool isValid = isValidITIN("1234567T");
Console.WriteLine(isValid);
private static bool authenticateKey(string key)
char[] alphabets = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W'};
foreach (char ch in alphabets)
if (ch.ToString().Equals(key)) return true;
private static bool authenticateLastDigit(string ldigit)
char[] alphabets = {'A','B','C','D','E','F','G','H','I','W'};
foreach (char ch in alphabets)
if (ch.ToString().Equals(ldigit)) return true;
private static string getReminder(string itin)
char[] alphabets = {'A','B','C','D','E','F','G','H','I'};
for (int i=0;i<itin.Length - 1;i++)
addition += (Convert.ToInt32(itin[i]) - 48) * (itin.Length - i);
foreach (char ch in alphabets)
if (ch.Equals(itin[itin.Length - 1]))
int answer = addition % 23;
if (answer == 0) return "W";
return ((char)(answer + 64)).ToString();
private static bool isValidITIN(string itin)
if (itin.Length != 8 && itin.Length != 9) return false;
string wholestring_check = itin[7].ToString();
if (!authenticateKey(wholestring_check)) return false;
string lastdigit = itin[itin.Length - 1].ToString();
if (!authenticateLastDigit(lastdigit)) return false;
string wholestring = itin.Remove(itin.Length - 2,1);
string wholestring_reminder = getReminder(wholestring);
if (!wholestring_reminder.Equals(wholestring_check)) return false;