Create a single-use discount, print it, hand it to the customer for their next visit.
Scan the coupon (or type the code) before giving the discount in your POS — this is how you know it's real and unused.
Reports, the full coupon ledger, and void controls.