The Moy rises at the foot of the Ox Mountains in County Sligo. It flows for 110 kilometres (68 mi). For the greater part of its length, it flows southwestward, entering County Mayo and passing near Swinford before turning north near the village of Kilmore and heading for the town of Ballina, where it enters the Atlantic Ocean at Killala Bay. The Moy Estuary is eight kilometres (5 miles) long beginning at Ballina and running into Killala Bay.
The river was once among the best salmon fisheries in Europe; however, in recent times, drift net fishing off the coast caused a huge decline in salmon numbers. According to central fisheries board statistics, 101,231 returning salmon were taken by drift nets off the west coast of Ireland in 2005. In the same year, 29% (6,675) of all rod-caught salmon in Ireland were taken in the Ballina district as a result of a weir which keeps salmon trapped in the ridge pool near the mouth of the river during the summer. Drift netting for salmon was banned in November 2006 and the ban came into force on 1 January 2007.