First of all soak the whole urad dal and kidney beans in 4 cup of water overnight or 8 hours.
After that pressure cook them with a pinch of salt for 3-4 whistles so that the dal is soft and mushy.
Take cloves, cinnamon stick, green and black cardamom and dry roast them in a pan. Once its roasted grind them to make a semi coarse masala powder.
Now take a kadhai or pan and put it on medium flame. Add 2 tablespoon oil to it. Add cumin seeds, once they crackle, add chopped onion and fry them till they become translucent. Add ginger garlic paste and sauté till raw smell fades away.
Now add chopped tomatoes, green chillis to the pan, and cover the lid for 5 minutes.
Open the lid and add the grounded masala powder, red chilli powder, salt and coriander powder. Now roast this mixture until it leaves oil.
Switch off the flame and when cold enough, grind this to a smooth paste.
Transfer this paste in the pan and add boiled dal to this mixture now with 2-3 cup of water. Mix it properly and now let it cook for 10 minutes on lower flame. After 10 minutes add butter and again let it cook for 15 minute.
Now add Kasuri methi and cook for 5 minutes more. Your tasty dal makhani is ready to serve.