Warm the oil in a pan over medium heat until it reaches cooking temperature.
Stir in the onions and let them cook for 5–6 minutes, allowing them to soften and take on a light golden colour.
Add the chicken and cook for 6-8 minutes until the colour changes.
Mix in the ginger paste and garlic paste, giving them a brief minute to release their aroma.
Add the tomatoes and let them break down fully, cooking until they become soft and pulpy.
Sprinkle in all the spices and sauté for 2–3 minutes so they coat the chicken and deepen in flavour.
Work in the yoghurt gradually, stirring without pause to prevent it from splitting, and cook for 3–4 minutes.
Pour in the water, cover the pan, and leave the curry to cook on medium heat for about 15 minutes.
Finish by adding the coriander and bullet chillies, letting everything simmer together for another 2–3 minutes before serving.