Los codigos generados los almacenas en una tabla (obviamente), donde guardas la fecha de expiracion (y fecha de inicio si es que este dato te sirve) y todos los datos correspondiente a los mismos (como ser el descuento o tipo de promocion).
Dado que algunos codigos solo aplican a ciertos usuarios, imagino que tenes una tabla de usuarios y una tabla de tipos o categoria de usuarios, deberias tener una tercer tabla donde relacione un codigo con cada una de las categorias de usuarios para las que aplica.
Al momento de comprar solo da la opcion de usar un codigo (sin ninguna contemplacion especial), si el usuario tiene 2 codigos y decide usar el que menos beneficios le da es decicion suya (que se joda en pocas palabras).