How Estavo Calculates Financial Figures
Every number in Estavo — every KPI card, every report total, every chart bar — derives from a single source of truth: the transaction ledger. This page explains exactly how each figure is computed so you understand what’s included, what’s excluded, and why your Estavo totals may differ from your bank account.
The Foundation: One Ledger, Two Directions
All financial data in Estavo starts from the Transaction table. Every transaction has a direction:
| Direction | Meaning | Examples |
|---|---|---|
| Credit | Money coming in | Airbnb payout, monthly rent, security deposit received |
| Debit | Money going out | Mortgage payment, insurance premium, utility bill, repair invoice |
The golden rule: Only Confirmed transactions count in any financial total. Draft and Void transactions are excluded from all calculations.
| Status | Counts in totals? | When it’s created |
|---|---|---|
| Draft | ❌ No | Auto-generated by an obligation template; not yet reviewed |
| Confirmed | ✅ Yes | Reviewed and accepted — either manually entered, confirmed from a draft, or CSV-imported |
| Void | ❌ No | Cancelled/removed; preserved for audit trail |
Obligation-generated drafts don’t count until you confirm them. If the Today view shows pending items or your totals seem low, check Money → filter Status: Draft to see what’s waiting for your review.
Total Income
Definition: Sum of all Confirmed Credit transactions in the selected period.
Total Income = SUM(amount)
WHERE direction = CREDIT
AND status = CONFIRMED
AND date BETWEEN periodStart AND periodEnd
AND orgId = [your organization]What’s included:
- STR booking payouts (Airbnb, VRBO, Direct, etc.)
- Monthly long-term rent received
- Any other credit transaction (late fees, security deposits, insurance reimbursements)
What’s not included:
- Draft transactions (unconfirmed obligation auto-generates)
- Void transactions
- Debit transactions of any kind
Total Expenses
Definition: Sum of all Confirmed Debit transactions in the selected period.
Total Expenses = SUM(amount)
WHERE direction = DEBIT
AND status = CONFIRMED
AND date BETWEEN periodStart AND periodEnd
AND orgId = [your organization]What’s included:
- Mortgage payments entered as transactions
- Insurance premium payments
- Utility bills (Spectrum, Comcast, propane, water, trash)
- Pool service, HVAC, elevator, landscaping
- Property tax payments
- Repairs, supplies, advertising
Property-level vs. unit-level costs both count:
- Shared costs (mortgage, insurance, HOA) attach to the property — counted in the org total
- Unit-specific costs (cleaning after a checkout, unit repair) attach to the unit — also counted
Net P&L
Net P&L = Total Income − Total Expenses- Positive — cash-flow positive period
- Negative — expenses exceeded income (common in off-season months for STR portfolios)
Net P&L does NOT include:
- Depreciation (non-cash; enter it manually as a DEBIT in the
depreciationcategory if your CPA calculates it) - Mortgage principal (reducing your loan balance builds equity, it isn’t an expense)
- Unrealized appreciation
On mortgage payments: A typical mortgage payment includes both principal and interest. Only the interest portion is a Schedule E deductible expense. If you want accurate P&L and Schedule E reporting, record only the interest amount under the mortgage_interest category, not the full payment. Your lender’s year-end Form 1098 shows the interest paid.
Income This Month vs. Previous Month
“This month” = the current calendar month (January 1 through January 31, etc.)
“Previous month” = the calendar month immediately before
Month-over-month change % (the ↑↓ badge):
Change % = ((this month − previous month) / previous month) × 100Rounded to 1 decimal place. If the previous month was $0, no badge is shown (can’t divide by zero).
Color interpretation:
- Income ↑ = green (more money coming in)
- Income ↓ = red (less income than last month)
- Expenses ↑ = red (costs increased)
- Expenses ↓ = green (costs decreased)
Income YTD and Expenses YTD
YTD (Year to Date): January 1 of the current calendar year through today.
ytdStart = January 1, 00:00:00 UTC (current year)
ytdEnd = now()This is the number your CPA needs for Schedule E. Estavo’s Schedule E export uses the same YTD window, broken down by category, ready to hand off.
Income and Expenses by Property
Each property card in Portfolio shows income and expenses scoped to that property:
Property Income:
All CREDIT CONFIRMED transactions where
unitId is one of the property's units
OR propertyId = this property
Property Expenses:
All DEBIT CONFIRMED transactions where
unitId is one of the property's units
OR propertyId = this propertyThis means a mortgage payment attached to the property (not a specific unit) is included in property-level expenses. A booking payout attached to Unit A is included in both Unit A’s income and the property’s income.
Obligation vs. Actual Transaction: The Critical Distinction
This is one of the most important concepts in Estavo. Many users confuse obligations (what you expect to pay) with transactions (what you actually paid).
The flow:
1. ObligationTemplate → defines the recurring schedule
"Selene Finance mortgage, $3,051.49/month, due on the 15th"
2. System auto-generates a DRAFT Transaction on the due date
Amount: $3,051.49 (from the template)
Status: DRAFT — does NOT count in any total
3. You review the draft in Money
This month's actual pull: $3,048.22 (escrow adjustment)
You edit the amount and click Confirm
4. CONFIRMED Transaction is posted to your ledger
Amount: $3,048.22
Status: CONFIRMED — NOW counts in Total ExpensesWhy the draft step matters: Bills change. Insurance renewals, escrow adjustments, utility rate changes. The draft step means your records reflect what actually happened, not what you expected. You always have the chance to correct the amount before it enters your official ledger.
Drafts don’t count. Confirmed transactions do. If your expenses look lower than expected, check the Draft filter in Money — you probably have unconfirmed obligation drafts waiting.
Occupancy Calculation
“Occupied Today” (shown in the KPI card):
A unit is counted as occupied today if there is a Confirmed Credit transaction (a booking) where:
check_indate ≤ todaycheck_outdate ≥ today
Occupied Today = COUNT(distinct units) with an active booking crossing today's date
Active Units = COUNT(units where isActive = true)The card shows occupied count and the fraction of active units as context: “3 of 11 active · 7 STR · 4 LTR”
Cash Flow Chart: 12-Month Rolling Window
The chart on the Today view covers the 12 calendar months ending at the current month.
Each bar represents:
- Income bar (teal): SUM of CREDIT CONFIRMED transactions in that calendar month
- Expense bar (muted): SUM of DEBIT CONFIRMED transactions in that calendar month
As you add more months of history, the chart becomes more useful for spotting seasonal patterns and year-over-year trends.
Why My Estavo Total Differs from My Bank Balance
Common reasons:
| Reason | Explanation |
|---|---|
| Unentered transactions | Transactions in your bank that haven’t been recorded in Estavo yet |
| Date difference | Estavo uses the transaction date (when you paid), not the bank settlement date |
| Mortgage principal | If you record the full mortgage payment as DEBIT, it inflates expenses — only interest is an expense |
| Security deposits | Deposits held in a separate account are liabilities, not income — record them correctly |
| Unconfirmed drafts | Drafts waiting for your confirmation aren’t counted yet |
| Platform fees netted | If Airbnb pays you net of their fee, the gross booking amount doesn’t match what hit your bank |
Schedule E and YTD: What Your CPA Gets
At tax time, go to Reports → Schedule E Export. This produces:
For each property:
Part I — Income
Line 3: Rents received = SUM of all CREDIT CONFIRMED for the year
Part II — Expenses
Line 5: Advertising = SUM of ADVERTISING DEBIT CONFIRMED
Line 6: Auto and travel = SUM of AUTO_AND_TRAVEL DEBIT CONFIRMED
Line 7: Cleaning/maintenance = SUM of CLEANING_AND_MAINTENANCE DEBIT CONFIRMED
...
Line 18: Depreciation = SUM of DEPRECIATION DEBIT CONFIRMED
Line 19: Other = SUM of OTHER DEBIT CONFIRMEDThe export is grouped by property so your CPA can complete one Schedule E Part I per property. See Schedule E Export for the full walkthrough.
Frequently Asked Questions
A transaction I entered isn’t showing up in my income total. Why?
Check its status. Go to Money, find the transaction, and look at the Status column. If it shows Draft, it won’t count until you click Confirm. If it’s Void, it’s been marked as cancelled.
My expense total seems higher than expected. What’s including extra?
Filter Money by Direction: Debit and Status: Confirmed, then sort by date to see exactly what’s counted. If a mortgage payment includes principal, that’s inflating expenses — see the note above about recording only the interest portion.
Do I have to record every month manually?
No. Set up Obligations for recurring bills and Estavo auto-generates draft transactions on schedule. You still confirm each one (to catch amount changes), but you don’t need to manually create the transaction from scratch each month.
Is Estavo cash-basis or accrual accounting?
Cash-basis. The transaction date field is when the money moved — not when the invoice was issued or the service was rendered. This matches how the IRS expects self-managing landlords to report rental income and expenses on Schedule E.
What does “Income YTD” cover if I started in March?
YTD covers January 1 through today, regardless of when you signed up. If you started in March and only entered transactions from March onward, your YTD total reflects March through today — January and February will show $0 because no transactions exist for those months.