Add canola oil to a stock pot and heat on medium-high. Add onion and carrots. Sauté for 2-3 minutes or until onion is fragrant. Stir in curry powder, cinnamon, and ginger. Add vegetable broth and bring to a boil.
Reduce heat to a simmer and cook until the carrots are tender, about 15-20 minutes.
Remove from heat and puree with an immersion blender until smooth, or blend in batches until creamy.
Return carrot puree to stock pot and continue to simmer. Add coconut milk and water. Serve with fresh cilantro, cilantro puree, sour cream or yogurt.