Heat oil in heavy bottom pan. Add whole spices - cumin seeds, cloves, black peppercorn, cinnamon stick, bay leaf, whole red chilli pepper, green & black cardamom. Let it cook on low heat for a minute or two until the aroma starts to form and cumin seeds starts to brown.
Add sliced onions, sliced serrano pepper, grated ginger and minced garlic along with ½ tsp salt and saute until translucent or starts to change color to brownish and raw smell of garlic is gone. Salt helps loosen the water from onions and cooks faster.
Add sliced tomatoes along with 2 tbsp of tomato paste to the pan and cook until it starts loosing water and starts to become mushy.
Add all dry spices to the mushy tomatoes, along with 1 tsp of salt. Cook spices along with onions and tomatoes for couple of minutes.
Add boiled rajma (red kidney beans) to the pot along with 4 cups of water either plain water or water you boiled your beans in (3 cups if eating it right after cooking). Give it a good stir. Use back of the spatula to mush the beans a little. This will help thicken the curry. Do not over mush it though! Please see notes below if you want to boil the beans at home instead of using canned ones.
Close the lid and simmer/cook it on medium heat for 10-15 minutes. Mixing it few times during this step.
Carefully open the lid and check the gravy/curry consistency. It should thicken up by now.
Rub 1 tsp of kasuri methi between your palm and add it to rajma. Mix well.
Heat 1 tbsp of oil, saute julienne and serrano for few second. Add in ½ tsp of Kashmiri Red Chili Powder and immediately add into rajma. Mix well. Simmer for 2-3 minutes.
Add fresh chopped cilantro, lime juice (optional) and give it a good stir. Serve it with jeera/cumin rice, naan, roti or any flatbread along with some crunchy veggies like raw onions, tomatoes, cucumber and yogurt raita!