Coupons let you add discounts to subscriptions by having you apply the coupon to the subscription during its instantiation or when it's already running.
They can be scoped per rate plan, or per product (which is the top-level directory of rate plans). Coupons are also always scoped per currency, even percentage-based ones.
There's two types of discounts: percentage discount and a lump sum discount. If a lump sum discount is larger than the amount that we're discounting, the total will never go into the negative values.
Coupons are applied using the code which you define when you create that coupon, and optionally a random suffix in case of additionally generated codes. If a coupon code can be used directly without the suffix, it's called a master-code redemption. When you create a coupon you can define how many times a coupon can be redeemed. In the case of master-code redemption this will mean that your coupon code can be applied as many times as configured. Regardless of whether master-code redemption is enabled or not, you can always generate additional codes which look like:
"YOUR-CODE" + RANDOM_PART
The redemption limit will also work on those codes as well and will apply per-code.
For example if the code you chose during creation of a coupon was 10OFF and it can only be redeemed 3 times, then you can go to that coupon in BillForward and press 'Generate codes'. Type '2' to generate only two codes, and you'll get two codes that will look something like 10OFFA632A23C . Now each of these two codes can be redeemed exactly 3 times. You can later generate more codes and each will have the same 3 redemptions limit.
You'll also want to configure how long the coupon is working against your subscription, this is done by limiting the amount of periods during which the redeemed coupon is continuing to discount a subscription. If the coupon is applied to a monthly subscription then a limit of 3 will effectively mean that the coupon only works for 3 months of that subscription.