How to verify offline progress?

As the title says I want the player to able to play offline. I want to verify that progress online though, since its a free to play mobile game with in app purchases.

My idea was to store some kind of “actions history” and upload it when possible. Then I would check if the progress the player made offline seems legit and legitimize the rewards the player claimed.
This all sounds good until the player hacks this history file.

How would you normally handle this? Is cheat-proof offline progress even possible?