Yuzvendra Chahal (3-47) provided the breakthrough, bowling Guptill in the 17th over. At the other end, Nicholls scored a half-century off 72 balls and anchored the innings.
He added 53 runs with Kane Williamson (22), but Chahal struck twice more and Ravindra Jadeja (1-45) removed in-form Ross Taylor (12) for cheap. New Zealand were reduced to 189for four in the 33rd over at that stage.
De Grandhomme took centre stage then and smashed a half-century off only 21 balls. His explosive knock included six fours and three sixes, as his fifth wicket partnership with Jimmy Neesham (19) came off only 31 balls.
India's fielding was lax and failed to build pressure on the Black Caps, an apt representation of their struggles in this series.
This was after Rahul's first hundred at number five helped anchor the Indian innings.
He hit nine fours and two sixes, and rescued India from a precarious 62 for three.
He put on 100 runs with Shreyas Iyer (62 off 63 balls) for the fourth wicket, and later on another 107 runs with Manish Pandey (42 off 48 balls) for the fifth wicket. Hamish Bennett finished with 4-64 from ten overs.
New Zealand had won the toss and opted to field. The hosts made two changes, with Kane Williamson returning from injury. Spinner Mitchell Santner came in for Tom Blundell. India made one change with Manish Pandey included ahead of Kedar Jadhav.
India made another poor start. Kyle Jamieson (1-53) bowled Mayank Agarwal (1), who has suffered a torrid tour of New Zealand thus far. The big blow came when Virat Kohli (9) was out caught at third man in the seventh over.
Prithvi Shaw provided the initial flourish with 40 off 42 balls, but he was run-out going for a suicidal second run in the 13th over.
Iyer and Rahul then anchored the Indian innings. The former batted steadily and reached his half century off 52 balls, his third 50-plus score in this series.
But Iyer couldn't carry on, out caught off Jimmy Neesham (1-50).
It was down to Rahul then, who crossed 50 off 66 balls. His partnership with Pandey progressed well as India reached 250 in the 45th over.
Rahul's hundred came off 104 balls, and he perished in a bid to accelerate. This is where India's innings fell apart, as Pandey also holed out off Bennett shortly afterwards.
Here are the playing 11s of both teams:
New Zealand playing 11: Martin Guptill, Henry Nicholls, Kane Williamson(c), Ross Taylor, Tom Latham(w), James Neesham, Colin de Grandhomme, Mitchell Santner, Tim Southee, Kyle Jamieson, Hamish Bennett
India playing 11: Prithvi Shaw, Mayank Agarwal, Virat Kohli(c), Shreyas Iyer, Manish Pandey, K L Rahul(w), Ravindra Jadeja, Shardul Thakur, Navdeep Saini, Yuzvendra Chahal, Jasprit Bumrah