Revenue, cost, profit, and margin per client. One client is running at a loss. Generated by AI via Proxuma Power BI MCP server.
Revenue, cost, profit, and margin per client. One client is running at a loss. Generated by AI via Proxuma Power BI MCP server.
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: MSP owners, finance leads, and operations managers tracking profitability
How often: Monthly for financial reviews, quarterly for strategic planning, on-demand for pricing decisions
Revenue, cost, profit, and margin per client. One client is running at a loss. Generated by AI via Proxuma Power BI MCP server.
EVALUATE
ROW(
"UnprofitableClients",
COUNTROWS(
FILTER(
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"Profit", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
- CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost]))
),
[Profit] < 0
)
),
"TotalLoss",
SUMX(
FILTER(
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"Profit", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
- CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost]))
),
[Profit] < 0
),
[Profit]
),
"AvgMargin",
DIVIDE(
SUM('BI_Autotask_Billing_Items'[total_amount])
- SUM('BI_Autotask_Billing_Items'[our_cost]),
SUM('BI_Autotask_Billing_Items'[total_amount])
)
)
The unprofitable client is highlighted in red at the top. All other clients sorted by margin percentage, lowest first.
| Metric | Value |
|---|---|
| Revenue | $6,697,517 |
| Cost | $2,573,783 |
| Margin | 61.6% |
| Companies | 160 |
EVALUATE ROW("TotalChargesRevenue", SUM('BI_Autotask_Charges'[billable_amount]), "TotalChargesCost", SUM('BI_Autotask_Charges'[extended_cost]), "GrossMargin", (SUM('BI_Autotask_Charges'[billable_amount]) - SUM('BI_Autotask_Charges'[extended_cost])) / SUM('BI_Autotask_Charges'[billable_amount]), "Companies", DISTINCTCOUNT('BI_Autotask_Charges'[company_id]))
The only client where internal costs exceed billed revenue
Garcia LLC generated nearly €590K in revenue, placing them 5th in the portfolio by billing volume. That is not a small account. The problem is on the cost side: €645,574 in internal labor and resource costs, which is €55,879 more than the client pays.
With 1,317 tickets and 670 worked hours, Garcia LLC demands significant service desk time. The effective cost per worked hour is €963, which suggests the cost figure includes more than just technician time. It likely factors in tool licensing, overhead allocation, and possibly subcontracted work that eats into the margin.
For comparison, the portfolio average margin sits at 55.6%. Garcia LLC runs at -9.5%. Every euro of revenue from this client costs €1.09 to deliver.
EVALUATE
CALCULATETABLE(
ROW(
"Revenue", SUM('BI_Autotask_Billing_Items'[total_amount]),
"Cost", SUM('BI_Autotask_Billing_Items'[our_cost]),
"Profit", SUM('BI_Autotask_Billing_Items'[total_amount])
- SUM('BI_Autotask_Billing_Items'[our_cost]),
"Tickets", COUNTROWS('BI_Autotask_Tickets'),
"WorkedHours", SUM('BI_Autotask_Tickets'[worked_hours])
),
'BI_Autotask_Companies'[company_name] = "Garcia LLC"
)
How many clients fall into each margin band
Nine out of ten clients operate above 50% margin. The distribution clusters between 50% and 60%, which is typical for managed services contracts. Two clients exceed 60%: Richards Burke Fowler at 67.4% and Hernandez Ltd at 61.0%. Only one client falls below zero.
EVALUATE
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"Revenue", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
"Cost", CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"MarginPct",
DIVIDE(
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
- CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
)
)
ORDER BY [MarginPct] ASC
Side-by-side comparison. When the red bar (cost) exceeds the teal bar (revenue), the client is unprofitable.
EVALUATE
TOPN(
20,
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"Revenue", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
"Cost", CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"Profit", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
- CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"Tickets", CALCULATE(COUNTROWS('BI_Autotask_Tickets')),
"WorkedHours", CALCULATE(SUM('BI_Autotask_Tickets'[worked_hours]))
),
[Revenue], DESC
)
With a -9.5% margin, Garcia LLC costs €1.09 for every €1.00 in revenue. The loss totals €55,879. Their 1,317 tickets and 670 worked hours indicate heavy service consumption that the current contract does not cover.
Nelson Taylor Hicks (50.3%) and Edwards Hall Hernandez (52.2%) are profitable but their margins are below the portfolio average of 55.6%. A spike in ticket volume could push them toward unprofitability.
At 67.4% margin, Richards Burke Fowler generates €221,073 in profit from €328,165 in revenue. Low cost-to-serve and healthy billing make this account a model for what good contract structures look like.
Patterson Hood Perez (€1.31M profit) and Martin Group (€1.32M profit) together account for more than half of total portfolio profit. That concentration is worth monitoring.
EVALUATE
TOPN(
20,
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"Revenue", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
"Cost", CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"Profit", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
- CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"MarginPct", DIVIDE(
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
- CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
)
),
[Revenue], DESC
)
1. Audit the Garcia LLC contract immediately. Pull the agreement and compare contracted hours, included services, and billing rates against actual consumption. A 1,317-ticket volume with 670 worked hours at a -9.5% margin means the contract was either under-priced at signing or the scope has expanded without a matching rate increase.
2. Renegotiate or restructure. Options include raising the monthly recurring rate, moving to a per-device or per-user pricing model, capping included hours with overage billing, or reducing the scope of services covered under the agreement. Present the data. The numbers speak for themselves.
3. Monitor the two borderline clients. Nelson Taylor Hicks and Edwards Hall Hernandez sit at 50.3% and 52.2% margin. Set up a monthly margin alert in Power BI. If either drops below 48% for two consecutive months, trigger a contract review.
4. Protect the high-margin accounts. Richards Burke Fowler (67.4%) and Hernandez Ltd (61.0%) are efficient and profitable. Assign dedicated account management, prioritize their renewals, and use them as reference accounts for similar prospects.
5. Address portfolio concentration risk. Patterson Hood Perez and Martin Group represent over 50% of total profit. Losing either would have a material impact. Diversify by growing mid-tier accounts like Wall PLC and Martinez Contreras Rios.
-- Clients below 53% margin (watch list)
EVALUATE
FILTER(
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"MarginPct", DIVIDE(
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
- CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount]))
)
),
[MarginPct] < 0.53
)
The our_cost field in Autotask billing items represents the internal cost of delivering a service. It typically includes technician labor rates, tool licensing allocated per client, and any third-party costs passed through the billing system. Proxuma Power BI pulls this field directly from the Autotask API.
Margin = (Revenue - Cost) / Revenue, expressed as a percentage. A client with €100,000 in revenue and €45,000 in cost has a 55% margin. A negative margin means cost exceeds revenue.
Industry benchmarks for managed services margins range from 50% to 65%. Below 50% warrants investigation. Below 40% typically means the contract is under-priced or the client consumes more resources than scoped. Above 65% is strong performance.
The query sums all billing items (total_amount) per company. This includes recurring managed services revenue, time-and-materials billing, project billing, and product resale. If your Autotask instance categorizes billing items differently, the numbers will reflect whatever is in your billing items table.
Yes. Connect Proxuma Power BI to your Autotask PSA, add an AI tool via MCP, and ask the same question. The AI writes the DAX queries, runs them against your real billing data, and produces a report like this in under fifteen minutes.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started