We have updated the Pay by Check Add On to support recurring subscriptions. The add on notifies a “check paying” member when a membership fee is upcoming, past due, or their has been membership terminated for non-payment (based on your level configuration settings). Members with a premium license can download the updated Add On here.

What does “recurring subscription support” mean?
Previously, the Pay by Check Add On only officially supported check payments on levels with one time payments (just an initial payment). If a level was set up with a subscription/recurring payment, the membership would be given with no end date. It assumed that the site administrator or membership manager would specify a member’s end date or add the recurring payments manually.
Now, if someone checks out for a level using the pay by check option, there are a few daily cron jobs that will create new “pending” orders for recurring payments and email a notice to the member that a new check payment is due.
Getting Started with the New Pay by Check Add On (v.5)
- Activate PMPro and the Pay by Check Add On (v.5).
- In the Memberships > Payment Settings tab, select “Check” from the “Payment Gateway” drop down. Set up the check payment instructions. Save.
- In the Memberships > Payment Settings tab, select the your desired default payment gateway. Save. (The non-check gateway should be chosen as the gateway on the payment settings page. Your settings for the check gateway, specifically the payment instructions, will be saved in the background for when the check gateway is used.)
- Create a recurring level as you normally would. Set the initial payment and subscription.
- Do NOT set an end date for the level (unless you want to cut the membership off PERMANENTLY after a certain amount of time). The system will cancel memberships for members who fail to pay within the time limits.
- In the Pay by Check settings, choose “Yes. Users can only pay by check.” or “Yes. User choose between default gateway and check.”
- If you have chosen “Yes” for offering the pay by check option and the level is recurring, then there will be 3 other settings to enter.
- Send renewal emails __ days before renewal.
- Send reminder emails __ days after a missed payment.
- Cancel membership __ days after a missed payment.
- That’s it! Save the level.

With these settings, the option to pay by check will show up at checkout. When a user checks out, their order will be in “pending” status until an admin changes it to success (e.g. after the check clears).
While the order is in “pending” status, the default content filters in PMPro will deny the new customer access to member content. Some content will be unavailable to them. Depending on your theme and other settings on your site, other content may be available to the customer since they are still considered a “member”. Technically, the pmpro_has_membership_access filter will be returning false, but calls to pmpro_hasMembershipLevel() will return true. If you need help tweaking your site to show or hide certain content from pending pay by check members, our support team can help you to develop the custom code.
Examples
Here is a typical examples to help you to figure out how the new recurring subscriptions work with the Pay by Check Add On.
One membership level at $100 per year.
Say you have one membership level that is $100 per year. The level is setup with an initial payment of $100 and recurring payments of $100 per year. You use Stripe and have activated the Pay by Check Add On and set it up to offer paying by check as an option at checkout. You’ve set the renewal, reminder, and cancellation settings to 5, 5, and 25 days respectively. Here is how this might play out for your customers and admins.
- It’s Monday November 23rd, 2015.
- Sally Customer visits the site and chooses to checkout for the annual membership level.
- Sally chooses the “Pay by Check” option and checks out.
- The confirmation page and confirmation email both contain the “instructions” text from the Check gateway settings.
- Sally sends in her check. In the meantime, she shows up in members lists but has limited access to content on the site.
- About a week later, the check arrives, is cashed, and clears. An admin edits Sally’s order and sets the status to “success”.
- 5 days before the renewal date (11/18/2016) a new pending order is automatically created for Sally, and an email is sent to Sally reminding her to send in a check for this years membership.
- If that order is not changed to “success” status by 5 days after the renewal date (11/28/2016), Sally is sent a reminder email.
- If the order is still not changed to “success” status by 25 days after the renewal date (12/18/2016), Sally’s membership is cancelled and she is sent the normal cancelled membership email.
The Settings are Sensitive
There are a few known edge cases, where the settings can be confusing to the system. We are working to detect these and either handle them how you would expect or point out when the settings don’t make sense. For example:
- If you are using the Pay by Check Add On and the Add PayPal Express Add On, two different boxes are added to the checkout page to choose between paying by “Credit Card or Check” and “Credit Card or PayPal”. We are planning to update one or both of the plugins to detect this case to show one box with all 3 options.
- If your setting for “Cancel membership __ days after a missed payment.” is lower than the “Send reminder emails __ days after a missed payment.” or these values are too close together, users may get confusing emails. For example, they could get the reminder before the initial invoice goes out. Or they could have their membership cancelled before the reminder goes out. Make sure the timing of these dates makes sense and leaves enough room between emails for your members to act.
Hang in There!
Remember, this was a large update with some changes that might even affect sites that aren’t using the Pay by Check add on for levels with a recurring subscription.
If you run into any issues, please notify us immediately in the member forums or by posting an issue on GitHub.
Once things look stable after a week or so, we will push the new version to the update server for existing users.