Issuing Coupons

We use the WooCommerce Coupon function to allow discounts to a group of users/members/entrants and/or products, but there are so many other uses for it. In this guide we will briefly discuss how common coupons are created, as well as a bit of elaboration on additional options.

Unless for promotional reasons it is usually good practice to setup usage limits for tokens, otherwise people will re-use the same coupon multiple times. Evaluate your situation and think about the limits you may need to apply.

Discount coupons

It is often required to give certain people a discount to an event or membership. Coupons codes can then be shared with them to apply a discount during the checkout process.

Navigate to the WooCommerce->Coupons menu entry on the left menu.

Coupon Code

The first field, where we usually specify a page number, will be the Coupon Code; the text you share with people to apply the discount. For promotional discounts use a name that promote your idea, such as “xco-early-bird” or “csa-10%-off”.

Discount Type

It is important to select the correct type. The % options apply a percentage discount to the cart or a specific product. See the use of the Store Credit type in the Refund section below.

From an accounting perspective it is usually better to use product discounts, as a cart discount is not linked to a specific product/event/membership and applies to all the products in the cart. Unless you have a cross cutting income discount account in your general ledger avoid this option (ask your accountant or treasurer to explain).


The amount field is a bit misleading, it is a discount amount or the percentage amount (if a % discount type was selected), without the % sign.

Expiry dates

It is usually a good practice to set an expiry date, even if you only set it to the end of the year. That way we can clean up the system over time, as the coupon list can become quite big.

Usage Restrictions

The restrictions apply the discount to a specific product or group of products (via product categories). Again it is good practice to limit it to the intended events/products. Email restrictions limit the discount to a specific user, but make sure you use the email address stored on the system.

Usage Limits

Here we limit how many times the coupon can be used;

  • Usage limit per coupon: How many times the coupon can be applied to the cart.
  • Limit usage to x items: This prevents the coupon to be used to only a set number of items in the cart. For instance, if you issue a unique coupon it prevents that person to add, say, 10 event entries and the discount gets applied to all of them.
  • Limit usage per user: Ensures that a coupon is only used once (or a limited number of times) per user. For instance, give everyone their first membership for free.

Note that to ensure a coupon can ever only be used once (for one product/entry), set all values to 1. Usage per user is tracked against their website profile and/or email address. All these values are also set to 1 for a Refund (see below).


Since PayFast is unable to apply discount to a credit card transaction once way to effect a refund is to issue a coupon for a subsequent purchase/entry. Use the Send Store Credit tab to make this process easier. First apply the refund on the order and then issue the store credit.

Create coupons in bulk

When multiple unique tokens are required the bulk option can be used. We have used this before to give certain clubs or disadvantaged riders discounts to our events. The tool creates a list of coupons that we store in a spreadsheet so that we can then distribute these coupon codes to riders. We typically use additional columns in the spreadsheet to note who the coupons were sent to.

When using this feature we usually set it up in such a way that each token can only be used once, thus we can control the discounts we

Choose the “Bulk Generate / Import Coupons” tab.
  • Choose “Export as CSV”, as this is most practical.
  • Set the number of coupons to generate.

Under the General tab, set;

  • The same settings as described above, and
  • select “Auto Generation of Coupon” to automatically generate random coupon codes,
  • set “Prefix for Coupon Title” to prefix the random code with something meaningful, such as “2017-XCO-Series-” (note the use of a hypen to separate the human readable bit from the random codes.
  • A suffix can also be applied to the end of the random bit.
 Additional information

Also see the WooCommerce documentation on coupons in general and also the Smart Coupon product we use here. Some videos found on these pages listed below for convenience.

WooCommerce coupon tutorial

WooCommerce Smart Coupon product video: