Skip to main content

House Rent Allowance: Rules and Calculation

House Rent Allowance (HRA) is a major component of the corporate salary packages. It is an important factor if you are migrating from your hometown for the job. Further, it is even more crucial for people moving to metro cities as they generally prefer living in a rented property because of the high cost of buying a new house. HRA has a huge impact on the taxable income and the actual payable income tax of the working professionals. Also, initially, if one gets the calculation wrong, a lot more tax would be deducted (TDS) and one would have the headache of claiming it back during the Income Tax Returns (ITR) filing process. So let us first understand the rules and regulations of HRA and then look at a few examples.

HRA Rules and Regulations

HRA can be claimed only for the property rented in the same city as your work place.

HRA deduction is the LEAST of the following three amounts calculated annually:
  1. Actual HRA received (as given on payslip)
  2. A component of your Basic Salary and Dearness Allowance (DA)
    1. For metro cities: 50% of (Basic + DA)
    2. For Non-metro cities: 40% of (Basic + DA)
  3. Actual rent paid minus 10% of (Basic + DA)
Use this HRA calculator provided by the Income tax department to calculate your HRA.

If the annual rent amount exceeds Rs. 1 lakh, PAN of the landlord is mandatory to claim the benefits.

At the end of the financial year, employers generally demand proof of actual rent payment. A rent receipt can be given as proof containing the address of the property, rent amount, landlord's PAN, landlord's signature on a revenue stamp and employee's signature.

Within certain conditions, an employee can claim both HRA and exemption on Home Loan interest. This can be done if one owns a property in a different city than the work city. There are many other conditions which are out of the scope of this post.

HRA benefits allow for rent payment to parents. If an employee lives along with his/her parents in a house owned by them, s/he can enter into a rent agreement with parents and pay rent to them. The parents must show this rent income in their Income Tax Returns. However, this is only beneficial if the employee's income tax bracket is higher than parents' income tax bracket. For example, if the employee is saving 20% tax on HRA component but the parents are paying 30% tax on their Rent income shown in ITR, this is a loss-making transaction for the family.

HRA calculation examples:

Example 1:

Assume a person living in a metro city has a monthly basic salary of Rs. 20000. The monthly HRA component is Rs. 10000 and the actual rent paid is Rs. 15000 per month. The person does not get any Dearness Allowance.

Applying the above 3 conditions:
  1. Actual HRA received (as given on payslip) = Rs 10000 per month * 12 months = Rs. 120000
  2. For metro cities: 50% of (Basic + DA):
    - Annual basic salary = Rs. 20000 per month * 12 = Rs. 240000
    - 50% of (Basic + DA) = Rs. 120000
  3. Actual rent paid minus 10% of (Basic + DA)
    - Actual rent paid annually = Rs. 15000 per month * 12 = Rs. 180000
    - 10% of (Basic + DA) = 10% of Rs. 240000 = Rs. 24000
    - Actual rent - 10% of (Basic + DA) = Rs. 180000 - Rs. 24000 = Rs. 156000
The minimum of the above 3 is Rs. 120000. So the person's taxable income will be reduced by Rs. 120000.

Example 2: If the person starts paying the rent in the middle of the year.

Let's take the same conditions as above but assume that the person starts paying rent from the month of December instead of at the start of the financial year in April which still earning for the whole year. In this case, the third condition above will change as follows:

3. Actual rent paid minus 10% of (Basic + DA):
- Actual rent paid annually = Rs. 15000 per month * 4 (From December to March) = Rs. 60000
- 10% of (Basic + DA) = 10% of Rs. 240000 = Rs. 24000
- Actual rent - 10% of (Basic + DA) = Rs. 60000 - Rs. 24000 = Rs. 36000

The minimum of the 3 conditions is now Rs. 36000. So the person's taxable income will be reduced by Rs. 66000 only.

Example 3:

Let's carry forward the above examples but assume that the person is receiving a Dearness Allowance of Rs. 40000 per month. Let's recalculate all the above conditions:

  1. Actual HRA received (as given on payslip) = Rs 10000 per month * 12 months = Rs. 120000
  2. For metro cities: 50% of (Basic + DA):
    - Annual basic salary (Basic + DA) = Rs. 60000 per month * 12 = Rs. 720000
    - 50% of (Basic + DA) = Rs. 360000
  3. Actual rent paid minus 10% of (Basic + DA)
    - Actual rent paid annually = Rs. 15000 per month * 4 (From December to March) = Rs. 60000
    - 10% of (Basic + DA) = 10% of Rs. 720000 = Rs. 72000
    - Actual rent - 10% of (Basic + DA) = Rs. 60000 - Rs. 72000 = Rs. -12000
The least of the three is the third case which is a negative figure. This means that you won't get any HRA benefits. This is one scenario where you won't get any HRA benefit even though there is HRA component in your salary


I hope this post will clear that confusing HRA component in your payslip and help you calculate your HRA benefits. If you don't get HRA as part of your salary, try requesting your employer to restructure your salary to include it as it may help you save a lot of tax.

Comments

Popular posts from this blog

True or False with Bash

One of the first rules that is taught in any programming course is that 0 means False and anything that is non-zero is considered True. But when you come to system programming in Unix environment, you need to completely forget this basic programming rule. In unix shells, this rule is flipped and 0 means true / success while anything non-zero means false / failure. Every executed command in unix shells returns an exit status according to this convention. Let's see some examples in bash We will use the echo $? to get the exit status for the previously executed command. (The detailed explanation of this command is out of the scope of this article) The first example is as always to print "Hello World!" There are two ways of printing "Hello World!" as shown above. In both the cases, the exit status is 0 as the printing is successful. Let's check the true and false variables. As you can see, false returns 1. Another example using conditionals. ...

Simple HTTP Server in Python

Have you ever come across a need to share a file over a local network to a number of machines? Have you ever felt the need to share output of a task in text files available at a web-endpoint? Often, there is a requirement to quickly setup a light-weight web-server for such requirements. Python provides the easiest way to setup a simple HTTP server for such use cases with a single command. Python comes pre-installed with Linux as many of the linux libraries use python in background. Therefore there is no extra overhead of installing python. With support for python2 getting stopped in April 2020, many of the newer versions of linux distros come with default python3. Therefore this post will focus on setting up an HTTP server using both python2 and python3. We will be using Ubuntu 16.04, however it will work for majority of the linux systems where python comes pre-installed. Preparation Steps to follow before starting the server: Make sure you are in the directory which you want ...

Programmer's Guide: The "set" command in bash

The "set" command in shell allows you to set various shell options and positional parameters. The purpose of this post is to highlight how much this command has been helpful to me in my bash programming. I would not go into much depth about all the possible flag, because you can find many posts and documentation on the internet, like this post by GNU, which cover all the possible options that the "set" command provides. I will mainly focus on two options, The " set -x " option:  This option allows us to print commands and their arguments, after they are expanded (interpolated) but before they are executed. Let us execute a simple hello world programme in bash.   When the programme is executed, we see the entire printf statement being printed before the actual "Hello World!" message is printed. This way, we can check the command that is being executed along with its output. Setting the flag also expands any variables or ar...