Fly ash washing wastewater was carbonated with carbon dioxide (CO2) to remove calcium (Ca) by forming a calcium carbonate (CaCO3) precipitate. An investigation of the factors affecting carbonation showed that Ca removal was highly dependent on the initial pH of the wastewater. The Ca removal was 10%, 61%, 91% and more than 99% at initial wastewater pH levels of 11.8, 12.0, 12.5 and 13.0, respectively. The optimal conditions for carbonation were initial pH of 13.0, carbonation time of 30 min and CO2 flow rate of 30 mL/min. The Ca concentration in the wastewater decreased to <40 mg/L, while 73 g of CaCO3 precipitate was produced per liter of wastewater. However, heavy metals, specifically Pb and Zn, co-precipitated during carbonation, which resulted in a CaCO3 product that contained as much as 0.61 wt% of Pb and 0.02 wt% of Zn. Activated carbon modified by a quaternary ammonium salt was used to selectively adsorb the Pb and Zn first. The Pb- and Zn-free water was then carbonated. By combining adsorption with carbonation, the Ca concentration in the treated wastewater was decreased to about 28 mg/L, while the Na, Cl and K were retained. The wastewater thus treated was ready for NaCl and KCl recovery. In addition, the precipitate had a Ca content of more than 38 wt% and almost no heavy metals. The average particle size of the precipitate was 47 μm, with a uniform cubic shape. The quality of the precipitate met the requirements for the industrial reuse of CaCO3. In summary, adsorption and carbonation combined were able to remove pollutants from wastewater while recovering useful resources.