This article explains how ScaleXP spreads the revenue on each invoice line and the cost on each bill line across the months of its service period, using the start and end dates recorded against the line. It covers the allocation logic, a step-by-step worked example you can use to check the figures yourself, how the spread drives deferred, prepaid and accrued balances, and how foreign currency amounts are translated. The same logic applies to both sides: it drives the Revenue Recognition view of revenue on the Customers tab and the As Spent view of cost.
ScaleXP takes the start and end dates from the text of each invoice or bill line description. For how those dates are read, and how to word your invoices and bills so they are read correctly, see How ScaleXP reads dates.
How revenue and cost are spread across months
Where a line's service period spans two or more months, ScaleXP allocates the revenue or cost across those months as follows:
- Every full month receives an equal share. A twelve-month contract running from 1 January to 31 December is recognized as twelve equal monthly amounts, whether it is revenue on a sales invoice or cost on a supplier bill. February receives the same as March, even though it has fewer days.
- Partial months at the start and end are prorated by days. The first month receives the share of its days that fall within the service period, counting the start date itself. The last month receives the share of its days up to and including the end date.
- The amount is then split in proportion to those shares. The full months count as 1 each and the partial months as a fraction, and the line's amount is divided across them accordingly.
Because every full month carries the same weight, a single day is worth slightly more in a short month than in a long one. This is intentional: a daily allocation would show less revenue or cost in February than in March for the same annual contract, which most finance teams do not want.
| Days in the month | Value of one day, as a share of a full month |
|---|---|
| 28 | 3.57% |
| 29 | 3.45% |
| 30 | 3.33% |
| 31 | 3.23% |
Two further points to note:
- The spread follows the service dates on the line, not the invoice or bill date. An invoice or bill dated January for a service running from March to May is recognized in March, April and May.
- If a line has no dates or time period that ScaleXP can read, the whole amount is allocated to the month the invoice or bill was issued. If the service period starts and ends within a single month, the whole amount is allocated to that month.
If you need a different pattern for particular accounts, invoices or bills, for example a fixed percentage recognized up front, you can override this default with a rule. For revenue, see How to set rule based revenue allocations, How to set up a complex, multi-tiered revenue allocation rule and Usage-based revenue: Set up. For cost, see Usage-based costs: Set up.
Worked example: Checking the spread step by step
The example below follows a $12,000 line for a service running from 15 March 2026 to 14 March 2027. The calculation is identical whether the line is revenue on an invoice you issued or cost on a bill you received, so the amounts below apply to either.
Step 1. Calculate the share for the first month
Count the days in the first month that fall within the service period, including the start date, and divide by the number of days in that month.
- A service starting on the 1st covers every day of the month: 100%, whether the month has 28, 30 or 31 days.
- A service starting on the 15th of a 30-day month covers 16 days: 16 ÷ 30 = 53%.
- A service starting on the 15th of a 31-day month covers 17 days: 17 ÷ 31 = 55%.
Because the start date is counted, the number of days in a mid-month start is one higher than a simple subtraction suggests.
In the example, March 2026 has 31 days and the service covers 15 to 31 March, which is 17 days: 17 ÷ 31 = 54.84%.
Step 2. Calculate the share for the last month
Take the day of the month on which the service ends and divide by the number of days in that month.
- A service ending on the 28th of a 28-day month: 100%.
- A service ending on the 28th of a 31-day month: 28 ÷ 31 = 90%.
- A service ending on the 27th of a 28-day month: 27 ÷ 28 = 96%.
- A service ending on the 27th of a 31-day month: 27 ÷ 31 = 87%.
In the example, the service ends on 14 March 2027, so March 2027 receives 14 ÷ 31 = 45.16%.
Step 3. Count the full months in between
Every month between the first and last month receives 100%, regardless of how many days it has.
In the example, April 2026 to February 2027 inclusive is 11 full months, each at 100%.
Step 4. Allocate the amount to each month
Add up the shares from steps 1 to 3 to get the total weight, then divide the line's amount by that total to find the value of one full month. Multiply each month's share by that value.
In the example, the total weight is 54.84% + 1,100% + 45.16% = 1,200%, or 12 full months. One full month is therefore $12,000 ÷ 12 = $1,000.
| Month | Share of month | Revenue or cost recognized |
|---|---|---|
| March 2026 | 54.84% | $548.39 |
| April 2026 to February 2027 (11 months) | 100% each | $1,000.00 each |
| March 2027 | 45.16% | $451.61 |
| Total | 1,200% | $12,000.00 |
For a contract that starts on the 1st of a month and ends on the last day of a month, steps 1 and 2 both give 100%, so every month receives the same amount.
How the spread drives deferred, prepaid and accrued balances
The month-by-month allocation is also what determines the balance sheet figures in ScaleXP's month-end journals and reports. The two sides mirror each other:
| Revenue (invoices) | Cost (bills) | |
|---|---|---|
| Invoiced or billed, but the service months are still in the future | Deferred revenue | Prepaid expenses |
| Service months have passed, but not yet invoiced or billed | Accrued revenue | Accrued expenses |
For how these balances are posted, see How to use ScaleXP for month end journals for the overview, Setup 2: Prepare your accounts for the revenue side and Start here: Automate expense journals for the cost side.
Foreign currency translation
When an invoice or bill line is in a currency other than your accounting system's base currency, ScaleXP translates it for the Revenue Recognition and As Spent views at the same exchange rate your accounting system used for that invoice or bill.
In consolidated groups with entities in different currencies, revenue and cost in these reports are translated from the subsidiary's currency to the parent company's currency at the exchange rate for the month the invoice or bill was issued.
For more detail, see FX rates: What foreign exchange rate is being used?
Related articles
- How ScaleXP reads dates
- How to use ScaleXP for month end journals
- Start here: Automate revenue journals
- Setup 2: Prepare your accounts
- Start here: Automate expense journals
- How to set rule based revenue allocations
- How to set up a complex, multi-tiered revenue allocation rule
- Usage-based revenue: Set up
- Usage-based costs: Set up
- Customer page summary reports and how they are calculated
- How to filter accounts on the customer page
- How to review invoices issued in the month and download a list in Excel
- How to review bills by issue month
- FX rates: What foreign exchange rate is being used?