Skip into the price book
MarkupYard

Service prices, explained

Maintenance agreement proration: 4 inputs for billing

Flat-rate pricing

MarkupYard Editorial Team · Published · 10 min read

Documentation checked

Local AI writing, source-linked claims and one fact check by a model from another AI company. No person writes, edits or reviews these posts.

A partial maintenance charge starts with the billed period, then applies its share of the month to the recurring rate. Stripe documents a February example where fourteen days from February 15 to March 1 produce exactly half the amount of a normal monthly charge because February has 28 days.

Key takeaways for how do I calculate a partial maintenance agreement charge?

  • Identify the billed period first. This establishes the specific day count for that partial interval.
  • Select your day count convention. Your chosen convention determines how you count days between dates in your worksheet.
  • Confirm the recurring invoice rate. The subscription plan documentation states that the charge remains the same for every billing cycle ( Frappe ). Use this fixed amount as the baseline before applying any partial period adjustments.
  • Determine when tax is calculated. Record this timing separately from the proration math.

Identify the recurring amount used to generate the invoice

Before calculating a partial charge, you must identify the specific plan rate that generates your recurring invoices. In ERPNext, you add one or more plans to a Subscription, and the system uses them when it creates recurring Sales Invoices or Purchase Invoices ( Frappe ). This establishes the base amount from which any proration calculation begins. The highlighted fields within the plan control the rate ERPNext uses when it generates an invoice from the Subscription ( Frappe ). These fields define the standard monthly or periodic cost applied to the customer’s account. For more on recurring setup, see Recurring work order settings: 8 rules to set .

A critical distinction for repair and service business owners is that this recurring charge remains the same for every billing cycle ( Frappe ). The documentation describes a fixed rate structure where the full invoice amount is generated for each complete period. Therefore, the plan rate serves as the constant input variable, but it does not establish a proration formula on its own. You cannot assume that because the system generates a consistent recurring charge, it will automatically adjust that charge for a shortened period without explicit configuration or manual calculation.

To use this information in your billing workflow, locate the specific plan assigned to the maintenance agreement in question. Verify that the rate recorded in the plan matches the amount you intend to bill for the full period. Since the charge remains identical across cycles, the difference between a full charge and a partial charge depends entirely on how you apply the day count convention to this fixed rate. If your accounting software does not automatically generate prorated invoices based on these plan fields, you must calculate the partial amount externally using the documented methods discussed elsewhere in this guide. The recurring rate is the anchor point; the proration logic is the separate step you must perform.

Read Stripe's partial-period charges and unused-time credits

In the documented example, the final invoice subtotal on January 1 calculates as 60 USD, with the items.current_period_end set to July 1 Stripe .

When a customer cancels mid-cycle, the system may generate a credit for time not yet used. In the documented example, the period end and billing anchor become April 1, resulting in a proration of -30 USD to credit the customer for unused time from April 1 to July 1 Stripe . It is a separate calculation from the initial partial charge and serves to adjust the final balance rather than establish a new recurring rate.

You can also choose to bill these adjustments immediately rather than waiting for the next scheduled invoice. To invoice the prorated items immediately instead of in a final invoice on October 1, pass a proration_behavior of always_invoice in the update, or separately create a one-off invoice Stripe . This option changes only when the prorated items are invoiced. It allows you to settle the account sooner if your cash flow requires it.

Record each figure as a charge or a credit before applying any formula. If you are determining how much to bill now, look at the immediate invoice options. Keeping these distinct prevents mixing up positive charges with negative adjustments in your records.

Separate spreadsheet day counts from renewal tax calculations

Spreadsheet day count conventions and renewal tax timing are distinct calculation inputs. Do not combine them into a single proration formula. The WorksheetFunction.Days360 method returns the number of days between two dates based on a 360-day year, which consists of twelve 30-day months ( Microsoft ). This convention is used in some accounting calculations. Use this function to help compute payments if your accounting system is based on twelve 30-day months ( Microsoft ). If your system does not use this base, the function may not match your billing cycle.

The function applies specific adjustments when dates fall at month ends. If the starting date is the 31st of a month, it becomes equal to the 30th of the same month ( Microsoft ). For ending dates, if the date is the 31st of a month and the starting date is earlier than the 30th of a month, the ending date becomes equal to the 1st of the next month; otherwise, the ending date becomes equal to the 30th of the same month ( Microsoft ). These rules alter the day count for periods that cross month boundaries.

Consider the February example in Microsoft's documentation. When you use the Days360 function with a start date of February 28 and an end date of March 28, a value of 28 days is returned ( Microsoft ). This result reflects the 30-day month structure rather than the actual calendar days in February or March. Record this day count separately from any tax calculation.

In the Subscription Renewal Process Documentation - WooCommerce, tax charged for each renewal payment is calculated at the time the payment is processed ( WooCommerce ). Keep these two steps separate in your worksheet: one cell for the spreadsheet day count, another for the tax amount applied at payment processing. For tax on quoted work, see Repair quote sales tax: 5 checks for the total .

Publisher Calculation Scope Documented Example or Rule
Microsoft Spreadsheet day count convention Returns days based on a 360-day year (twelve 30-day months) Microsoft
Microsoft Month-end adjustment rule Starting date 31st becomes 30th of same month Microsoft
Microsoft February day count example Start Feb 28 to end Mar 28 returns 28 days Microsoft

Record the day count from your chosen convention and the tax amount from your payment processor as separate line items.

Proration reference table by publisher and calculation scope

The table below maps each documented source to the specific billing input it covers for a partial maintenance agreement charge. Each row names the publisher, the calculation scope from their documentation, and the key fact that defines how that input works in practice.

Publisher Calculation Scope Key Documented Fact
Stripe February partial charge example Because February has 28 days, the prorated amount for the 14 days from February 15 to March 1 is exactly half the amount of a normal monthly charge.
Microsoft Spreadsheet accounting year convention Returns the number of days between two dates based on a 360-day year (twelve 30-day months), which is used in some accounting calculations.
Frappe Plans generating recurring invoices You add one or more plans to a Subscription, and ERPNext uses them when it creates recurring Sales Invoices or Purchase Invoices.

Record your agreement calculation worksheet

Take one agreement that requires a partial charge and document its specific inputs before calculating the final amount. Start by identifying the recurring rate used to generate the invoice, as the highlighted fields in ERPNext control the rate when it generates an invoice from the Subscription Frappe . Write down this fixed plan rate in your worksheet, noting that it remains the same each billing cycle according to the documentation. This recorded figure serves as the baseline for any subsequent proration or adjustment calculations you perform for the partial period.

Next, record the exact start and end dates of the billing period for which you are calculating the charge. The billed period defines the time frame against which you measure the usage or service duration. Note whether your accounting system uses a standard calendar month or a convention like twelve thirty-day months, as this choice affects how you count days between the recorded dates.

Illustrative example: partial charge for a 15-day period

Assume a maintenance plan charges 60 per month, and the billed period covers 15 days of a month counted as 30 days under a twelve 30-day month convention. The share is 15 of 30 days, or one half, so the illustrative partial charge is 30.

Next step: today, pick one open agreement and write down its plan rate, billed period dates and day count convention on your worksheet.

FAQ: partial maintenance charges

How does maintenance agreement proration calculate a partial charge?

The documented example shows that because February has 28 days, the prorated amount for the 14 days from February 15 to March 1 is exactly half the amount of a normal monthly charge. Stripe provides this specific calculation for a backdated subscription scenario. This demonstrates how a partial period is derived from the total monthly rate based on the number of days in that specific month.

Does DAYS360 apply if my accounting system uses twelve thirty-day months?

Yes, use this function if your accounting system is based on twelve 30-day months. The spreadsheet function returns the number of days between two dates based on a 360-day year, which is used in some accounting calculations. Microsoft documents this convention specifically for those accounting systems. It ensures day counts align with the standardized thirty-day month structure rather than actual calendar days.

How does Stripe calculate the documented February partial charge?

The calculation relies on the specific length of the month involved. For the period from February 15 to March 1, there are 14 days. Since February has 28 days in the documented context, these 14 days represent exactly half of the normal monthly charge. Stripe illustrates this by stating the prorated amount is exactly half the standard fee. This method divides the full cycle cost by the total days in the month and multiplies by the days remaining.

Does an ERPNext recurring plan rate establish a proration formula?

No, the charge remains the same for every billing cycle. Frappe describes the subscription plan behavior where the fixed rate applies to each complete cycle. Therefore, the plan rate itself does not provide a mechanism for calculating partial-period adjustments or prorated charges.

When does WooCommerce calculate tax in the documented renewal checkout process?

Tax charged for each renewal payment is calculated at the time the payment is processed. WooCommerce specifies that tax timing follows the standard checkout flow. The system determines the tax amount when the transaction is finalized during renewal.