NoSQL will bring it's own set of issues right? Too flexible of a system with no built in Validations would mean that they need to be handled somewhere else. If we take the example in the post, refund should not precede awaiting payment, If a new status gets added, it becomes easy to know where the migrations have to be run and in NoSQL, either we write something custom or handle it each time the document is called.
I mean, you shouldn't be throwing shit at the DB and seeing what sticks, but why not have the absolute source of truth also be the validator? CHECK constraints are fairly cheap.