I did some work with a company that used barcodes for just what you want do. The problem was not getting the code cards printed, (in incremental numbers), but the cost of the scanning and reporting devices.
The cards were cheap, as low as .27 for a two sided "Visa" type card with a barcode at the end. When issuing them, the customer data would be entered once, then attributed to the code number.
But when it got to the client side, the cost of the readers were the killer. As I recall, in the $700 for something to read and store the numbers. Then someone had to USB download the data, merge it in a master database, and use a custom ap to parse the data.
In the end, the station used "Peelers" to do their rewards card.