The 26-year-old signed a new deal at the bet365 Stadium last year, but has only made five starts in the Premier League this season.
"It is an honour for me that Mainz gives me the opportunity to prove myself in another top European league," the Spaniard said in a statement.
"For the time being, this isn't a goodbye to Stoke City, it's just a 'see you soon'. Thank you to the fans for their unwavering loyalty and making me feel so special."
Bojan arrived at Stoke from Barcelona for an undisclosed fee in July 2014, having has also played for Roma, AC Milan and Ajax.