These examples show how the billing formula applies in real scenarios. Each example walks through the calculation step by step.
Quick Reference
The billing formula for each requirement:
Billable = MIN(maximum, MAX(average, actual))
| Scenario | Actual vs Estimate | Result |
|---|
| Fast completion | Actual < Average | Bill the average |
| Normal completion | Average ≤ Actual ≤ Max | Bill the actual |
| Overrun | Actual > Max | Bill the max (cap) |
Example 1: Fast Completion (Banked Time)
A developer finishes efficiently, beating the quoted average.
Task: Update checkout flow
Requirement: Development, sized M (3-6 hours)
| Metric | Value |
|---|
| Average | 4.5 hours |
| Maximum | 6 hours |
| Actual logged | 3 hours |
Calculation:
Billable = MIN(6, MAX(4.5, 3))
= MIN(6, 4.5)
= 4.5 hours
Result:
- Client pays: 4.5 hours (the quoted average)
- Team worked: 3 hours
- Banked time: 1.5 hours (profit margin)
Banked time rewards efficiency. The team completed quality work in less time, creating margin for the agency.
Example 2: Normal Completion
Work takes longer than average but stays within the quoted range.
Task: Build product filters
Requirement: Development, sized L (8-16 hours)
| Metric | Value |
|---|
| Average | 12 hours |
| Maximum | 16 hours |
| Actual logged | 14 hours |
Calculation:
Billable = MIN(16, MAX(12, 14))
= MIN(16, 14)
= 14 hours
Result:
- Client pays: 14 hours (actual time)
- Team worked: 14 hours
- No banked time or overage
This is the expected outcome when estimates are accurate but the work is on the complex side of the range.
Example 3: Overrun (Capped)
Work exceeds the maximum, but the client is protected by the cap.
Task: Integrate payment gateway
Requirement: Development, sized L (8-16 hours)
| Metric | Value |
|---|
| Average | 12 hours |
| Maximum | 16 hours |
| Actual logged | 22 hours |
Calculation:
Billable = MIN(16, MAX(12, 22))
= MIN(16, 22)
= 16 hours
Result:
- Client pays: 16 hours (the maximum cap)
- Team worked: 22 hours
- Overage: 6 hours (absorbed by agency, non-billable)
Overage is a red flag. Review why this happened—was the scope larger than expected? Was there technical debt? Should the estimate have been XL?
Example 4: Multi-Requirement Task
A task with both design and development, each calculated separately.
Task: Redesign account settings page
Design Requirement (sized M)
| Metric | Value |
|---|
| Average | 4.5 hours |
| Maximum | 6 hours |
| Actual logged | 3.5 hours |
Billable = MIN(6, MAX(4.5, 3.5)) = 4.5 hours
Banked: 1 hour
Development Requirement (sized L)
| Metric | Value |
|---|
| Average | 12 hours |
| Maximum | 16 hours |
| Actual logged | 15 hours |
Billable = MIN(16, MAX(12, 15)) = 15 hours
Banked: 0, Overage: 0
Task Totals
| Metric | Design | Development | Total |
|---|
| Quoted (avg) | 4.5h | 12h | 16.5h |
| Actual | 3.5h | 15h | 18.5h |
| Billable | 4.5h | 15h | 19.5h |
| Banked | 1h | 0 | 1h |
| Overage | 0 | 0 | 0 |
Result: Despite development taking longer, the design efficiency created 1 hour of banked time overall.
Example 5: Tiny Task (XS)
Small tasks use the same formula, just with smaller numbers.
Task: Fix typo on contact page
Requirement: Development, sized XS (0-30 mins)
| Metric | Value |
|---|
| Average | 15 mins |
| Maximum | 30 mins |
| Actual logged | 10 mins |
Calculation:
Billable = MIN(30, MAX(15, 10))
= MIN(30, 15)
= 15 mins
Result:
- Client pays: 15 mins
- Team worked: 10 mins
- Banked: 5 mins
Even tiny efficiency gains add up across many small tasks.
Example 6: Large Task (XXL)
Large tasks follow the same rules but with bigger stakes.
Task: Build customer portal MVP
Requirement: Development, sized XXL (40-120 hours)
| Metric | Value |
|---|
| Average | 80 hours |
| Maximum | 120 hours |
| Actual logged | 95 hours |
Calculation:
Billable = MIN(120, MAX(80, 95))
= MIN(120, 95)
= 95 hours
Result:
- Client pays: 95 hours (actual)
- Within the quoted range
- No banked time or overage
Common Patterns
Pattern: Consistent Small Gains
When the team regularly finishes 10-20% under average:
| Task | Avg | Actual | Billable | Banked |
|---|
| Task A | 8h | 7h | 8h | 1h |
| Task B | 4h | 3.5h | 4h | 0.5h |
| Task C | 12h | 10h | 12h | 2h |
| Task D | 6h | 5h | 6h | 1h |
| Total | 30h | 25.5h | 30h | 4.5h |
Interpretation:
- Team is efficient
- Estimates may be slightly conservative
- Good profit margins
Pattern: Occasional Overruns
Mixed results with some tasks going over:
| Task | Avg | Max | Actual | Billable | Result |
|---|
| Task A | 8h | 12h | 6h | 8h | +2h banked |
| Task B | 4h | 6h | 4h | 4h | neutral |
| Task C | 12h | 16h | 18h | 16h | −2h overage |
| Task D | 6h | 8h | 5h | 6h | +1h banked |
| Total | 30h | 42h | 33h | 34h | +1h net |
Interpretation:
- Mostly healthy
- Task C needs investigation—why the overrun?
- Net positive despite one problem task
Pattern: Systemic Underestimation
When overruns are frequent:
| Task | Avg | Max | Actual | Billable | Overage |
|---|
| Task A | 8h | 12h | 14h | 12h | 2h |
| Task B | 4h | 6h | 8h | 6h | 2h |
| Task C | 12h | 16h | 20h | 16h | 4h |
| Total | 24h | 34h | 42h | 34h | 8h |
Interpretation:
- Serious estimation problem
- 8 hours of non-billable work
- Need to review estimation process
- Consider bumping future tasks up a size
Month-End Rollover Example
Showing how billable hours affect next month’s allocation.
Client: TechStart Inc
Monthly allocation: 60 hours
Month 1 Tasks
| Task | Avg | Billable |
|---|
| Homepage redesign | 16h | 18h |
| Blog integration | 12h | 14h |
| Contact form | 8h | 8h |
| Mobile fixes | 10h | 12h |
| Performance audit | 8h | 10h |
| Total | 54h | 62h |
Rollover calculation:
- Allocated: 60 hours
- Billable: 62 hours
- Rollover: 2 hours
Month 2
- Base allocation: 60 hours
- Minus rollover: 2 hours
- Available: 58 hours
PM plans Month 2 work to fit within 58 hours.
Billing Model
The formula explained
T-Shirt Sizing
Size definitions and ranges
Hour Rollover
How hours carry between months
Efficiency
Understanding banked time and overage