I just finished calculating my “true hourly rate” for my freelance consulting work and nearly had a panic attack.
What I thought I was making: $150/hour (gross rate I charge clients)
What I’m actually making: $78/hour (after ALL costs and hidden time)
And that’s for my active income — the money I trade my time for directly.
Meanwhile, I have a digital course I created last year that’s still earning $1,200/month with maybe 2 hours of maintenance work. That’s passive income at an effective rate of $600/hour.
But here’s the problem: I was tracking both income streams the exact same way in Beancount.
open Income:Freelance:Consulting
open Income:Passive:CoursesSales
Recording them? Sure. Understanding their true profitability? Not even close.
Why Active and Passive Income Need Different Metrics
After diving into this, I realized that the same dollar of income means completely different things depending on how it was earned.
Active Income: It’s All About Time Cost
When you trade time for money, the key metric is true hourly rate:
True Hourly Rate = (Revenue - Direct Costs - Hidden Costs - Extra Taxes) ÷ Total Hours
This includes:
- Direct costs: Software subscriptions, equipment, materials
- Hidden costs: Childcare, commuting, health impact
- Hidden time: Invoicing, emails, client management, marketing
- Extra taxes: Self-employment tax (15.3%), income tax difference from W-2
Research shows most people running side hustles are making less than minimum wage when they calculate their true hourly rate.
Example: A delivery driver thinking they make $25/hour might actually be making $11/hour after gas, maintenance, and unpaid waiting time.
Passive Income: It’s All About Return on Time Invested
Passive income has a completely different ROI structure because you invest time upfront and earn over time.
The key metric is Time-Adjusted ROI:
Time-Adjusted ROI = Total Revenue to Date ÷ Initial Hours Invested
And this number improves over time as the asset continues earning.
According to 2026 data, realistic passive income timelines look like:
- 3-12 months of intensive upfront work (50-200 hours for digital products)
- 2-5 hours per week of ongoing maintenance
- 12-36 months before ROI matches or exceeds active income rates
Example: I spent 120 hours creating my course last year. It’s earned $14,400 so far (12 months × $1,200). That’s an effective rate of $120/hour — and it’s still earning.
By month 24, if revenue continues, that rate could climb to $240/hour.
My Broken Tracking Setup (Before)
Here’s how I was tracking income before I understood this difference:
; Active income
2026-02-01 * "Client A" "Consulting project" #hours:16
Assets:Checking 2,400.00 USD
Income:Freelance:Consulting -2,400.00 USD
; Passive income
2026-02-01 * "Gumroad" "Course sales"
Assets:Checking 1,200.00 USD
Income:Passive:CourseSales -1,200.00 USD
What’s wrong with this?
- No upfront investment tracking for the course (120 hours of work = invisible)
- No cost allocation for consulting (software, taxes, hidden time = invisible)
- No time-adjusted metrics (can’t compare profitability across streams)
Result: I was prioritizing consulting work (higher gross $$) over passive income development (higher ROI per hour invested).
My New Tracking Setup (After)
For Active Income: Track True Cost Per Project
; Track the gross income
2026-02-05 * "Client A" "Website redesign project" #hours:16 #category:consulting
Assets:Checking 2,400.00 USD
Income:Freelance:Consulting -2,400.00 USD
; Allocate taxes immediately
2026-02-05 * "Tax Reserve" "30% self-employment + income tax"
Assets:Checking -720.00 USD
Assets:Savings:TaxReserve 720.00 USD
; Track hidden costs
2026-02-05 * "Project Costs" "Software + admin time"
Expenses:Business:Software 55.00 USD ; Adobe subscription
Expenses:Business:AdminTime 320.00 USD ; 2 hrs @ $160 opportunity cost
Assets:Checking -375.00 USD
; Track hidden admin time separately
2026-02-05 * "Admin Time" "Client mgmt, invoicing" #hours:2
Expenses:Business:AdminTime 320.00 USD
Assets:Checking -320.00 USD
Now I can calculate true hourly rate:
Revenue: $2,400
Taxes: -$720
Direct costs: -$55
Admin time cost: -$320
Net: $1,305
Total hours: 16 (project) + 2 (admin) = 18 hours
True hourly rate: $1,305 ÷ 18 = $72.50/hour
Much lower than my $150 gross rate.
For Passive Income: Track Upfront Investment + Ongoing Returns
; Track initial time investment (one-time)
2025-02-01 * "Course Creation" "Initial build time" #hours:120
Assets:TimeInvested:Course 120.00 HOURS
Equity:TimeBank -120.00 HOURS
note: "Digital course development"
; Track monthly revenue (ongoing)
2026-02-01 * "Gumroad" "Course sales - Feb 2026" #hours:2
Assets:Checking 1,200.00 USD
Income:Passive:CourseSales -1,200.00 USD
note: "Month 12, maintenance only"
Now I can calculate time-adjusted ROI:
Total hours invested: 120 (initial) + (12 months × 2 hrs) = 144 hours
Total revenue to date: $14,400 (12 months × $1,200)
Effective hourly rate: $14,400 ÷ 144 = $100/hour
Projected at month 24: $28,800 ÷ 168 hrs = $171/hour
And this rate keeps improving as the asset earns with minimal maintenance.
The “Kill Threshold” Decision Framework
Now that I’m tracking both streams properly, I can make data-driven decisions about where to invest my time.
My rules:
- Active income projects must clear $75/hour true rate (after all costs)
- Passive income projects must show $50/hour effective rate by month 6
- If a stream drops below threshold for 3 months, kill it and redirect time elsewhere
This framework helped me:
- Drop a low-paying consulting client ($45/hr true rate) and replace with higher-value work
- Double down on course creation (effective rate climbing from $100/hr to projected $171/hr)
- Say no to a new side project that would have paid $60/hr gross but only $30/hr true rate
Comparing Active vs Passive: The Real Trade-Offs
Here’s what my tracking revealed about the fundamental differences:
| Metric | Active Income | Passive Income |
|---|---|---|
| Initial effort | Low (client calls, proposals) | High (50-200 hours) |
| Time to first dollar | Fast (1-2 weeks) | Slow (3-12 months) |
| Revenue ceiling | Limited by hours (40-60/week max) | Unlimited (24/7 earning) |
| Income stability | High variance (project-based) | Low variance (steady drip) |
| Hourly rate trajectory | Flat or declining (burnout) | Improving (asset compounds) |
| Scalability | Low (trade time for money) | High (one-to-many) |
| Tax efficiency | Lower (SE tax + marginal rate) | Higher (potentially long-term gains) |
Key insight: Active income gives you cash flow today. Passive income gives you leverage tomorrow.
The optimal strategy isn’t choosing one — it’s balancing both based on your current needs and long-term goals.
Queries to Track the Metrics
Here’s how I query this data in Beancount:
True hourly rate by income stream:
SELECT
account,
SUM(COST(position)) as total_revenue,
SUM(CAST(GET_META(account, 'hours') AS DECIMAL)) as total_hours,
SUM(COST(position)) / NULLIF(SUM(CAST(GET_META(account, 'hours') AS DECIMAL)), 0) as hourly_rate
FROM entries
WHERE account ~ 'Income:Freelance'
AND date >= 2026-01-01
GROUP BY account
ORDER BY hourly_rate DESC
Passive income ROI over time:
SELECT
YEAR(date) as year,
MONTH(date) as month,
SUM(COST(position)) as monthly_revenue,
SUM(SUM(COST(position))) OVER (ORDER BY YEAR(date), MONTH(date)) as cumulative_revenue,
144 as total_hours_invested,
SUM(SUM(COST(position))) OVER (ORDER BY YEAR(date), MONTH(date)) / 144 as effective_hourly_rate
FROM entries
WHERE account = 'Income:Passive:CourseSales'
GROUP BY YEAR(date), MONTH(date)
ORDER BY year, month
Income stream comparison:
SELECT
CASE
WHEN account ~ 'Income:Freelance' THEN 'Active'
WHEN account ~ 'Income:Passive' THEN 'Passive'
END as income_type,
SUM(COST(position)) as total_income,
AVG(COST(position) / NULLIF(CAST(GET_META(account, 'hours') AS DECIMAL), 0)) as avg_hourly_rate
FROM entries
WHERE account ~ 'Income'
AND date >= 2026-01-01
GROUP BY income_type
My Questions for the Community
1. How do you track upfront time investment for passive income projects?
Do you use a separate Assets:TimeInvested account like I do? Or a different approach?
2. What’s your “kill threshold” for side hustles?
At what true hourly rate do you cut a project and redirect that time elsewhere?
3. Do you track opportunity cost of your time?
When I spend 2 hours on admin work, I record it at my $160/hr consulting rate (opportunity cost). Does this make sense or is it overthinking?
4. How do you handle tax differences between active and passive income?
Should I be tracking self-employment tax (15.3%) separately for active income since passive income doesn’t incur it?
5. What about passive income that takes YEARS to pay off?
I’m considering writing a book (300+ hours upfront), but the ROI timeline might be 3-5 years. How do you evaluate these long-horizon projects?
TL;DR: Active income and passive income have fundamentally different economics. If you track them the same way in Beancount, you’re flying blind on what’s actually profitable. Track true hourly rate for active work (including all hidden costs and time) and time-adjusted ROI for passive assets (upfront investment amortized over ongoing earnings). The data will change how you allocate your time.
Sources: