They reached their 277-run target in 46.2 overs.
Lahiru Thirimanne was not out 87, while Tillakaratne Dilshan made 91 and Danushka Gunathilaka 65.
New Zealand lead the five-match series 2-1 with the next game in Nelson on Saturday.
Sri Lanka beat New Zealand by eight wickets in the third one-day international in Nelson on Thursday (31).
They reached their 277-run target in 46.2 overs.
Lahiru Thirimanne was not out 87, while Tillakaratne Dilshan made 91 and Danushka Gunathilaka 65.
New Zealand lead the five-match series 2-1 with the next game in Nelson on Saturday.