Our Proration Add On automatically adjusts the initial payment for members who upgrade or downgrade membership while keeping their existing subscription payment date.

View the Add On


Some background on proration.

By default, Paid Memberships Pro does not calculate prorated payments. We made this decision because “prorated” means something different to everyone. This add on offers the basis for proration at membership checkout and can be further customized to fit your specific site needs.

In short, this add on calculates what percent of the member’s current subscription payment remains and then credits that against the new level’s initial payment.

If you have a different proration need or upgrade/downgrade payment concept, please open a topic in our members forum and we will help with the right hooks/filters and custom code for your project.


How it Works

When a member chooses to upgrade, they are charged a pro-rated amount for the new membership level immediately and the member’s current payment date is maintained. When a member chooses to downgrade, the initial payment is $0 and the downgrade is delayed until the next payment date. The member’s current payment date is maintained.

Downgrades are defined as having an initial payment less than the current level, but can be altered via filters. It assumes that the level’s initial payment is equal to billing amount.

Sample Proration Cases Covered by this Add On

Case Day of Billing Cycle Amount Charged
Member Upgrades from $5/mo. plan to $10/mo. plan Day 15 (1/2 into cycle) $2.50
Member Upgrades from $250/yr. plan to $500/yr. plan Month 3 (1/4 into cycle) $312.50
Member Downgrades from $10/mo. plan to $5/mo. plan Day 15 (1/2 into cycle) $0.00*
Member Downgrades from $500/yr. plan to $250/yr. plan Month 3 (1/4 into cycle) $0.00**

Sometimes the calculation results in a negative amount but the system currently has no way to do a credit.
(* $2.50 credit, ** $312.50 credit)


Installation

  1. PMPro Plus members can install the add on via their WordPress dashboard under Memberships > Add Ons.
  2. Or, download the plugin .zip file and upload the ‘pmpro-proration’ folder to the ‘/wp-content/plugins/’ directory.
  3. Activate the plugin through the ‘Plugins’ menu in WordPress.

How It Calculates the Prorated Amount (for those technical folks)

The system considers two factors:

  • (a) What they should pay for new level = $level->billing_amount * $per_left.
  • (b) What they should have paid for current level = $clevel->billing_amount * $per_passed.

The user is charged what they need to pay = (a) + (b) – (what they already paid).

If the number is negative, this would technically require a credit be given to the customer, but we don’t currently have an easy way to do that across all gateways so we just 0 out the cost. (Initial Payment = $0).

An alternative calculation that comes up with the same number (but may be easier to understand) is:

  • (a) What they should pay for new level = $level->billing_amount * $per_left.
  • (b) Their credit for cancelling early = $clevel->billing_amount * $per_left.
  • What they need to pay = (a) – (b)

Limitations

One known limitation of this code is if a member upgrades twice within one pay period. Only the last payment will be considered when calculating the prorated amount due. This could be handled by summing the total of all orders within the pay period, but we have not used this method as it could also cause conflicts on sites that have multiple unrelated orders (when using Addon Packages or similar price-adjusting customizations). Additionally, payments on edge dates might be accidentally included or not included in the sum.

Tagged . Bookmark the . Last updated: .