Zimbabwe's batsmen, led by opener Chamu Chibhabha and allrounder Elton Chigumbura, gave it a reasonable lash before folding meekly to be all out for 154.
McCullum should have been gone in the second over, plumb lbw to lively Kyle Jarvis. Instead he belted his way to 64 off 37 balls while Guptill reached 67 from 46 and Jesse Ryder hit a quick unbeaten 30.
Chibhabha clubbed five sixes in his 39-ball 65; Chigumbura hammered a brisk 39. Even though the last four wickets fell in successive deliveries - two to seamer Doug Bracewell and two run outs - Zimbabwe got closer than would have been expected.
"If they [Chibhabha and Chigumbura] had kept going another two or three overs things could have been different," Taylor added.
"When you're chasing over 10 an over you have to come hard and it can go either way - either be all out for 100 or get close and I thought this was probably a lot closer than the 30 runs we ended up winning by. Zimbabwe showed a lot of fight."
Some of the New Zealand bowling was distinctly ordinary, but there was a maiden international wicket - captain Brendan Taylor's - for new-ball bowler Graeme Aldridge on debut, and three for offspinner Nathan McCullum.
The ODI series starts on the same ground tomorrow night.
* Bowler Tim Southee will not travel to Zimbabwe for the solitary test as he is still recovering from a knee injury.