Clean up refunds

Thanks to @rclai for setting this up. Refunds work with partial or full
amounts, metadata, and subscriptions. The whole deal works great.