Discount codes are a feature included in the core Paid Memberships Pro plugin. This post covers some advanced and some not so advanced adjustments and customizations that are commonly used for our discount code features. For general support on discount codes, see our Discount Codes documentation page

Discount Code SEO

If you have at least one discount code created in PMPro, a discount code field will show up on the checkout form.

Having a discount code field on your checkout page encourages customers who may not already know of a discount code to go search for one. If you can spare a small public discount code, it’s a good idea to have a page on your site called “My Site Discount Code” that should surge to the top of Google searches, bringing those customers back to your site. Five dollars, a 5% discount, or more, might be a small price to pay to attract those deal-loving members.

Hide the Discount Code Field

One way to keep people from DCFOMO (discount code fear of missing out) is to hide the field from your checkout page entirely.

Always Show the Discount Code Field

If you’re requiring discount codes for membership checkout, or just have a large percentage of your members using codes during registration, here’s a quick CSS snippet to always show this field at the top of your Membership Checkout page.

One-time Discount Codes

By default, PMPro discount codes can be used by the same user multiple times.

On the Memberships > Discount Codes admin page, you can set an overall number of “uses” for a code, but this number applies to uses across all customers. If you set a code to have 5 uses, that could be 5 different customers or the same customer 5 times.

  • Here is an article explaining how to set it up so that certain discount codes can only be used once by each member. This code won’t keep someone from creating a new account under a different email address in order to use a discount code twice, but we generally advise against trying to block this or any of the stricter discount code checks. You may catch someone taking advantage of your discounts, but you also risk losing members this way or hassling people who are just signing up a friend or relative with their own address or credit card/etc.

Require a Discount Code

Sometimes you might have a membership level that you want to close off from the public.

Group Discount Codes

If you have a large number of people you’d like to give discount codes to, you have a couple options.

  • The first, supported by the core PMPro plugin, is to create one discount code with a set number of uses and email/etc that same code to everyone.
  • The second option is to create an individual discount code for each user. For the second option, you’ll need to use our Group Discount Codes Add on. With this add on, you generate discount codes as usual to control the price adjustment, but then you can generate a list of random one time use codes to apply that discount. This is useful if you are running a promotion via a site like Groupon.

Anything Else?

If you are using PMPro discount codes in a unique way, let us know in the comment.

Or if there is something you are trying to do with discount codes, ask us in the comments and we’ll try to address it in future blog posts. Thanks!

Thanks for this post. I want to create a 6 month delay before a member is billed for a yearly subscription. The Subscription Delays Add on allows this, but you have to specify the delay in days: “# of days to delay the start of the subscription.” There is no option to specify the delay in months. Anyway to change this?


I want to create shareable link where user can click on this link and get some discount in his membership using this shareable link.

Please help on this

Thank you

I would like to assign our discount/promotion codes to different sales representatives. Is there a plugin for a dashboard where sales reps can see when a new member purchases a membership with their code?

I’m looking to offer a discount code that can only be used if they are a specific level or membership.
Is there any way to do this? Right now, anyone can use the discount code and it’s applied no matter what membership they are in or not in.

Is it possible to allow users to apply a discount code to a pro rated amount after they upgrade membership levels?

When I test this, applying the discount code on as I try to upgrade a membership level resets the amount to pay relative to the membership basic price rather than the prorated amount (using the Proration addon).

Thanks, Mike.

HI i want to add a percentage in discount code that is deduced from original membership price.Is it possible?

Attempting to set a coupon expiration date 2 weeks after a member signs up for a free trial to waive 1/2 the application fee. We have a 30-day free trial and at any time they can pay the $49 registration and $49 monthly fee. If they sign up in the first 2 weeks, I want to waive the $49 registration fee.


Discount codes aren’t built in the core plugin to look to a member’s join date and build a discount off that timeframe. You would need a custom filter referencing the member’s level and the date they got that level to adjust the “initial payment” value. If you post to the forums we can help you with that filter.

Hi Jason,

Just stumbled on this thread and think the following question that I recently asked on the Members Support forum is actually more relevant here:


I love the idea of discount codes, but would also like to lock in a discount for the lifetime of a subscription.

Here’s my scenario: We’re launching in a couple of weeks and want to offer a really crazy launch discount for all levels.

Two of the levels have annual subscription renewals. So to make the launch offer even more irresistible, we want to lock in the initial fee that each member with a discount code uses, so that every year they pay only that (or at least the same discount percentage on the current membership fee for that level). But they shouldn’t have to re-enter any new discount code at the point of renewal. And we certainly don’t want to get bogged down emailing new codes when they renew years from now.

Is this possible?”

Another way of putting my questions is: will the discount code settings override the normal level settings also for the recurring subscription?

Secondly, if I don’t specify a subscription delay in the discount code settings, even though it’s specified in the normal level settings, will the subscription for people using the discount code start immediately? This is what I want as their use of the discount code changes the dynamic.

A discount code completely overrides the level’s pricing/subscription/delay/etc. So you should set the discount code up exactly as you want it for that level.

That said, it may be easier to set up a separate level (that you at some point turn off for new registrations) or just modify the pricing of your main level to be that discounted price. If the level has an annual subscription renewal, the member could “opt in” to that using this method:

You can also write custom code to let people “renew at the price they originally paid” that did not opt-in to the auto-renewal. If you’re a member, just open a topic in the member forums and someone will help you out with that.

Is there a way to associate discount codes with the member if they used one? For example sort member list by discount code, or see all users who created their account using a specific discount code?

We have a list of improvements (including this concept) to make for the Discount Codes admin area as well as the filters/reports related to Discount Codes. I will add a “+1” to the action item to filter members that used a specific code. Thanks!

Trying to set up a coupon code to get the first month of a monthly membership free and am striking out repeatedly on what boxes to check. Do I have it set to collect $0 the first month or do I check the trial membership box? I checked the box and tried it and it charged me for the first month upon my test, but I’m afraid if I put $0 it will somehow fudge later payments, even though I have the monthly amount loaded in.

Leave a Reply

For faster support related to issues on your specific site please open a ticket in our members support area.

Your email address will not be published. Required fields are marked *