Billable Hours Profitability — How to Know If Projects Make Money
Here's an uncomfortable truth: high utilization doesn't automatically mean high profitability.
You can be 95% utilized and still lose money on a project. Your team can log every hour diligently and still erode margins. The utilization report can look great while the P&L looks terrible.
The issue is confusing activity with profitability. Billable hours are an input. Profit is the output. The relationship between them isn't as straightforward as most firms assume.
The Math: From Hours to Profit
Let's start with the fundamental calculation.
Revenue per Hour = Billing Rate
If you bill at $200/hour and work 100 hours, you generate $20,000 in revenue.
Cost per Hour = Loaded Cost Rate
This is where most firms get it wrong. Your cost isn't the consultant's hourly wage—it's their fully loaded cost.
Gross Profit per Hour = Billing Rate - Loaded Cost Rate
If you bill at $200/hour and your loaded cost is $85/hour, your gross profit is $115/hour.
Gross Margin = Gross Profit / Revenue × 100
$115 / $200 = 57.5% gross margin
Project Profit = Gross Profit per Hour × Billable Hours
At $115/hour margin and 100 hours, you've made $11,500.
Simple enough. But every number in this equation has failure modes.
Understanding Loaded Cost Rates
The loaded cost rate is where profitability analysis succeeds or fails. If this number is wrong, everything downstream is wrong.
What Goes Into Loaded Cost
Direct Costs:
- Base salary
- Variable compensation (bonus, commission)
- Benefits (health, dental, vision, life insurance)
- Retirement contributions (401k match, pension)
- Payroll taxes (employer portion)
Indirect Costs (Overhead Allocation):
- Facilities (office space, utilities)
- Equipment and tools (laptops, software licenses)
- Administrative overhead (HR, finance, legal support)
- Training and professional development
- Management overhead (non-billable partner/director time)
Calculating Loaded Cost Rate
Step 1: Calculate Annual Fully Loaded Cost
| Component | Amount |
|---|---|
| Base Salary | $100,000 |
| Bonus (target) | $10,000 |
| Benefits (28% of salary) | $28,000 |
| Payroll Taxes (7.65%) | $7,650 |
| Overhead Allocation | $22,000 |
| Total Annual Cost | $167,650 |
Step 2: Calculate Available Hours
| Component | Hours |
|---|---|
| Work weeks per year | 52 |
| Hours per week | 40 |
| Gross hours | 2,080 |
| Less: PTO | (120) |
| Less: Holidays | (80) |
| Less: Training | (40) |
| Less: Admin/Internal | (40) |
| Available Hours | 1,800 |
Step 3: Calculate Loaded Rate
Loaded Cost Rate = $167,650 / 1,800 = $93.14/hour
Why This Matters
If you assume this consultant "costs" $50/hour (salary divided by 2,000 hours), you'll think you have amazing margins. You'll bid work too cheap. You'll discover the truth at year-end when the P&L doesn't match expectations.
The fully loaded rate captures reality. Use it.
The Profitability Equation in Practice
Let's work through a realistic scenario.
The Engagement:
6-month CRM implementation with a 3-person team.
| Role | Bill Rate | Loaded Cost | Margin/Hr | Monthly Hours |
|---|---|---|---|---|
| Solution Architect | $225/hr | $120/hr | $105/hr | 80 |
| Senior Developer | $175/hr | $85/hr | $90/hr | 160 |
| Developer | $140/hr | $60/hr | $80/hr | 160 |
Monthly Revenue:
- Architect: 80 × $225 = $18,000
- Sr. Developer: 160 × $175 = $28,000
- Developer: 160 × $140 = $22,400
- Total: $68,400
Monthly Cost:
- Architect: 80 × $120 = $9,600
- Sr. Developer: 160 × $85 = $13,600
- Developer: 160 × $60 = $9,600
- Total: $32,800
Monthly Gross Profit: $68,400 - $32,800 = $35,600
Monthly Gross Margin: 52.0%
6-Month Engagement:
- Total Revenue: $410,400
- Total Cost: $196,800
- Gross Profit: $213,600
- Gross Margin: 52.0%
This looks healthy. Now let's see how it goes wrong.
The Five Margin Leaks
Margin Leak 1: Scope Creep Without Change Orders
The client asks for "small" additions. "Can we also include X?" "While you're in there, can you add Y?" Each request seems minor. You accommodate because you want to be responsive.
The Impact:
Your team works an extra 10 hours per week on out-of-scope requests. That's 40 hours per month unbilled.
- Lost revenue: 40 × $175 (average rate) = $7,000/month
- But cost continues: 40 × $80 (average cost) = $3,200/month
- Net margin loss: $7,000/month revenue, $3,200/month cost = 100% margin leak
Over 6 months: $42,000 in unbilled work, $19,200 in cost you absorb.
Your new margin: ($213,600 - $19,200) / $410,400 = 47.3%
You just gave away 4.7 margin points to scope creep.
Prevention: Log all out-of-scope requests. Estimate the effort. Either get a change order or explicitly agree with the client that it won't be done.
Margin Leak 2: Underutilization
Your team is assigned to the project, but they're not fully utilized. Internal meetings, waiting for client inputs, context switching with other projects, administrative overhead.
The Impact:
Your Senior Developer is supposed to bill 160 hours/month but averages 140 due to non-billable time.
- Lost revenue: 20 × $175 = $3,500/month
- But you still pay them: cost continues at loaded rate
- For a 6-month project: $21,000 in unrealized revenue
Your new margin: Revenue drops from $410,400 to $389,400. Margin drops from 52% to 49.5%.
Prevention: Track utilization weekly. Address gaps immediately. If someone's blocked, unblock them or redeploy them.
Margin Leak 3: Rate Card Misalignment
Your Solution Architect is doing Senior Developer work because the client's dev environment isn't ready for architecture work yet. You bill at the architect rate, but the work could be done by someone cheaper.
Wait—that actually helps your revenue. The problem is the reverse.
Your Senior Developer is doing architect-level work (making design decisions, leading technical direction) but you're billing at Senior Developer rates because that's who's staffed.
The Impact:
40 hours/month of architect-level work billed at Sr. Dev rate:
- Billed: 40 × $175 = $7,000
- Should have billed: 40 × $225 = $9,000
- Revenue leakage: $2,000/month
Or worse: you have senior resources doing junior work:
- Architect doing configuration work that a developer could do
- Cost: 40 × $120 = $4,800
- Should cost: 40 × $60 = $2,400
- Margin leak: $2,400/month
Prevention: Match work to appropriate role levels. If you need to flex up, bill up. If seniors are doing junior work, reassign it.
Margin Leak 4: Travel & Expense Overruns
Your SOW includes T&E at cost, capped at $15,000. Airfare got expensive. The client's office is in a pricey city. Your team spent $22,000.
The Impact:
- Billed T&E: $15,000 (cap)
- Actual T&E: $22,000
- T&E margin hit: -$7,000
This comes straight off gross profit.
Prevention: Track T&E against cap throughout the engagement. Get client approval before exceeding, or reduce travel frequency.
Margin Leak 5: Write-Offs and Billing Adjustments
The team logged 1,000 hours, but you only billed 920. Why?
- 40 hours written off due to "learning curve on new technology"
- 30 hours written off as "client goodwill" after a deliverable quality issue
- 10 hours administrative that shouldn't have been logged to the project
The Impact:
80 hours unbilled at $175 average = $14,000 revenue lost But you still incurred the cost: 80 × $80 average = $6,400
Net margin impact: $14,000 revenue loss, $6,400 cost absorbed = 17.5% of what should have been billed.
Prevention: Track write-offs explicitly. If they're systemic, address the root cause (training, staffing, scope clarity). Don't normalize giving away time.
Cumulative Impact: A Sobering Example
Let's see what all five leaks do to our $400K engagement:
| Leak | Revenue Impact | Cost Impact | Margin Impact |
|---|---|---|---|
| Scope creep | -$42,000 | +$19,200 | -$61,200 |
| Underutilization | -$21,000 | $0 | -$21,000 |
| Rate misalignment | -$12,000 | $0 | -$12,000 |
| T&E overrun | $0 | +$7,000 | -$7,000 |
| Write-offs | -$14,000 | +$6,400 | -$20,400 |
| Total | -$89,000 | +$32,600 | -$121,600 |
Original Projection:
- Revenue: $410,400
- Cost: $196,800
- Margin: $213,600 (52%)
Actual Result:
- Revenue: $321,400
- Cost: $229,400
- Margin: $92,000 (28.6%)
You lost 23 margin points. On a $400K engagement, that's $95K in profit that evaporated.
How to Track Billable Hours Profitability
Metric 1: Gross Margin per Hour by Role
Track the actual spread between billing and cost for each role, each month.
| Role | Bill Rate | Actual Cost Rate | Margin/Hr | Target |
|---|---|---|---|---|
| Architect | $225 | $122 | $103 | $105 |
| Sr. Dev | $175 | $87 | $88 | $90 |
| Developer | $140 | $62 | $78 | $80 |
If actual margin per hour drifts below target, investigate.
Metric 2: Billable vs. Total Hours
Track hours logged vs. hours billed.
| Period | Hours Logged | Hours Billed | Realization |
|---|---|---|---|
| Month 1 | 410 | 398 | 97.1% |
| Month 2 | 425 | 380 | 89.4% |
| Month 3 | 408 | 412 | 100.0% |
Month 2 has 46 hours logged but not billed. Why? Find out.
Metric 3: Utilization by Person
Track individual utilization against target.
| Person | Available | Billable | Utilization | Target |
|---|---|---|---|---|
| A. Smith | 160 | 152 | 95% | 90% |
| B. Jones | 160 | 128 | 80% | 85% |
| C. Davis | 160 | 112 | 70% | 85% |
C. Davis is 15 points below target. That's 24 hours of lost billings per month.
Metric 4: Scope Change Log
Track every out-of-scope request.
| Request | Estimated Hours | Status | Billed? |
|---|---|---|---|
| Add report X | 8 | Completed | No |
| Modify workflow Y | 16 | Completed | No |
| New integration Z | 40 | In Progress | Change order pending |
This makes scope creep visible. If the "No" column is growing, you have a problem.
Metric 5: Project Margin Trend
Track margin monthly, not just at project end.
| Month | Revenue | Cost | Margin % | Trend |
|---|---|---|---|---|
| 1 | $68,400 | $32,800 | 52.0% | Baseline |
| 2 | $65,100 | $34,200 | 47.5% | -4.5 pts |
| 3 | $62,800 | $35,600 | 43.3% | -4.2 pts |
Margin is eroding. At this rate, you'll finish the project at 35% margin, not 52%.
Act now, not at project close.
Tools for Profitability Tracking
Tracking billable hours profitability requires:
- Accurate time tracking — by project, work item, and person
- Rate management — billing rates AND cost rates, with effective dates
- Automated calculations — margin per hour, utilization, realization
- Real-time visibility — not month-end reports
MyProjectBudget provides:
- Dynamic billing rates with effective dates
- Loaded cost rate tracking
- Real-time gross margin by project and role
- Utilization and realization metrics
- Budget vs. actuals with drill-down
You'll see profitability as it happens, not after the damage is done.
The Bottom Line
Billable hours are not profit. They're an input to a calculation that depends on:
- Accurate cost rates (fully loaded, not just salary)
- Rate realization (billing what you should)
- Utilization (actually billing available time)
- Scope discipline (not giving away work)
Firms that track only utilization miss the picture. You can be 90% utilized and barely profitable if your cost rates are wrong, your billing has leakage, or you're constantly absorbing out-of-scope work.
Track the full profitability equation. See margin in real time. Act on problems before they compound.
Ready to see whether your billable hours are actually profitable? MyProjectBudget shows you gross margin in real time—by project, by role, by work item. Start your free trial and stop confusing activity with profit.