Hi Steven,
1) Yes if the user already has a dnn role a number of days we will add on the new quota to the existing date so they are not losing any days they have access to.
2) No we don't support that.
3) Rather than use coupons I would suggest making gift certificates in your code as we already have a method that will generate a new gift certificate.
a) Manually create a gift certificate group in store admin -> add gift certificate
b) Make a note of the gift certificate group ID, you can get this from the query string when you select to edit the group.
c) This code will make the designed number of gift certificates
GiftCertificateGroup.GenerateGiftCertificates(groupId, numberToMake);
d) Then the below code will lookup the group and get the un-used certificates you can give out in your email:
GiftCertificateGroup group = GiftCertificateGroup.GetGiftCertificateGroup(groupId);
IList<GiftCertificate> certs = group.AllGroupGiftCertificates.Where(x => !x.HasBeenUsed).ToList<GiftCertificate>();