McCullum, whose highest test innings is 225 scored against India in 2010, was last man out for 224 when attempting to slog another six to add to the five in his 307-ball innings.
McCullum's innings was the highest by a New Zealander at Eden Park and fourth highest overall. England's Wally Hammond scored 336 not out on the ground in 1933.
The New Zealand captain had brought up his double century on the final ball of the morning session with his 28th boundary and upped the run rate after the break.
Legspinner Ish Sodhi, who had been 18 not out at lunch, added five runs to his total before he became Ishant Sharma's fifth wicket when Rohit Sharma held a good catch in the slips to end a valuable 56-run partnership with McCullum.
Neil Wagner was well caught by Virat Kohli at slip for a duck off left-arm spinner Ravindra Jadeja before McCullum was well caught by Jadeja on the boundary to give Sharma his sixth wicket of the innings.
New Zealand had resumed on 329 for four with McCullum (143) and aggressive all-rounder Corey Anderson (42) picking up where they left off on Thursday by scoring at almost four runs an over.
Anderson had moved to a breezy 77, his first test half century, before being trapped lbw by Sharma, ending a 133-run partnership.
Wicketkeeper BJ Watling (1) became Sharma's fourth victim on the first ball after the drinks break when he drove at a wide delivery and was snapped up by Shikhar Dhawan in the slips.
Pace bowler Tim Southee provided an entertaining, quick-fire 28, which included three boundaries and two sixes, before being bowled by Mohammed Shami.
McCullum and Kane Williamson had rescued New Zealand's innings on the first day with a 221-run stand after India had exploited the green drop-in pitch and overcast conditions to reduce the hosts to 30 for three.
(Reporting by Greg Stutchbury in Wellington; Editing by Ian Ransom)
