$order->dateOrdered returns a string value the first time and DateTime after that. [Order got through event]
The problem was occurring because the order was retrieved through the EVENT_AFTER_ORDER_PAID event. Therefore, the dateOrdered was still not processed (passed through mutations). 

What we ended up doing is using $event-&gt;sender only to know what order we are looking for and then retrieve the order anew.

I hope this saves someone's life someday! I'll mark this question as solved in 2 days.