1. Home
  2. Knowledge Base
  3. WHMCS
  4. WHMCS – Promotions

WHMCS – Promotions

Promotions can be setup to offer discounts on your Products & Services, Product Addons and Domains. To create a promotion code navigate to Setup > Payments > Promotions.

Types of promotions that can be offered

  • One Time Discounts
  • Recurring Discounts
  • Limited Recurring Discounts (eg. First 2 months free)
  • Monetary Discounts (eg. $5 Off)
  • Percentage Discounts (eg. 20% Off)
  • Price Override (eg. Regular price $10, Discount price $8)
  • Free Setup
  • Apply to Specific Products/Addons/Domain TLDs
  • Apply to Specific Billing Cycles or Registration Periods
  • Apply Once per Order or to All Applicable Items in Cart
  • Lifetime Promotion
  • Valid for New Signups Only
  • Valid for upgrade orders only

How to create a new promotion

  1. Begin by going to Setup > Payments > Promotions
  2. Click the Add New link at the top of the page
  3. You must enter a promotion code – this is the code that customers will need to enter on the order form to receive the discount
  4. You can then choose one of the four promotion types:
    • Percentage – Discounts by a percentage of the original price
    • Fixed Amount – Discount a specified amount from the original price
    • Price Override – Changes the product price to this value. Useful for offering a consistent discount across multiple billing cycles.
    • Free Setup – Discounts any setup fee from the original price.
  5. To have the discount only apply to the first invoice leave the Recurring checkbox unticked. When ticked the discount will apply to renewal invoices. Set the Recur For field to 0 for all future renewals to be discounted or enter a different number to specify how many cycles the discount lasts for.
    • Please note, this is in addition to the initial invoice for the product. So if you wish to provide a discount 6 times, enter 5 in the recurring box.
  6. In the Value field enter the amount of the discount – number only.
  7. Next you need to select what products/addons/domain TLDs the promotion applies to and what billing cycles/registration periods are required for it to be applied – these should match those of your products.
    TIP: Your can Ctrl+click to select multiple entries.
  8. The start and expiration date fields are optional – if filled out, the coupon will only start working after the set date and will stop working at the end of the day chosen. You can use one option or both to achieve the desired effect.
  9. The final 4 checkboxes allow you to specify who can use the promotion:
    • Apply Once – If the client orders multiple qualifying products the discount is only applied once.
    • New Signups – Only new clients can use the promotion.
    • Apply Once / Client – If a client has an existing active order using this promotion they will not be able to use the code a second time.
    • Lifetime Promotion – Client will retain this discount even if they upgrade/downgrade their service in future.
    • Existing Client – Only existing clients with 1 or more active orders can use the promotion.
    • Enable for product upgrades.
  10. In the admin notes section add information pertinent to the promotion.

Please note: the promotion code changes the First Payment Amount when a customer or administrator uses the code while ordering. It does not change the Recurring Amount. If it did automatically update the recurring amount then this would prevent administrators from being able to manually update the recurring amount value when a promotion code was in use.

Instead, the promotion code is used to discount the Recurring Amount automatically on renewal invoices as applicable.

Limiting Usage

With WHMCS, you can set the maximum number of times a promotion can be used. You do this as follows:

  1. Go to Setup > Payments > Promotions
  2. Locate the promotion you want to limit the usage of and click the edit icon next to it
  3. In the Maximum Uses field, enter the number of uses that you want to allow (the number of times that the promotion has already been used will be shown below the field)
  4. For unlimited uses, enter the value zero
  5. Once complete, simply click the Save Changes button


By selecting products from the “Requires” menu it is possible to stipulate which products/services the client must also have in their shopping cart before the discount will be applied. This can be used to offer “buy x get y half price” style promotions.

The “Also allow existing products in account to qualify for promotion” option means that the products the client already owns will be included in the promotion criteria.

For example if the client already owns product x they would be able to use the promo code when ordering product y. With this option disabled the client would need to order both products x and y at the same time to qualify.


Ticking this checkbox means the promo code will be used by the client when placing an upgrade/downgrade order, particularly useful for offering incentives when upselling. When ticked some new options will appear, the intricacies of upgrade/downgrade promotions are explained below:


Select the Products/Services radio option as the Upgrade Type.

The Type, Recurring and Value fields are used as normal to specify the value of the discount and how long it lasts for. The Applies To field is used to select which products the promo code can be applied to – the client will receive the discount when upgrading to this product.

For upgrades/downgrades the Requires field is used slightly different from normal. It restricts which products can be upgraded from – clients can upgrade from Product y (selected) to this product and receive a discount, but not upgrade from Product x (not selected) and receive a discount.

Configurable Options

Discounts can be offered to clients not just for changing product but also configurable options, select the Configurable Options radio option as the Upgrade Type.

Use the Upgrade Discount fields to specify the discount value as a percentage or fixed amount for the configurable options. Then use the Config Options Upgrades menu to select which option this discounts applies to.

If the main Type, Recurring and Value fields are used at the top of the page then as well as discounting the configurable option a discount will also be applied to the parent product. Leave blank to just apply the discount to the configurable option.

Promotion Links

You can give links out to users that will automatically apply a certain promotion code to their order if it applies. To do that, simply use a link like the one below:

cart.php?promocode=TEST OR cart.php?a=add&pid=1&promocode=TEST

Both of the above will apply the promotion code “TEST” to the order. With the first link, the user can choose the package they want and with the second they are taken straight to step 2 of the order process with product id 1 selected.


It is possible when creating a promotion to specify an expiry date, but if you want the promo code to become invalid before this date is reached click the Expire Now link on the Setup > Payments > Promotions page.

A copy of any promotion can be created by clicking the Duplicate Promotion link. Particularly useful for quickly running a successful promotion again or providing a personalised promo code to a client.


Limited Recurring Promotions

The number of recurrences for a Limited Recurring promotion (which are configured using the “Recur For x Times” setting) are counted by looking at the invoice line items related to the service. By looking at the number of invoice line items generated for a service, WHMCS can accurately determine how many times the promotional discount has been applied.

Once all a promotion code’s recurrences have been used for a given service, the service will revert to the standard price automatically.

If you wish to provide an an extension of the promotion, it would be necessary to increase the “Times” setting in the promotion code configuration, this will apply to all existing services using this promo code instantly. Deleting invoices will not extend the duration of the promotional discount.

Was this article helpful?

Related Articles