Despite the repeated intervention from the weather, and a century from Marlon Samuels, the West Indies were unable to avoid a series whitewash as they lost the third ODI at Pallekele by 19 runs.
Sri Lanka nearly reached the rain-shortened target of 190, after the Windies made 206 for nine in their 36 overs, but when rain arrived for the final time, the hosts were on 180 for five, so a recalculation saw them win by 19 runs.
The Windies only reached their original score because Samuels almost single-handedly did the job, making 110 not out off 95 balls. Jason Holder had the next best score, 19, as only three batsmen reached double figures.
Four Sri Lanka bowlers took two wickets each as they put on an all-round display despite the numerous rain breaks. Suranga Lakmal was the pick though, taking two for 40 in seven overs.
Sri Lanka's chase was relatively simple after opener Kusal Perera scored 50 off 47 balls, and Tillekaratne Dilshan and Lahiru Thirimanne both added scores of 21.
A string of double figure contributions followed, including a 23 from Dinesh Chandimal and 17 from Milinda Siriwardana. The rain then arrived with 10 runs to go, to frustrate all involved.
But the calculations still kept Sri Lanka ahead, with Angelo Mathews on 27 not out, and Shehan Jayasuriya on 11.
The sides will next play a two-match T20 series, starting on Monday.