Bug Reports
Open

Prorated mid-cycle charge that keeps the existing renewal date

We sell a base subscription with add-ons (extra user and vehicle packs) that customers can add part-way through a billing period. On annual plans we need to charge for an addition right away and keep the customer's renewal date.

Today every change-plan mode that charges now (prorated_immediately, difference_immediately, full_immediately) restarts the billing cycle from the moment of the change. do_not_bill keeps the renewal date but charges nothing until renewal. So a customer who adds a 5-user pack in month 4 of an annual plan either:

  • has their renewal date moved by four months and pays for a full new year on the spot, or
  • gets the pack free until renewal.

Neither is what the customer expects. Most subscription billing systems handle this the same way: charge only for the time left in the period, and leave the renewal date alone.

Request: a proration mode for change-plan (for example prorated_immediately_keep_cycle) that:

  1. charges the prorated difference for the rest of the current period straight away,
  2. keeps next_billing_date unchanged, and
  3. puts that charge on the subscription's invoice and payment history.

The same option in the plan-change preview endpoint would let us show customers the exact amount before they confirm.

Support suggested a workaround: use do_not_bill, then take a separate one-click checkout payment on the saved card. With that, we would have to calculate the proration ourselves, and the charge would show up as a separate payment, not on the subscription invoice. It also creates a failure case where the plan change succeeds but the payment doesn't (or the other way round). A native mode would remove all of that.

This would make mid-cycle add-on sales workable on annual plans for any merchant selling seats or usage packs.

0 Comments

Sign in to comment

No comments yet. Be the first to share your thoughts!