Son tracé est long d'environ 22 kilomètres, 6,9 km sont situés entièrement sur le canton de Genève, 3,8 km sont franco-genevois, 8,1 km sont franco-vaudois et 3,4 km sont entièrement français4.[réf. souhaitée] Elle prend sa source sur les pentes du Jura en territoire français, dans le département de l'Ain où elle est appelée la Divonne, à 550 mètres d'altitude sur la commune de Divonne-les-Bains à proximité du golf de Divonne-les-Bains.
Après être passée par Divonne-les-Bains où elle contourne le lac artificiel dit lac de Divonne, elle longe sur près de onze kilomètres la frontière franco-suisse, avec le canton de Vaud puis celui de Genève où elle reçoit son principal affluent l’Oudar sur le territoire de la commune de Collex-Bossy. Elle se jette enfin dans le lac Léman au sud de la commune qui porte son nom, Versoix à 372 mètres d'altitude