Home ยท Blog ยท Field Notes
2026-07-28 STR TAX ยท SCHEDULE E 9 min read

The 'Gross Rent' Trap in PMS Exports (Why Your Schedule E Line 3 Is Probably Wrong)

Every property management system I've used โ€” Hospitable, Guesty, Hostaway, OwnerRez, Lodgify โ€” has a column literally labeled "Gross Revenue" or "Gross Rent" in its reservations export. It's a lie. Not maliciously, but consistently. What that column actually holds is net of the platform's service fee. Real Schedule E Line 3 lives higher up the CSV. If you've been importing "gross revenue" from your PMS straight to your books, your Line 3 is under-reported โ€” probably by 12-20% of your true top line โ€” and your expenses are under-reported by the exact same amount.

What Schedule E Line 3 actually asks for

Schedule E Instructions for Line 3 (Rents received) are short and unambiguous: report the total gross rents received during the year. Not net. Not deposits-only. Not what hit your bank. The gross amount the property earned, before any fee, before any withholding, before any passthrough.

For long-term rentals this is obvious โ€” the tenant pays $2,500, you write $2,500 on Line 3. For STRs it gets weird fast, because the guest doesn't pay you directly. Airbnb (or Vrbo, or Booking.com) collects the full amount from the guest, subtracts its host service fee, then deposits the remainder to you. That deposit is not what belongs on Line 3.

What belongs on Line 3 is the amount the guest actually paid for the stay โ€” the nightly rate ร— nights + your cleaning fee + your pet fee + any extra charges โ€” before the platform took its cut. The service fee they charged you belongs on Line 11 (Management fees) as a deductible expense. Both entries are separately reportable. Netting them out on Line 3 is not just imprecise โ€” it changes your tax return.

โš ๏ธ Why "just report what you deposited" is wrong

Reporting only your deposit understates both Line 3 (revenue) AND Line 11 (deductible management expense). The net income is the same โ€” but the IRS specifically asks for gross reporting because your Line 3 also drives things like ยง280A personal-use limits, passive-loss cap calculations, and material participation reasonableness tests. Two returns with identical net can produce different tax outcomes if their Line 3s differ.

What "gross revenue" in your PMS export actually means

Every PMS I've imported into a bookkeeping tool exports a column called some version of "Gross Revenue," "Gross Rent," "Amount," or "Total." In every case I've checked, that column is already net of the platform service fee. Here's what's actually there vs. what you'd assume:

PMSColumn labeledWhat it actually contains
HospitableGross RevenueNet of Airbnb/Vrbo host fee, includes cleaning & occupancy tax
GuestyTotal PayoutWhat was wired to you โ€” net of platform fee AND net of Guesty fee
HostawayGross RentNet of channel service fee, includes cleaning
OwnerRezAmountSometimes gross, sometimes net โ€” depends on which report you export
LodgifyRevenueNet of channel service fee for OTA bookings; gross for direct
Airbnb direct exportEarningsNet โ€” this is literally the payout column, not gross

The math varies by platform. Airbnb's host service fee is typically 3% of the subtotal. Vrbo's traveler fee model means the platform fee shows up differently. Booking.com's commission is 15-18% and comes off before your payout. Hospitable, Guesty, and Hostaway all pass through what the OTA sent them, minus their own PMS fee if applicable. The exact percentage matters less than the pattern: every "gross" column is already at least one layer of fee deducted from the guest's actual payment.

The true gross โ€” the number Line 3 wants โ€” is usually available in the same CSV, but under a different column. Look for "Total Charged to Guest," "Reservation Total," "Booking Total," or the sum of "Nightly Rate ร— Nights + Cleaning + Pet Fee + Extras." That's your Line 3.

The audit that surfaced this in my own books

I noticed the pattern late last year when I was cleaning up 2025 books for my own tax filing. One of my properties, Joy On The Lake in Kentucky, had bank deposits from Airbnb/Vrbo/Booking totaling about $20,980 for the year. My Hospitable export showed the "gross revenue" column at $15,467. That $5,500 gap between what actually cleared my bank and what my PMS called "gross" โ€” for a single property โ€” didn't smell right.

When I dug in, the answer was obvious: the Hospitable "gross" column was net of the OTA service fees (Airbnb host fee + Vrbo traveler fee + Booking commission), even though the guest had paid the full amount. The bank deposit was closer to the truth than the "gross" column. Neither was actually the right Line 3 number โ€” Line 3 needed to be even higher, because it also includes the cleaning fee and occupancy tax that Airbnb collected on my behalf but sometimes remitted on my behalf and sometimes didn't (more on that in a minute).

Extending the pattern across all five of my properties, my books had been under-reporting gross rent by roughly $20,000 for the year. My net income was correct-ish (because the missing fee expense was also missing from Line 11), but every downstream calculation that used gross โ€” passive-loss caps, ยง280A checks, material participation reasonableness โ€” was working with the wrong input.

The 3-step self-check every STR operator should run

You can catch this in your own books in about 20 minutes per property:

Step 1 ยท Pull the reservation-level export from your PMS

Not the summary. The row-per-reservation export with every fee column visible. In Hospitable this is Reports โ†’ Reservations โ†’ Export CSV. In Guesty and Hostaway you'll find similar under Reports or Analytics.

Step 2 ยท Sum the "Gross Revenue" (or equivalent) column for one property, one month

Pick a month with at least 4 reservations. Sum the labeled-gross column. Write it down. Call it PMS_GROSS.

Step 3 ยท Sum the true guest payments from the same reservations

In the same CSV, for the same reservations, sum Nightly rate ร— Nights + Cleaning fee + Pet fee + Any other guest-paid charge. Do not subtract anything. Include occupancy tax if it's in a separate column. Call this TRUE_GROSS.

If TRUE_GROSS > PMS_GROSS โ€” and it almost certainly will be โ€” the difference is your platform service fee for that month. That fee needs to go on Schedule E Line 11 (Management fees). The true gross needs to be Line 3.

Real numbers from my own Joy On The Lake, June 2025: PMS-labeled gross was $1,842. True guest-paid gross was $2,203. Difference โ€” $361 in Airbnb service fee for the month โ€” belonged on Line 11 and needed to be added back to Line 3. Do this monthly across your portfolio and the correction compounds into thousands of dollars of clean numbers per year.

The occupancy-tax passthrough sub-trap

There's a second layer to the same problem that trips even careful operators. When Airbnb, Vrbo, or Booking.com collect a state/local occupancy or lodging tax on a booking, they sometimes remit it directly to the jurisdiction on your behalf โ€” and sometimes just pass the collected amount through to you and expect you to remit. Which behavior applies depends on your specific city and specific platform.

For jurisdictions where the platform remits directly, the tax should not appear on your Schedule E at all โ€” it's not your revenue and it's not your expense. For jurisdictions where the platform passes it to you, the tax appears on your Line 3 (as gross rent received) AND on Line 16 or Line 19 as taxes-paid (when you remit to the city). It's a wash to net income but has to be reported on both sides.

The IRS has been increasingly focused on this in STR audits because it's a common way to accidentally understate gross rents. See the FAQ on rental real estate issues. If you're in Florida, Tennessee, or Colorado โ€” states with active state-level lodging tax enforcement โ€” this is worth checking with your CPA.

How to fix it

There are two paths, depending on how much manual work you're up for.

Manual (works but takes hours per property per year)

  • Export the reservation-level CSV from your PMS monthly
  • Compute true gross rent per reservation (nightly ร— nights + all guest-paid fees)
  • Split platform service fee into Line 11
  • Split occupancy tax collected into a passthrough tracker per jurisdiction
  • Reconcile against your bank deposits monthly to catch any missing cash movement
  • Reflect all of the above in your bookkeeping software (QuickBooks, Xero, or a spreadsheet)

Automated (what RentReel does out of the box)

When you upload any PMS CSV into RentReel, the parser doesn't trust the "gross revenue" column. It re-computes gross from the underlying nightly-rate + fee columns, treats the OTA service fee as a Line 11 management expense automatically, and splits occupancy tax collected into a passthrough tracker by jurisdiction ร— month. Your Schedule E Line 3 gets the correct gross, Line 11 gets the fee, and Line 16 gets the remitted lodging tax โ€” all in the right place with the right amounts. Any imbalance vs. your bank deposits gets flagged for review, not silently discarded.

None of this is tax advice โ€” always run your final Schedule E by a licensed CPA. But if the gross-vs-net trap has been silently distorting your books, this is one of the easier fixes to make once you know it's there.

Not tax advice

RentReel is bookkeeping software, not a CPA or tax preparer. Every number RentReel produces is an estimate based on data you provide and IRS rules as published. Always have a licensed CPA review your Schedule E before filing.

Related deep dives

Want RentReel to run this check on your books?

Drop a Hospitable, Guesty, OwnerRez, Hostaway, Lodgify, or Airbnb-direct CSV into RentReel and see gross vs. net split the right way โ€” automatically. Use code LAUNCH25 for 25% off your first 3 months on Pro+ Tax (through Sept 1).