> ## Documentation Index
> Fetch the complete documentation index at: https://help.ruddr.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Legacy non-billable expenses on Fixed Fee projects

> Why some Fixed Fee projects show an Upgrade Revenue Treatment button, what the legacy treatment does to services revenue, and what the upgrade changes.

Ruddr changed how non-billable expenses are treated on Fixed Fee and Fixed Monthly projects. Projects that had a non-billable expense, either on an expense report or as a non-billable project expense, when the change shipped keep the previous treatment until someone upgrades them. Every other project, including every new project, uses the current treatment.

## The two treatments

**Legacy treatment.** Non-billable expenses were assumed to be covered by the fixed fee. Ruddr subtracted them from services revenue and reported the same amount as expenses revenue. Budgets worked the same way: the non-billable expenses budget counted as expenses revenue, so a \$100K project with a \$10K non-billable expenses budget needed a \$90K services revenue budget to add up to the fee. Automated revenue recognition also added the non-billable expenses to the ledger as they were incurred, up to the non-billable expenses budget.

**Current treatment.** The full fee is services revenue. Non-billable expenses are not revenue, so expenses revenue only contains billable expenses. Where a non-billable expense's cost goes depends on its [expense category](https://help.ruddr.io/expenses/manage-expense-categories.md#classify-expenses-as-services):

* **Categories classified as services**, such as work outsourced to a third party, count as services cost, like labor. They reduce the project's services gross profit and services gross margin, and they count toward progress on a project that recognizes revenue by percentage of services cost.
* **Every other category**, such as meals or travel, counts as expenses cost.

The services revenue budget is the fee, and the non-billable expenses budget is a cost.

Total revenue and total profit are the same under both treatments. What moves is the split between services and expenses, and the effective bill rate.

| | Legacy treatment | Current treatment |
| - | - | - |
| Services revenue | Fee minus non-billable expenses | Fee plus billable expenses in categories classified as services |
| Expenses revenue | Billable expenses plus non-billable expenses | Billable expenses in other categories |
| Services cost | Labor cost | Labor cost plus expenses in categories classified as services |
| Expenses cost | All expenses | Expenses in other categories |
| Effective bill rate | (Fee minus non-billable expenses) divided by hours | Fee divided by hours |

## How legacy projects appear across Ruddr

Every surface calculates a legacy project with the legacy treatment until it is upgraded:

* **Expense categories:** the [Classify as services](https://help.ruddr.io/expenses/manage-expense-categories.md#classify-expenses-as-services) setting is ignored. Every expense on the project is an expense, whatever its category.
* **Project and client KPIs:** the Effective Rate uses services revenue after the non-billable expenses are subtracted. The Expenses KPI includes every expense, and the Revenue and Margin KPIs count non-billable expenses as expenses revenue.
* **Reports and the Executive Dashboard:** services revenue, the effective bill rate, and services cost follow the legacy treatment. Performance by Member attributes no expense cost to members, because the project has no services expenses.
* **Budgets:** the services revenue budget is entered net of the non-billable expenses budget, and the non-billable expenses budget counts as expenses revenue. The ledger's Budget Recognizable Revenue includes the non-billable expenses budget.
* **Revenue recognition:** automated revenue recognition adds non-billable expenses to the ledger as they are incurred, up to the non-billable expenses budget. Under percentage of services cost, expenses never count toward progress.
* **Invoices and credit notes:** grouped invoices never put expenses on a line of their own as services expenses, and credit notes credit every expense as expenses revenue.

## How to tell which treatment a project uses

A project on the legacy treatment shows an **Upgrade Revenue Treatment** button in the **Billing** section of the project's [Settings](https://help.ruddr.io/projects/project-settings.md) tab, under **Revenue Attribution Method**. Hovering the help icon next to the button explains what the upgrade changes. Projects on the current treatment do not show the button.

## What the upgrade does

Clicking **Upgrade Revenue Treatment** opens a confirmation that lists what will change (Figure 1). Confirming does two things:

![The Upgrade Revenue Treatment Confirmation](https://mintcdn.com/ruddr-help/hsxeg6RrFT9U3gU9/images/legacy-non-billable-expenses-on-fixed-fee-projects-1.png?fit=max\&auto=format\&n=hsxeg6RrFT9U3gU9\&q=85\&s=548f5681736d15e6d55848219248c162)

Figure 1 - The Upgrade Revenue Treatment Confirmation

1. **The project switches to the current treatment.** Reports, dashboards, the budget, and future automated revenue recognition use it from then on.
2. **The revenue recognition ledger is corrected when needed.** If the legacy automated revenue recognition added non-billable expenses to the ledger and that took the ledger above the Fixed Fee Billing Schedule, the upgrade adds a manual entry that reverses the excess. The entry is dated today, unless the project's revenue is recognized on a weekly or monthly schedule. Then it is dated the day before the period the next scheduled run recalculates, so that run does not overwrite it. The confirmation shows the amount and date before you upgrade, and the entry's calculation panel in the ledger shows the amount reversed. A project that uses "As Invoiced" revenue recognition never gets this entry.

The upgrade does not change the budget. Review the services revenue budget and the expenses budget afterwards. If the services revenue budget was entered net of non-billable expenses (\$90K services plus \$10K non-billable expenses on a \$100K fee), raise it to the full fee, because the non-billable expenses budget is now a cost rather than revenue. If the budget lists expenses in a category classified as services, set the services cost or services gross margin to cover them, because those lines no longer count as expenses cost.

> [!WARNING]
>
> The upgrade cannot be undone. Contact Ruddr support if you are unsure whether to upgrade a project.

Only [workspace admins](https://help.ruddr.io/workspace-administration/security-roles.md) can run the upgrade. Other members who can see the project's billing settings see the button disabled, and hovering it asks them to contact a workspace admin.

## Upgrade every project at once

A workspace admin can upgrade every legacy project in the workspace from the same confirmation. Before clicking **Upgrade**, check **Upgrade all workspace projects** at the bottom of the confirmation, which shows how many projects still use the legacy treatment (Figure 1). The checkbox only appears when more than one project needs the upgrade. Each project is upgraded as described above, including its own reversing ledger entry when it needs one. The upgrade runs in the background, so it can take a few minutes for every project to switch. When it finishes, you get an email with the number of projects upgraded and a link to any project that could not be upgraded, so you can upgrade it from its settings.

## Why upgrade

* Reports and dashboards compare projects on the same basis. A legacy project shows lower services revenue, a higher services margin, and a lower effective bill rate than an identical project on the current treatment.
* The services revenue budget means the same thing as the billing schedule, so the [budget recognizable revenue](https://help.ruddr.io/projects/the-revenue-recognition-ledger.md) on the ledger equals the fee.
* Outsourced delivery work appears where it belongs, as a cost of delivering the project.

## Workspaces with both treatments

Until every legacy project is upgraded, a workspace reports some projects on each treatment. Each project's figures follow its own treatment, so figures that add up several projects, such as the client effective rate, the Executive Dashboard, and report totals, mix the two. For example, a client with one legacy project and one upgraded project shows an effective rate that subtracts non-billable expenses for the first project only.

To compare projects on the same basis, upgrade the legacy projects, or [upgrade every project at once](#upgrade-every-project-at-once). The **Upgrade Revenue Treatment** button only appears on [projects that still need it](#how-to-tell-which-treatment-a-project-uses).

## Why you might wait

The upgrade applies to the whole project, so past periods in reports, dashboards, and project health show the new figures. A reversing ledger entry, when one is needed, is dated when the upgrade runs rather than spread across the past. If your finance team closed the books with the legacy split between services and expenses revenue, review the effect before upgrading. On a project that uses automated revenue recognition and is still in progress, you may prefer to keep the legacy treatment until the project is complete.

## Related articles

* [Handling outsourced labor expenses on Fixed Fee projects](https://help.ruddr.io/faqs-and-troubleshooting/revenue-in-ruddr/outsourced-labor-expenses-on-fixed-fee-projects.md)
* [The Revenue Recognition Ledger](https://help.ruddr.io/projects/the-revenue-recognition-ledger.md)
* [Fixed Fee Revenue Recognition](https://help.ruddr.io/projects/fixed-fee-revenue-recognition.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.