Profitability

Know which clients are worth your team's time

Revenue is the easy half. This is the other half — what your team's time cost, each client's share of the work your team finished, and a return on time per client that tells you where the team's hours are really earning and where they are not.

app.aspirepro.io/finance/profitability
The AspirePro profitability table: every client with revenue, team cost, return on time and trend

Client profitability software works out what an engagement earned for the time it took to deliver. For a services firm the cost is mostly people, so it needs the hours and the cost rates in the same system as the invoices. AspirePro builds a return on time per client and per agreement from records your team already creates — revenue minus the recorded cost of the team's time, with client expenses taken off too if you switch that on — adds each client's share of the work the team finished for the parts nobody timed, and keeps the picture current, updating it within a few minutes of a change. It is not your profit: that lives in QuickBooks, after every business expense. It answers a different question: is this client worth the team's time?

Per client

Return on time, not just revenue

Revenue counted the way you choose, minus the recorded cost of your team's time (and client expenses, if you count them) — with return percentage, dollars earned per hour, and share of work against share of revenue.

Honest

It says what it recorded and what it guessed

Every input is labelled, and where no cost was recorded the return percentage is hidden rather than shown as a flattering 100%.

Signals

The account to look at today

Revenue dropping two months running. More of your team's work than of your revenue. A poor return under a heavy ticket load. Steady work with no recurring agreement.

The table

The client list that changes decisions

Every client, with their revenue, what your team's time cost, the resulting return on time and return percentage, share of work, and a trend line — with dollars earned per hour, hours logged, tickets opened and the work-versus-revenue gap a click away. Sort by return and the conversation about who to keep, reprice or fire has actual evidence behind it.

  • Return on time and return percentage per client
  • $/hour earned — what you really earned per hour on that account
  • Share of work against share of revenue — the client taking 8% of the team for 3% of the money
  • Trend lines so a slide is visible before it becomes a loss
app.aspirepro.io/finance/profitability
The profitability table listing clients with revenue, team cost, return, return percent, share of work and trend
Trust

You can present it, because it never dresses up a guess

Revenue is recorded — it comes from issued invoices. Team cost is recorded where hours are logged against cost rates. Client expenses, if you count them, are recorded where spend is assigned to a client. A cost completeness row says how much of your revenue carries any recorded cost at all, and where it carries none the return percentage is hidden instead of printed as 100%. That is what makes the number safe to present.

  • Every input badged Recorded, Partly recorded, Estimated or Not available, with one sentence on what was found
  • Says plainly what would sharpen it — usually a cost rate, or logging more time
  • A "What to fix" tab listing the specific gaps in your own data
The "What's behind these numbers" panel showing revenue and team cost as recorded, alongside cost completeness and work counted
It tells you what it recorded and what
Signals

It names the client, not the spreadsheet cell

The engine reads the same data for patterns worth acting on and writes them as plain sentences with the arithmetic attached: this client got 17.9% of the work your team finished but paid 2.1% of the revenue; this one's monthly revenue fell 12% and then 15%; this agreement earns less per hour than your usual. Each names the client, the numbers and the limit it crossed — and every limit is yours to edit.

  • Takes more than it pays — more of your team's work than of your revenue, needing no time tracking at all
  • At risk — monthly revenue dropping two months in a row, the churn pattern before the notice arrives
  • Low return under a heavy ticket load, raised only where cost was actually recorded
  • Room to grow — steady hours or work with no recurring agreement
  • A weekly Monday signal digest by email, so the list finds you
app.aspirepro.io/finance/profitability
Profitability signal cards naming clients at risk, with room to grow, and agreements earning below the usual rate
One client

Open one client and see the whole story

A per-client report with revenue, return on time, return percentage, hours logged and dollars earned per hour at the top; a "How this is calculated" line with that client's real numbers; revenue, cost and return plotted month by month; that client's share of the work your team finished; the agreements behind it with their monthly value and return; and the signals specific to that account. Export it as a PDF for the account review, with the "What's behind these numbers" table travelling with it.

  • Twelve months of revenue, cost and return on one chart
  • Return per agreement — which contract is carrying the account
  • PDF export for account reviews and partner meetings
app.aspirepro.io/finance/profitability
A single client's profitability report: revenue, efficiency, return on time, hours logged and dollars earned per hour, with how each figure is calculated and the client's share of the work
Imperfect data

It works before your data is perfect

Most firms do not track time on everything, and it still works — because the answer is not a guessed cost. Without a single timesheet you get each client's share of the tickets closed, project tasks completed and client meetings held, set against its share of the revenue. That comparison needs no assumptions at all, and it is the real answer to "who is draining us". If you want a cost figure beside it, set what an hour of your team costs and a few hours-per-item assumptions: the estimate appears in its own amber column, labelled, and never changes the recorded return.

  • Share of work vs share of revenue needs no time tracking, no cost rates and no accounting integration
  • Work that belongs to no client is named — companies that paid nothing, work not linked to any client — never dropped and never guessed onto an account
  • An optional estimated team cost, always labelled, that never enters the return, dashboards or signals
Profitability totals showing total revenue, total return, return percent and hours logged
It works before your data is perfect
How it works

How the return on time figure gets built

1

Revenue comes from invoices, counted the way you choose

Issued invoices first, before sales tax. By default, a month no invoice covered shows what the live agreement should have billed, marked with a ~ so it never reads as cash.

2

Team cost comes from hours × cost rates

Logged time priced at each person's cost rate becomes the team cost of serving that client.

3

Client expenses come off too, if you switch them on

Off by default, so the return is revenue minus team cost. Switch it on and approved billable expenses linked to a client, spend assigned to that customer in QuickBooks, and the processing fee on their card payments come off as well. Unassigned spend is overhead and stays out of every client's return.

4

Work is counted, and labelled

Tickets closed, project tasks completed and client meetings held become each client's share of the work — set against its share of the revenue.

Questions

Frequently asked questions

What is client profitability software?
It calculates what each client relationship earned for the time it took to deliver — for a services firm, mostly the cost of people's time. Revenue reporting alone cannot tell you this, which is why firms are routinely surprised to find their largest client is not the one most worth the team's time.
How is return on time calculated?
Revenue counted the way you choose — by default, issued invoices plus what live agreements should have billed in months no invoice covered, or invoices only — minus team cost (logged hours at each person's cost rate). If you switch on client expenses, billable expenses and spend assigned to that client in QuickBooks come off too. The result is the return on time, shown with return percentage and the dollars earned per hour. It is not your profit — that lives in QuickBooks, after every business expense. Nothing that belongs to no client is spread onto a client to make the books balance.
What does "recorded" versus "estimated" mean?
Each input is labelled with where it came from. Revenue from issued invoices is recorded. Team cost from logged hours at cost rates is recorded. A count of finished work items is an exact count but only an estimate of effort, and it says so. And where no cost was recorded at all, the return percentage is not shown — a missing figure is never dressed up as a fact.
Does it work if we do not track all our time?
Yes, and not by inventing a cost. Every client gets a share-of-work figure — its slice of the tickets closed, project tasks completed and client meetings held in the period — set against its slice of the revenue, which needs no time tracking, no cost rates and no accounting integration. Where no cost was recorded, the return percentage is hidden rather than shown as 100%, and the "What to fix" tab lists the exact inputs that would fix it. You can optionally price the untimed work by assumption; it shows in its own labelled column and never changes the recorded return.
How fresh are the numbers?
The current and previous month update a few minutes after time, invoices, payments, expenses or agreements change, and the page shows when they were last updated; a nightly rebuild runs as a safety net. Older months are frozen until you rebuild them deliberately, which is what keeps a closed month from changing underneath you: each month's agreements are snapshotted as they stood, so rebuilding last year gives you last year's numbers.
Can I see return on time by agreement or by person?
By agreement, yes: the same return is sliced per contract, with the dollars per hour each one actually earned — the real test of a fixed fee. Per person, deliberately not. The Team tab reports hours logged, billable percentage, the cost of their time and hours with no cost rate, because revenue is earned by a client relationship rather than by an individual, and dividing an invoice among the people who touched it would produce a made-up split rather than a return figure. It sits behind its own admin permission, since an hourly cost is close to pay.
How does it handle overhead?
It does not put overhead in a client's return. Rent, payroll, software and any spend assigned to no customer belong to the business, not to an account, so nothing that belongs to no client is spread across clients to make the books balance. That is what QuickBooks and your financial statements are for; your profit lives there. Profitability answers a different question — which client relationships are worth the team's time and which drain it — and it answers it only from cost it actually recorded.
Can I share it outside the app?
The per-client report exports as a PDF for account reviews and partner meetings, and the same figures are available as dashboard widgets and scheduled reports.
Documentation

Read the documentation

The full how-to for this module, written for the people who use it every day.

Bring your whole services business together

Stop stitching together five tools. Run sales, delivery, support, and billing from one organization — with an AI assistant on every page.