Proration ensures that customers pay fairly when switching plans mid-cycle. DMSI Subscriptions Pro supports two proration calculation methods.
📌 What This Extension Adds: The proration engine is entirely provided by Subscriptions Pro. Both calculation methods, the proration preview, and the prorated order creation are Subscriptions Pro features.
Proration Methods #
Two methods are available, configurable at DMSI → Subscriptions Pro → General tab:
Method 1: Full Period (full_period) #
The current period is treated as a single unit. The customer receives a full refund credit for the current period and is charged the full price of the new plan for the next period.
Formula:
“ Proration charge = New plan price − Current plan price
`
This method is simple and predictable but can result in larger charges for mid-cycle upgrades.
Method 2: Daily Rate (daily_rate) #
The proration is calculated based on the number of days remaining in the current billing cycle.
Formula:
`
Days remaining = Billing end date − Today Days in period = Billing end date − Billing start date Daily rate (old plan) = Old plan price ÷ Days in period Daily rate (new plan) = New plan price ÷ Days in period Credit for unused days = Days remaining × Daily rate (old plan) Charge for remaining days = Days remaining × Daily rate (new plan) Proration charge = Charge for remaining days − Credit for unused days
`
The daily_rate` method is the default and is generally preferred as it accurately reflects the value exchanged.
Proration Preview #
When the customer selects a new plan in the portal, a proration preview is displayed before confirmation. The preview shows:
- Current plan and price
- New plan and price
- Calculation breakdown (days remaining, credit, charge)
- Total charge today
- Next renewal date and amount (unchanged)
Negative Proration (Downgrade Credits) #
If a customer downgrades, the proration may result in a negative value (a credit). This credit is applied to the next renewal invoice rather than refunded to the payment method.
Proration Rounding #
All monetary values are rounded to 2 decimal places using the WooCommerce currency rounding rules.
