Sông Quây Sơn bắt nguồn từ các khe suối tại huyện Tĩnh Tây, thành phố Bách Sắc của Quảng Tây. Sau đó, sông chảy về phía nam, bắt đầu chảy hoàn toàn trong lãnh thổ Việt Nam tại xã Ngọc Côn của huyện Trùng Khánh thuộc tỉnh Cao Bằng. Tại huyện Trùng Khánh, sông tiếp tục chảy theo hướng đông nam cho đến cực nam của xã Đình Phong rồi sau đó chuyển hướng đông-đông bắc đến xã Đàm Thủy; tại xã Đàm Thủy, sông chuyển hướng đông nam. Đến khu vực thác Bản Giốc (xã Đàm Thủy (Việt Nam)/thôn Đức Thiên, trấn Thạc Long, huyện Đại Tân của thành phố Sùng Tả), đường biên giới Việt Nam-Trung Quốc đi từ mốc 53 (cũ) lên cồn Pò Thoong giữa sông rồi đến điểm giữa của mặt thác chính của thác Bản Giốc. Sau đó sông Quây Sơn trở thành đường biên giới tự nhiên giữa Việt Nam (huyện Hạ Lang) và Trung Quốc (huyện Đại Tân). Đến xã Minh Long, Hạ Lang thì sông Quây Sơn chuyển sang hướng tây và đến xã Lý Quốc, Hạ Lang/trấn Thạc Long, sông chảy hoàn toàn trong lãnh thổ Trung Quốc. Sông Quây Sơn sau khi chảy vào lãnh thổ Trung Quốc, vẫn có hướng chính là hướng tây rồi nhập vào sông Hắc Thủy (黑水河) vẫn ngay trên địa phận trấn Thạc Long. Sông Hắc Thủy sau đó lại nhập vào Tả Giang rồi đổ ra Biển Đông tại vùng châu thổ Châu Giang.