Cut the chicken into large chunks and place into a bowl with all of the marinade ingredients. Mix well and place in the fridge for at least 30 minutes. This can be left overnight if you have time.
Heat oil in a large pot over medium-high heat , add the chicken in batches and cook until browned on both sides. Set the chicken aside whilst you make the sauce. It doesn't need to be cooked through at this point, it will cook in the sauce.
Heat the butter in the same pan, fry the onions until soft. Scrape up any brown bits off the bottom, its all flavour.
Add the garlic and ginger, then add the garam masala, cumin, turmeric, ground coriander and paprika. Fry for 30 seconds to release the flavours. Add a splash of water if it gets too dry.
Pour in the chopped tomatoes, kashmiri chilli and salt. Add the chicken back into the pan with any juices. Let it simmer for 15 minutes.
Add the double cream and soft brown sugar, then let it cook for a further 10 minutes until the sauce is thick and bubbling. Add water if the sauce becomes too thick.
Finish with finely chopped coriander. Serve with basmati rice and naan breads.