The left-handed opener struck 116 off 109 balls and Tillakaratne Dilshan joined the 10,000-run ODI club as Sri Lanka piled up their highest one-day total against Pakistan of 368-4 in 50 overs.
Pakistan managed only 203 in reply, but took the series 3-2 to build on their 2-1 success in the preceding Test series, clinching a double in Sri Lanka for the first time since 2006.
Pakistan were sailing at 116-2 in the 20th over following an opening partnership of 51 between skipper Azhar Ali and Ahmed Shehzad, before the last eight wickets crashed for 87 runs.
Mohammad Hafeez (37) and Azhar (35) were the principal contributors as the tourists faltered badly under lights despite good batting conditions.
Off-spinner Sachithra Senanayake claimed 3-39 in his first appearance in the series, while seamer Thisara Perera chipped in with two wickets.
Kusal reached his second century after a 164-run stand for the first wicket with Dilshan, who became only the 11th batsman and the fourth Sri Lankan to compile 10,000 one-day runs.
Skipper Angelo Mathews hammered an unbeaten 70 and Milinda Siriwardana clubbed 52 not out off 26 balls as Sri Lanka plundered 136 runs in the last 11 overs to surpass their previous best against Pakistan of 349-9 in Singapore in 1996.
Kusal, whose only other one-day ton came against Bangladesh last year, smashed nine boundaries and four sixes before he was run out in the 34th over.
The flamboyant Dilshan reached the 10,000-run landmark in his 319th match when he took a single off Shoaib Malik to move to 55, before he was run out for 62.
The 38-year-old now has 10,007 runs, joining compatriots Kumar Sangakkara, Sanath Jayasuriya and Mahela Jayawardene in a coveted list headed by Indian great Sachin Tendulkar, who had 18,426 ODI runs.
Mathews and Siriwardana added a brisk 114 off just 55 deliveries for the undefeated fifth wicket to complete Sri Lanka’s best batting display of the series.
Mathews hit eight boundaries and two sixes, while left-handed all-rounder Siriwardana smacked four fours and three sixes.
The hosts made three changes from the last match, dropping sling-arm fast bowler Lasith Malinga, seamer Nuwan Pradeep and Sachith Pathirana.
They were replaced by Senanayake, Thisara Perera and fast bowler Lahiru Gamage. Pakistan retained the same team.
Pakistan will round off their six-week tour with two Twenty20 Internationals in Colombo on July 30 and August 1.