Equated Monthly Installment (EMI) for Home Loan and Amortization Schedule
var
Particularly given that you have accuracy issues, it's important for your own understanding of what the code does to be explicit in the following declarations:
    var monthlyRepaymentAmount = HousingLoanInterest(principal, interestRatePerAnnum, years);
    var tenure = years * 12;
    var principalAndInterest = CompoundInterest(principal, interestRatePerAnnum, 12, years);

From these lines alone, I have no idea if these are supposed to be doubles, integers, decimals, etc. Just spell out the actual type.
In-place operations
        totalRepaymentAmount = totalRepaymentAmount + (decimal)monthlyRepaymentAmount;
        tenure = tenure - 1;
     

can be
totalRepaymentAmount += monthlyRepaymentAmount;
tenure--;

Formatting
This could benefit from some temporary variables, but even without them,
    return (loanAmount * Math.Pow((interestRate / 12) + 1,
         (years * 12)) * interestRate / 12) / (Math.Pow
         (interestRate / 12 + 1, (years * 12)) - 1);

is more legible as
return (
    loanAmount * Math.Pow(
        interestRate / 12 + 1,
        years * 12
    ) * interestRate / 12
) / (
    Math.Pow(
        interestRate / 12 + 1,
        years * 12
    ) - 1
);

which in turn is equivalent to
double annual = interestRate / 12;
double pow = Math.Pow(
    annual + 1,
    years * 12
);
return loanAmount * pow * annual / (pow - 1);

Simpler yet:
double annual = interestRate / 12,
       pow = Math.Pow(
           annual + 1,
           -12 * years
       );
return loanAmount * annual / (1 - pow);

Please test this for equivalence.