Discount codes change the price of a membership level at checkout. A code can set custom pricing for each level it applies to, or take a percentage or fixed amount off each level’s regular pricing.
Add or Edit a Discount Code
- Navigate to Memberships > Settings > Discount Codes in the WordPress admin.
- Click Add New Discount Code (or select “edit” on an existing code).

- Fill out the following for the “General Discount Code Settings“:
- ID: Auto-generated, internally tracked ID (not public).
- Code: The value of the code members can enter at checkout (public). Codes can include letters, numbers, and hyphens.
- Start Date: The date you want the code to begin working.
- Expiration Date: The date you want the code to expire / stop working.
- Limit Total Uses: The maximum number of times the code can be used across all users. Leave blank for unlimited uses.
- Limit Per User: Check the box to restrict the code to a single use per unique user.
- Discount Type: How the code changes pricing. Choose Set custom pricing per level, Percentage discount, or Fixed amount discount. See Discount Types below.
- Discount Amount: Shown for percentage and fixed amount codes. The percentage or amount to subtract from the level’s regular pricing at checkout.
- Applies To: Shown for percentage and fixed amount codes. Check Initial payment, Recurring payments, or both.
- In the “Membership Level Settings” section, select which level(s) the code should apply to. Use Select All or Deselect All to change every level at once. If the code uses custom pricing, each selected level shows its own pricing fields. Jump to “Set Custom Pricing per Level” for those fields.
- Click Save Code.

Discount Types
The Discount Type setting decides what a code can change.
| Discount Type | What the code changes | What comes from the level |
|---|---|---|
| Set custom pricing per level | Everything about the price for each level you select: initial payment, recurring subscription, billing amount and cycle, billing cycle limit, first recurring payment, custom trial, and membership expiration. | Nothing. The code’s settings replace the level’s settings completely. |
| Percentage discount | Takes a percentage (0 to 100) off the initial payment, the recurring billing amount, or both. | Billing cycle, billing cycle limit, trial, first recurring payment, and expiration. |
| Fixed amount discount | Takes a fixed amount, in your site’s currency, off the initial payment, the recurring billing amount, or both. | Billing cycle, billing cycle limit, trial, first recurring payment, and expiration. |


A few things to know about percentage and fixed amount codes:
- The discount is calculated at checkout from the level’s current pricing. If you change a level’s price later, the code follows it. Edit the level to change its regular pricing.
- Initial payment discounts the level’s Initial Payment. Recurring payments discounts the level’s Billing Amount, and only on levels with a recurring subscription. A trial amount is never discounted.
- A discounted price never goes below zero. A 100% discount, or a fixed amount larger than the price, makes that payment free.
- The code uses the level’s billing cycle, billing cycle limit, trial, First Recurring Payment, and expiration settings, including any date pattern. See Date Patterns.
- When you save a code with one of these types, the per-level pricing fields are ignored. Any custom pricing, First Recurring Payment, or expiration date saved on the code for a level is replaced.
Set Custom Pricing per Level
With Set custom pricing per level, the code’s pricing completely overrides the default pricing for the membership level. Setting it up is very similar to the Membership Level’s pricing setup.
Select which level(s) the discount code should be applied to. Once selected, additional fields will show. When you add a level to a code, its fields start with the level’s current settings, and you can change any of them.
Fields include:
- Initial Payment: The initial amount collected at registration.
- Recurring Subscription: Check This level has a recurring subscription payment. to bill the member on a recurring basis.
- Billing Amount: The amount to be billed one cycle after the initial payment, and how often it is billed.
- Billing Cycle Limit: The total number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. (Set to zero if membership is indefinite.)
- First Recurring Payment: When the first recurring payment happens. Choose Default (one billing cycle after checkout), After a number of days, or On a specific date.
- Custom Trial: Check Add a custom trial period. and set the Trial Billing Amount and how many subscription payments it covers. This option shows when your payment gateway supports recurring trials.
- Membership Expiration: Check Set when membership access expires. to choose an Expiration Type: After a set duration (a number of hours, days, weeks, months, or years after checkout) or On a specific date.
First Recurring Payment and a specific expiration date use date patterns. See Date Patterns for the options and examples.

Discount Codes Admin Page
Navigate to Memberships > Settings > Discount Codes in the WordPress Admin. This screen shows a list of your existing discount codes. You can click on a table heading to sort data by that column, use the search field to find a specific code, or filter the list.
Here is the default data included in this table:
- ID: Unique identifier for each discount code.
- Code: The actual code that customers can use to apply the discount. Percentage and fixed amount codes also show a short description under the code, such as “20% off initial payment, recurring payments”.
- Starts: The date when the discount code becomes active and can be used.
- Expires: The date when the discount code becomes invalid and can no longer be used.
- Uses: Indicates the number of times the discount code has been used, followed by the maximum number of uses allowed. For example, “1/unlimited” means the code has been used once and can be used an unlimited number of times.
- Levels: Specifies the customer levels or tiers to which the discount code applies. It may include categories like “Bronze,” “Silver,” “Gold,” etc.

Additionally, the table row provides some actions that can be performed on each discount code:
- Edit: Allows editing the details of the discount code.
- Copy: Creates a copy of the discount code, duplicating its settings.
- Delete: Removes the discount code from the system.
- Orders: If the discount code has any associated orders, you will see a link to view that list of orders.

Filter the Discount Codes List
Click Filter Results above the table to open the Filters panel, choose your options, and click Apply Filters. A number on the button shows how many filters are active. Click Clear Filters to reset the list.
- Status: All Statuses, Current (today is between the code’s start and expiration dates), Upcoming (the start date is in the future), or Expired (the expiration date has passed).
- Usage: All Usage, Unused (never used), Used (used at least once, including codes that are used up), or Used Up (the code has reached its Limit Total Uses). A code with unlimited uses is never used up.
- Level: All Levels or a single level. The list shows codes that apply to that level.
Filters combine with each other and with the search field.

You can add additional data columns to the Discount Codes List using the method outlined in this article.
Get Support From Our Team of Experts
Have a question about how to use this feature? Our Support Page outlines three ways to get support.
Our Max plans include hands-on help customizing your membership site and implementing new features. Upgrade to PMPro Max now »
Last updated on October 30, 2026

