For simple ones, using existing functionality. Some complicated ones I just use hook. The goal for validation is not saving data if it didn't pass. So callback isn't ideal as it is not some kind event chain I can break.
Would it be possible to add pagination for "Manage Your Purchases" page?
When as user have many purchases, this became a giant page since it displays everything that the user have purchased.