Your solution sounds like it would work okay, you may just want to close a few loopholes that users can exploit.
For example, the flexi cart reward points feature can protect the store from issuing reward points for purchases made by customers, to which the customer then returns the item for a refund, but has still earned the reward points.
The library does this by allowing a storewide return policy time period to be defined, reward points are then only issued to customers that do not return items within this time period.