Halsuanjoki on Keski-Pohjanmaalla Halsuan ja Vetelin kuntien alueella virtaava Perhonjoen sivujoki. Halsuanjoki saa alkunsa Halsuanjärvestä, josta se virtaa 17 kilometrin pituisena ja yhtyy Perhonjokeen Siponkosken jälkeisessä suvannossa, Räyringin kylän tuntumassa.
Joessa on useita koskia, joista merkittävimmät ovat Sillanpään kylän tuntumassa virtaava 1,7 kilometriä pitkä Pitkäkoski ja Räyringin kylän lähellä oleva Siponkoski. Halsuanjoen vesi on alueelle tyypillisesti humuksen värjäämää eli varsin tummaa.