Exclude billing fields from some membership levels at checkout.

Our Capture Name and Address for Free Levels or for Offsite Gateway Add On allows you to collect billing fields for a free level or for paid levels when using with an offsite payment gateway like PayPal Express.

This code recipe demonstrates how hide those additional billing fields for a specific Membership Level ID.

This page requires a Plus Account or higher.

Already have an account?

Log In

New to this site?

Register Now

Send members an additional invoice via email after Membership Checkout

Paid Memberships Pro emails a membership invoice for all recurring or renewing membership subscriptions. This email is not sent after the initial membership checkout because all of the relevant invoice details are included in the Membership Confirmation email. If you’ve customized the Confirmation email and removed invoice details, you may want to send a separate invoice email using the recipe below.

This page requires a Plus Account or higher.

Already have an account?

Log In

New to this site?

Register Now

Allow Members to select Country and State via dropdown at Membership Checkout [New Plus Add on]

Simplify sign up and improve data quality by adding a Country and State dropdown selection field to your Checkout Page with the State Dropdown Add on.

View the State Dropdown Add On

How it Works

When the plugin is activated, two dropdown selection fields “Country” and “State” will be automatically added to your checkout form in the Billing Address section. When a user selects a Country, they will then be able to select the appropriate State of the Country that was selected.


When a member selects the Country of their choice, they will be able to select the appropriate States that is relevant to the chosen Country.

United States dropdown selection
United Kingdom dropdown selection

PMPro Plus members can install the add on from the Memberships > Add Ons admin page or download the plugin and manually upload to your WordPress site.

View the State Dropdown Add On


Discount Code Customizations Mega Post

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!

Some reasons why a valid credit card is rejected at membership checkout or membership renewal

We occasionally hear that a customer cannot complete checkout on their site using a valid credit card. The card is declined at checkout, or the card is declined when a recurring payment is processed. In some cases, the site owner can process the card directly through the virtual terminal, so its clear the card is valid. So why is the payment gateway rejecting the card?

“Risk Models”, credit card companies and your payment processor.

Credit card companies have “risk models” that will reject payments for various reasons. One common one that comes up is when the initial payment is much lower than the renewal payments. So something like $5 now, then $100/year. Credit card companies and payment processors use complex algorithms that determine whether a payment should succeed or fail, even if the card is valid and all the “checks” are good (card number, CVV, name, billing address, etc.) There aren’t any hard fast rules, but one case we’ve seen is having a higher recurring amount, which makes it a bit more likely to be denied and could tip the scales.

So what can you do about it?

There are factors on the customer’s side that you don’t really have control over. Some of these include:

  • Has the account have been compromised (fraud alert) in the past?
  • What is their current credit score?
  • What are their average monthly purchases? What percentage of this is for online sales?

One uncontrollable factor on the merchant side (that’s you) is a kind of “business score” that the credit cards keep secret. This is a factor you don’t have that much control over either.  Keep this rating healthy by processing refunds and chargebacks quickly. As long as they are low (> 5%) there shouldn’t be problems.

So, what should you do when you are dealing with a customer that really wants to give you money, but for some reason their card is denied?

One thing that I’ve heard helps is to have the customer call their credit card company and say

“I’m trying to make a charge at YourBusiness.com/etc and it’s coming back denied.”

The credit card company will sometimes be able to do something so that transaction can go through one time. This act can increase that hidden business score, hopefully reducing the possibility that a similar checkout situation is rejected in the future.

Sometimes, the payment gateway (we know for sure this is true of PayPal and Stripe) will have extra information in their logs about why something was denied. So try calling your gateway and ask for details on the failed transaction (it helps to have the last 4 digits of the customer’s card number if they are willing to share this with you). But usually there isn’t that much more information.

If you’ve mediated a similar situation on your own site and have any words of wisdom, please post in the comments below. I’m interested to hear about other cases where a valid card has failed – any what steps you took to resolve it.

Change the PayPal Button on Membership Checkout

If you’d like to use a different PayPal button at checkout, below is a code recipe and links to the buttons available through PayPal.

Button Options offered by PayPal

Check out with PayPal

Check out with PayPal
Check out with PayPal
Check out with PayPal

/* Large */
/* Medium */
/* Small */

Buy now with PayPal

Buy now with PayPal
Buy now with PayPal
Buy now with PayPal

/* Large */
/* Medium */
/* Small */

See all PayPal Buttons or visit the PayPal logo center for more options

Or, create your own.

You can also create your own PayPal button and host it on your own website, just make sure you load it over the https protocol if you are using SSL on your website.

Check out with PayPal

/* Custom */

The Filter

This recipe uses the pmpro_paypal_button_image filter. Update line 7 of the code recipe to either the desired PayPal logo URL or the URL for the custom button you created.

Copy and paste this code recipe into a helper PMPro Customizations plugin.

See all hooks and filters

What we’re working on: Revamping the Plugin-generated Pages

Just wanted to shoot out an update on some new development we are working on for Paid Memberships Pro. If you have feedback or ideas, please post in the comments.

Table-free Membership Checkout and Billing Information Page

The default Membership Checkout and Billing Information pages (displayed when using the [pmpro_checkout] and [pmpro_billing] shortcode) currently use a table layout (this was standard for WP forms years ago). We’re recoding these templates to use a div layout. This will make the checkout page more accessible and more responsive and “device-friendly”.

We’ll provide an add on that “falls back” to the old templates should you wish to continue using the previous design.

Table-optional Membership Levels Page

The default Membership Levels page (displayed when using the [pmpro_levels] shortcode) currently displays in a table layout. We’re planning to offer both table and div style layout as an attribute of the shortcode. For more options to customize the levels display, see the Advanced Levels Page Shortcode Add On.

Redirect Away from Checkout if User Doesn’t Meet Membership Requirements

We’ve blogged previously about requiring a specific level to allow registration for another level. In that post, the registration check occurs after the user submits the checkout form. This new code gist immediately redirects away from the checkout page if the user’s current membership level is not ID = 1 or is unset.

Again… why would I want to do this?

As I said in the previous post, some membership sites have a specific workflow for membership. For example, if you have a fitness website with phases of training, you’d want to make sure your customers move through your program in the right order.

This page requires a Plus Account or higher.

Already have an account?

Log In

New to this site?

Register Now