The visitors won by 140 runs, dominating the match from the start and scoring 290 for eight in their 50 overs, before bowling out New Zealand for just 150.
The result was a massive turnaround for the Sri Lankans, after they were heavily beaten by New Zealand in the first two matches of the series.
Batting first after winning the toss, Sri Lankan opener Pathum Nissanka quickly got into his work, with a powerful display of ball striking.
He top-scored with a swashbuckling 66 from just 42 balls, hitting six fours and five sixes.
Kusal Mendis (54) and Janith Liyanage (53), were the other two Sri Lankans that hit half centuries, also at better than a run a ball.
The Black Caps' bowling line-up not only found getting breakthroughs more difficult than in the first two matches, but also keeping the Sri Lankans scoring rate in check.
But the host's run chase never got going, with opening bowlers Asitha Fernando (named player of the match) and Maheesh Theekshana ripping through the top order.
They had the Black Caps reeling at 21 for five inside seven overs, with Mark Chapman the only batter to put up any resistance. He finished with a fine 81 off 81 balls, before being the last man out.
Fernando, Theekshana and Eshan Malinga all finished with three wickets each for Sri Lanka.
The result was a disappointment for New Zealand captain Santner: "Probably not the way we wanted to finish the series," he told TVNZ.
"Credit to Sri Lanka for putting a score on the board, we thought was around par on a pretty good wicket.
"Then I guess the way they bowled at the start challenged us early, and it was pretty tough to come back from that."
Despite the loss, New Zealand still won the series 2-1, with Henry named player of the series for taking nine wickets in the three matches.