Proration is the practice of charging a customer for a partial billing term. While the basic concept is straightforward, mishandling its edge cases can lead to confused customers, support tickets, and lost revenue. Understanding these nuanced scenarios is crucial for building a fair and scalable billing system.
This guide explores the most common proration challenges—mid-cycle changes, usage-based components, and frequency switches—and provides a framework for how to think about and handle them.
Proration calculates the proportional cost when a subscription plan is changed before its billing cycle ends. In most cases, it ensures customers only pay for what they use.
The standard calculation for a mid-cycle upgrade is often:
- Calculate the unused time on the current plan.
- Credit the value of that unused time back to the customer.
- Calculate the cost of the new plan for the remainder of the billing cycle.
- Charge the customer the difference (new plan cost minus the credit).
For example, a user on a $20/month plan upgrades to a $50/month plan exactly halfway through the month.
- Credit for old plan: They used half of the $20 plan, so they get a $10 credit.
- Cost of new plan: They will use the new plan for half the month, so the cost is $25.
- Immediate charge: The final prorated charge is $25 (new plan cost) - $10 (unused credit) = $15.
This seems simple, but reality introduces complexity. What happens on a downgrade? What if the plan includes usage-based features?
Handling plan upgrades and downgrades requires different approaches because they have different impacts on the user experience and your revenue. This section covers the common patterns for managing them.
- Upgrades (Immediate Change): When a user upgrades, they want access to the new features right away. The best practice is to make the change effective immediately and issue a prorated charge. This captures new revenue instantly and gives the user what they paid for without delay.
- Downgrades (Delayed Change): For downgrades, the opposite is often true. The user has already paid for a full month or year of a higher-tier service. Forcing an immediate downgrade and issuing a small credit can feel like you’re taking away something they’ve paid for. The standard practice is to schedule the downgrade to take effect at the end of the current billing cycle. The user can continue using the higher-tier features until the period ends, and the next invoice simply reflects the new, lower price. This avoids the complexity of refunds and feels fairer to the customer.
Proration gets significantly more complicated when plans include metered or usage-based components, such as a specific number of API calls, seats, or data storage.
Imagine a user is on a “Pro” plan for $100/month that includes 1,000 API calls. On day 20 of the cycle, having already used 800 calls, they upgrade to an “Enterprise” plan for $300/month that includes 5,000 API calls.
How do you handle their usage allowance? You have a few options:
- Reset and Prorate: The original 1,000-call allowance disappears. The user gets a prorated portion of the new 5,000-call allowance for the remainder of the cycle. This is often the cleanest method but can be confusing if not communicated clearly.
- Prorate and Add: The user gets the unused portion of their old allowance plus a prorated portion of their new allowance. This is generous but can be complex to calculate and track.
- Carry-over Usage: The user’s existing 800 calls are counted against their new 5,000-call limit. This is simple, but the value proposition of the upgrade can feel diminished if they’ve been a heavy user on the lower tier.
The key is to choose a policy and apply it consistently. Your decision should balance fairness, technical complexity, and business goals.
Another common scenario is when a customer switches from an annual to a monthly plan, or vice versa.
- Monthly to Annual: This is effectively an upgrade. The user is committing to a longer term, usually for a discount. The standard approach is to calculate the unused credit from their current monthly period and apply it toward the new annual charge. You bill them for the full annual plan minus this small credit.
- Annual to Monthly: This is more complex and similar to a downgrade. The user has prepaid for a full year. The most common method is to let the annual plan run its course and then switch them to the monthly plan at the renewal date.
If you must process the change immediately, you have to calculate the unused portion of their annual payment. This large amount should be converted into a service credit that gets applied to their future monthly invoices until it runs out. Issuing direct cash refunds for this is rare and creates administrative overhead.
For example, a user on a $1,200/year plan switches to a $120/month plan exactly six months in.
- They have $600 of unused credit from their annual plan.
- You switch them to the $120/month plan.
- The $600 credit covers their next five monthly bills ($120 x 5 = $600).
- They won’t receive another bill for five months.
Navigating these edge cases requires a clear and consistent strategy. Here are some best practices to ensure your billing system is fair, transparent, and manageable.
- Be transparent with users: Before a customer confirms a plan change, show them a clear summary of the prorated charges. Display the credit from their old plan, the cost of the new plan, and the final amount they will be billed immediately.
- Establish clear policies: Decide how you will handle every scenario before you launch your billing system. Document these policies internally and make them available to customers in your terms of service. Consistency is key.
- Favor simplicity for downgrades: For downgrades and annual-to-monthly switches, scheduling the change for the end of the billing cycle is almost always the best approach. It eliminates the need for credits and feels more intuitive to the user.
- Use service credits, not cash refunds: When proration results in the company owing the customer money (e.g., an immediate downgrade), always issue the amount as a service credit applied to future invoices. This prevents revenue leakage and simplifies accounting.
Building a robust billing system that handles proration correctly is a significant engineering challenge. Kinde’s billing engine is designed to manage these complexities out of the box.
Within Kinde, you can define your policies for how upgrades and downgrades are handled. You can choose whether to make changes effective immediately or at the end of the billing period, and determine how to handle unpaid usage or unused subscription time. This allows you to implement the best practices discussed here without building the logic from scratch. By setting clear rules, you ensure every proration scenario is handled consistently and automatically, providing a predictable and fair experience for your users.
For more information on setting these policies, you can visit the Kinde documentation.
Get started now
Boost security, drive conversion and save money — in just a few minutes.