The E-shop module now has such feature as promo codes: Control Panel -> E-shop -> Discount systems.
If I remember correctly there is an option to allow the code to be reusable. I will confirm tomorrow morning once I have access to the module to consolidate this support.
Jack of all trades in development, design, strategy.
Working as a Support Engineer.
Been here for 12 years and counting.