McCullum struck a historic 302, while BJ Watling made 124 and debutant James Neesham scored an unbeaten 137 as New Zealand declared their second innings at 680 for eight, giving India an improbable 435 runs to chase in little over two sessions of play.
India overcame some anxious moments before finishing at 166 for three in 52 overs as the two captains decided to call off the proceedings with no result in sight.
Virat Kohli smashed his sixth Test century and remained unbeaten on 105, while Rohit Sharma was not out on 31. It turned out to be a disastrous tour for India as they
remained winless, losing the ODI series 0-4 and the Test series 0-1 following their 40-run loss in the first Test at Auckland.
India looked like winning this Test match after reducing New Zealand to 94 for five in their second innings but McCullum staged a remarkable fightback and together with Watling shared a world record partnership of 352 runs for the
sixth wicket to take the hosts to safety.
After Watling's departure, McCullum stitched another crucial 179-run stand with Neesham for the seventh wicket to take the match beyond India's reach.
McCullum's 302 runs overtook Martin Crowe's 299 scored against Sri Lanka, also at the same ground, in 1991 to become highest individual Test scorer for New Zealand.
It was also the third-highest innings by a number five batsman in Test cricket after Michael Clarke's 329 not out against India in 2012 and Sir Don Bradman's 304 against England in 1934.
McCullum's effort is also the second-highest individual score in the second innings after Hanif Mohammad's 337 against West Indies in 1958. Overall he is the 24th Test batsman to hit a triple-hundred, while this is the 28th instance of a
triple-hundred being scored.
Chasing an impossible 435-run target, India lost their top three batsmen in the post-lunch session at the Basin Reserve.
But Kohli stood tall and scored 105 unbeaten runs off just 135 balls with the help of 15 fours and one six) to steady India's ship after they were reduced to 54 for three.
Kohli reached his century in the 49th over of the innings off 129 balls. He made good use of the life he was given in the 13th over in the post-lunch session at the personal score of 23, when umpire Steve Davis had failed to judge an edge off Trent Boult.
Kohli and Rohit put on an unbeaten 112 runs for the fourth-wicket partnership to deny New Zealand any inroads. In the morning session, New Zealand rode on McCullum's historic 302 and debutant James Neesham's unbeaten 137 to declare their second innings at 680 for eight in 210 overs with an overall lead of 434 runs.
Starting at 10 for no loss post-lunch, India had the simple task of batting out two sessions to save the Test. But as has been the story in this tour so far wherein they haven't managed to win a single game, the visitors botched it up.
Openers Shikhar Dhawan (2) and Murali Vijay (7) were dismissed soon after resumption of play. While the former was out in the very first over after lunch, LBW to Trent Boult (1/30) as the delivery hit the top of his pads, the latter
went in the next over, caught at third slip by Corey Anderson off Tim Southee (2/33). Southee added another to his wicket-tally, breaking the 44-run third-wicket partnership between Cheteshwar Pujara (17) and Virat Kohli.
A sharp bouncer kissed Pujara's glove on its way to wicket-keeper BJ Watling, bringing an end to a disappointing tour for him.
Earlier, McCullum struck Zaheer Khan for a four in front of third man to reach the landmark in the 200th over of the Black Caps's second innings at a packed Basin Reserve.
McCullum started the final day of India's tour on 281 not out, needing another 19 runs to get to that magical landmark.At the other end was debutant Neesham (67 not out) as New Zealand started from the overnight score of 571 for six under
It didn't matter much as Neesham cut loose almost immediately, while McCullum was more subdued as he took his time.
Neesham struck six lusty boundaries early into the day's play and reached his maiden Test hundred in the 199th over of the innings, facing 124 balls and hitting 15 fours.
But the main focus was on McCullum, who joined that exclusive 300-run club in the next over as the entire stadium stood on its feet to salute the historic knock.
McCullum, however, didn't last long thereafter, edging one to Doni off Zaheer. He faced 559 balls and struck 32 fours and four sixes during his monumental innings. Two overs later, Zaheer completed his five-wicket haul, as Tim Southee (11) gave a skier to Cheteshwar Pujara.
It was the first time in his 92-Test career that Zaheer had bowled 50 overs in a single innings. New Zealand didn't declare as anticipated and carried on for a while longer, even as India put on their part-timers. In the end, the Black Caps reached their highest Test innings total overtaking their effort of 671 for four against Sri
Lanka in 1991, also at Wellington.
Neesham stayed unbeaten on 137, the highest individual score by a batsman on debut batting lower than number seven, beating Azhar Mahmood's 128 not out against South Africa in 1997. It was also the highest runs scored by a New Zealand
batsman on debut, beating Scott Styris' 107 against West Indies in 2002.
For India, Zaheer was the highest wicket-taker in the innings with a haul of five for 170. Mohammad Shami (2/149) and Ravindra Jadeja (1/115) also picked up wickets, while Ishant Sharma (0/164) saw the other side of the coin after
picking his career-best figures in the first innings.
Rohit Sharma (0/40), Virat Kohli (0/13), Mahendra Singh Dhoni (0/5) and Shikhar Dhawan (0/3) also sent down some overs in this innings.