How to handle revenue recognition for multi-year contracts with different annual amounts, free periods, and contract extensions

Straight-line revenue for multi-year contracts with annual uplifts, discounted or free months and $0 extensions, using deferred revenue schedules plus accrued revenue released over time (ASC 606, IFRS 15).

Some multi-year subscription contracts need revenue recognized evenly across the full service period even when each invoice amount is different — annual uplifts, discounted first years, free months, or $0 contract extensions. This article shows you how to combine ScaleXP's automated deferred revenue schedules with a small number of manual accrued revenue entries, released over time, so your revenue lands straight-line across the contract in line with ASC 606 / IFRS 15 while ScaleXP continues to automate the heavy lifting.

For background on how ScaleXP spreads revenue by default, see How ScaleXP allocates the spread of revenue and determines deferred revenue amounts.


Why straight-line recognition is needed under ASC 606 / IFRS 15

Under ASC 606 and IFRS 15, revenue is recognized based on the transfer of the underlying service or performance obligation — not the timing of invoicing. When the service delivered is substantially the same throughout the contract and the contractually committed pricing changes between periods, the total contract value is recognized evenly across the total service period.

This pattern shows up in several common scenarios:

  • SaaS subscriptions with annual price uplifts
  • Multi-year software agreements with different annual values
  • Contracts with free months or a discounted first year
  • Subscription renewals where future years are contractually committed at a $0 or reduced amount

By default, ScaleXP recognizes revenue based on each individual invoice. To produce straight-line recognition across the full contract, you combine ScaleXP's automated deferred revenue schedules with manual accrued revenue entries that smooth the revenue evenly. For more on the accounting framing, see IFRS / GAAP reporting versus revenue recognition.


1. Create the invoices as normal

Create each invoice in your accounting system as you usually would. ScaleXP picks these up through your accounting integration and builds the deferred revenue schedules automatically.

It is usually a good idea to also create the future invoices in advance — as drafts, without sending them to the customer yet — so the future schedules already exist in ScaleXP and the full contract is visible end-to-end.


2. Let ScaleXP build the deferred revenue schedules

Once the invoices are in your accounting system, ScaleXP automatically:

  • Creates the deferred revenue schedule for each invoice
  • Releases revenue monthly across the invoice's service period
  • Produces the deferred revenue journals ready to post
  • Recalculates everything if an invoice changes

This part of the workflow is unchanged. For a refresher, see How to set up revenue recognition journals in ScaleXP and How the ScaleXP deferred revenue journal calculates the suggested posting amount.


3. Add accrued revenue and release it over time

Because each invoice is treated independently by ScaleXP's automated schedules, a manual accrued revenue entry is needed to smooth recognition across the contract. Every accrued revenue entry has two halves, and you set the dates for each:

  • Adding the accrual recognizes revenue and puts the balance on the balance sheet. The Start Date and End Date you enter when you add it spread the revenue evenly across those months.
  • Releasing the accrual takes the balance off the balance sheet and reduces revenue by the same amount. The Release Date / Start Date and Release End Date you enter when you release it spread the reduction evenly across those months.

Recognize in the months that are invoiced too little, release across the months that are invoiced too much, and the net effect is a straight line.

  1. On the Journals tab, open Add Accrued Revenue, click Add Accrued Revenue + and select the customer. Enter the amount, choose the revenue account (the same account as the invoices, not deferred revenue) and set the Start Date and End Date to the period in which the revenue should be recognized. Click Add.
  2. Open Release Accrued Revenue, expand the customer and click Release Accrued Revenue on the AC- entry. Set the Release Date / Start Date and Release End Date to the period across which the accrual should unwind, then click Save & Release Accrued Revenue.
  3. Post the accrued revenue journal each month alongside the deferred revenue journal.
Release Accrued Revenue window with Release Date / Start Date and Release End Date

For the full mechanics of the accrued revenue pages, see How to automate accrued revenue journal posting, to add and release accrued income and How to release accrued revenue.


When a contract includes a free period up front, accrue the value of the free period at the start of the contract and release it over the remaining, invoiced months. This is the recommended way to handle free months in ScaleXP.

  1. Work out the straight-line monthly amount: total invoiced over the contract ÷ total months of service (including the free months). The value of one free month equals this amount.
  2. Add a manual accrued revenue entry for the value of the free period, with Start Date and End Date covering the free month(s). This recognizes the straight-line amount in the free month and puts it on the balance sheet as accrued income.
  3. Release the entry with Release Date / Start Date at the first invoiced month and Release End Date at the contract end. The release reduces each invoiced month's revenue by the same small amount, bringing it down to the straight-line figure, and the accrued income balance unwinds to zero at the end of the contract.

Worked example 3 — Twelve-month contract with one free month up front

A 12-month contract starts with one free month and is then invoiced monthly at $1,200 for the remaining 11 months.

Total invoiced is 11 × $1,200 = $13,200. Straight-line monthly revenue is $13,200 ÷ 12 = $1,100, so the value of the free month is $1,100.

  • Add accrued revenue of $1,100 with Start Date and End Date in month 1.
  • Release it with Release Date / Start Date in month 2 and Release End Date in month 12, so $100 is released in each of the 11 invoiced months.
Month Invoiced revenue Accrued revenue added Accrued revenue released Revenue recognized Accrued income balance
1 (free) $0 $1,100 $1,100 $1,100
2 to 12 (each) $1,200 −$100 $1,100 falls by $100 a month
Total $13,200 $1,100 −$1,100 $13,200 $0 at month 12

The same approach works for a discounted first period: accrue the difference between the straight-line amount and the discounted invoice in the discounted months, and release it across the full-price months.


5. Handle annual uplifts and different annual values

For contracts invoiced annually at different amounts, add one accrued revenue entry per contract year for the difference between the straight-line annual revenue and that year's invoice:

  • Early years, where the invoice is below the straight-line average, need a positive accrued revenue entry, added evenly over the 12 months of that year.
  • Later years, where the invoice is above the straight-line average, need a negative accrued revenue entry, added evenly over the 12 months of that year.
  • Across the full contract the entries net to zero, so no release is needed; the accrued income balance builds in the early years and unwinds in the later years.

Alternatively, add the early-year entry only and release it across the later years with Release Date / Start Date and Release End Date — use this where the release is the same amount in every later month.

Worked example 1 — Multi-year contract with annual uplifts

A three-year contract is invoiced annually at the following amounts:

Year Invoice amount
Year 1 $18,900
Year 2 $22,500
Year 3 $25,800

Total contract value is $18,900 + $22,500 + $25,800 = $67,200. Straight-line annual revenue is $67,200 ÷ 3 = $22,400, and monthly recognition across the full 36 months is $67,200 ÷ 36 = $1,866.67.

The required accrued revenue entries are:

  • Year 1: $22,400 − $18,900 = $3,500 positive entry, added evenly over 12 months
  • Year 2: $22,400 − $22,500 = −$100 negative entry, added evenly over 12 months
  • Year 3: $22,400 − $25,800 = −$3,400 negative entry, added evenly over 12 months

The total of these entries nets to zero across the contract.

Worked example 2 — Two-year contract with different annual values

A two-year contract is invoiced annually at the following amounts:

Year Invoice amount
Year 1 $48,600
Year 2 $55,800

Total contract value is $48,600 + $55,800 = $104,400. Straight-line annual revenue is $104,400 ÷ 2 = $52,200, and monthly recognition across 24 months is $104,400 ÷ 24 = $4,350.

The required accrued revenue entries are:

  • Year 1: $52,200 − $48,600 = $3,600 positive entry, added evenly over 12 months
  • Year 2: $52,200 − $55,800 = −$3,600 negative entry, added evenly over 12 months

Again, the total nets to zero across the contract. Because the Year 2 reversal is the same amount every month, you could instead add the $3,600 in Year 1 and release it across the 12 months of Year 2.


6. Handle $0 contract extensions

When the free period comes at the end of the contract — a $0 extension — the entry runs the other way: reduce revenue across the invoiced months and carry it forward into the extension months.

For example, a contract invoiced at $14,400 in Year 1 with a $0 extension in Year 2 still represents 24 months of service, so the required monthly recognition is $14,400 ÷ 24 = $600. The Year 1 invoice recognizes $1,200 a month on its own, so add a negative accrued revenue entry of −$7,200 with Start Date and End Date covering Year 1 (bringing Year 1 down to $600 a month), and release it with Release Date / Start Date and Release End Date covering Year 2, so $600 a month is recognized during the extension. The accrued income account carries a credit balance during Year 1 that unwinds to zero by the end of Year 2.

If the extension adds new services, or the contract was already part-way through when it was extended, see How to use ScaleXP to recognize revenue for a contract extension for the manual invoice method and the accounting treatment of each case.


Important accounting notes

ScaleXP does not automatically calculate ASC 606 allocation adjustments across multiple future invoices, so the straight-line entries should be set up manually as described above. The accounting treatment should always be reviewed by your accountant or auditor.

The examples in this article assume a single performance obligation, that straight-line recognition is appropriate, and that the service delivered is substantially consistent throughout the contract. More complex contracts — for example those with multiple distinct performance obligations or material variable consideration — may need additional analysis. In some cases it may be more appropriate to use another recognition method such as usage-based or rule-based. See How to set up usage based revenue recognition and How to set rule based revenue allocations.

Once the entries are in place, ScaleXP continues to automate the monthly deferred revenue release for each invoice, the deferred revenue journals, and the accrued revenue additions and releases you have set up. Post both journals each month and the combined postings produce the straight-line revenue automatically.