One Property, Three Booking Channels: How to Build a Single P&L Without Double-Counting

Published 2026-09-18 · Updated 2026-09-18

Same unit on Airbnb, Vrbo, and direct? Build one property P&L — gross at reservation level, channel as a field, no double-counted stays. Educational only; not tax advice.

Run one property-level ledger for the unit — not separate Airbnb books, Vrbo books, and a sticky-note pile for direct stays. Record every booking at gross at the reservation level, then deduct channel fees, cleaning, and other costs as their own lines. Channel is an attribute of the booking, not a reason to open a second set of books. Get that wrong and you hit the same three failure modes: double-counted bookings that inflate occupancy and revenue, mis-stated fees because Airbnb and Vrbo do not cut the same pie the same way, and orphaned direct bookings that never land in the property P&L.

Why multi-channel hosts break their own books

You list the same cabin on Airbnb and Vrbo. A guest finds you on one site, or they email after a prior stay and pay by card or Venmo. Your bank account receives mixed deposits: Airbnb payouts, Vrbo payouts, and occasional direct transfers. Spreadsheets grow a tab per channel. By March you cannot say what the property earned last year without stitching three exports and hoping the dates do not overlap.

The mess is structural. Each channel exports its own reservation IDs, fee labels, and payout timing. None of them know about the others. Direct stays have no OTA CSV at all. If you treat each export as a complete income statement, you will either omit direct revenue or paste the same stay twice when a calendar sync or PMS mirrors it.

Busy owners optimize for speed: download CSV, paste into "Income," move on. That works for a single-channel host. It fails as soon as the same unit has three paths to a booked night. You need a property ledger first, channel detail second.

Another tell: your year-end "occupancy" exceeds 365 nights, or two channels each claim 70% of the year for the same address. That is not a pricing win. It is duplicate reservation rows. Fix the ledger shape before you trust any channel scorecard.

The core principle: the property is the ledger, the channel is a field

Think of one row per stay for that address. Required fields: property, check-in, check-out, guest or confirmation reference, channel (Airbnb, Vrbo, or Direct), gross booking amount, channel fees, other stay costs, and net to you. Everything else — nightly rate breakdown, cleaning fee charged to the guest, tax collected — can live as supporting detail, but the row itself belongs to the property.

Channel is a field on that row, like "payment method" on a personal expense. You do not keep a separate checking account for credit cards and another for cash if the money all funds the same household. Same idea here. Airbnb vs Vrbo vs direct booking on a single P&L means one books stack, tagged by source.

When you roll up the month, sum gross by property, sum fees by property (optionally split by channel for pricing decisions), and sum net cash. Occupancy and ADR come from the same reservation rows. You stop asking "what did Airbnb earn?" as if Airbnb were the asset. The asset is the unit. Channels are distribution.

Keep expenses on the property too. Turnover cleaning, consumables, and minor repairs do not care which site sold the night. Allocate shared costs to the unit; use channel only when the cost is truly channel-specific (OTA commission, OTA payment processing, or a subscription tied to that listing). Mixing "Airbnb cleaning" and "Vrbo cleaning" as if they were different businesses recreates siloed books under new labels.

If you own multiple units, repeat the pattern per property. Portfolio totals are sums of property ledgers. Never dump every Airbnb payout into one "Airbnb income" bucket that spans addresses — that is how Schedule E workpapers lose the property column your CPA needs.

Where double-counting actually comes from

Double-counting rarely looks like an obvious duplicate paste. It shows up as four quieter sources.

  1. PMS or calendar sync mirrored into two exports. A stay booked on Airbnb appears in the Airbnb transaction CSV and again in a PMS "all reservations" export you imported as income.
  2. Payout rows treated as new bookings. Platforms pay out in batches. If you import both reservation lines and payout settlement lines as revenue, the same gross hits twice — once when the guest books and once when cash moves.
  3. Cleaning or resolution adjustments re-imported as stays. A cleaning fee remittance or a claim adjustment lands in a later CSV. Without a link back to the original reservation, it looks like new income.
  4. Direct rebooks that were already on an OTA calendar. A guest cancels on Vrbo and pays you direct for the same dates. You record the Venmo deposit but forget to void or mark the Vrbo reservation as cancelled in your books.

Dedupe rule: treat property + check-in + check-out as the natural key for a stay. Before you post a new reservation row, search for that triple. If a row already exists, update it (channel, gross, fees, status) — do not insert a second stay. Confirmation codes differ by channel; dates for the same unit do not.

Edge case: back-to-back bookings that share a turnover day. Check-out of stay A equals check-in of stay B. Those are two keys, not one. Same-day turnovers are fine. Overlapping dates for one property are the red flag.

Cancelled stays need a status, not silence. If you delete the row when a guest cancels, you lose the audit trail when a partial cleaning fee or claim still pays out later. Mark cancelled, zero the remaining gross if nothing is owed, and keep the key so a late adjustment updates the same reservation instead of opening a ghost booking.

Owner stays and blocked maintenance nights are not revenue rows. Put them on the calendar for occupancy truth if you track blocked nights, but do not invent gross income for nights you took the unit offline. Blending blocks into "booked" nights is how marketing occupancy diverges from financial occupancy.

Airbnb vs Vrbo fees: they are not comparable as written

Figures below are current as of this article's updated date — confirm against your own statement before you price or close the month.

Hosts often say "Vrbo is about 8% and Airbnb is lower." That slogan is outdated under Airbnb's host-only fee and still hides different bases. Use the figures below only — they are the verified fee facts for this guide. For a longer fee walkthrough, see Airbnb vs Vrbo host fees explained.

Vrbo pay-per-booking: 5% commission plus 3% payment processing, roughly 8% total per booking on typical stays. The bases differ:

  • The 5% commission applies to nightly rate plus mandatory fees (cleaning, pet fees). It excludes guest-paid taxes and refundable security deposits.
  • The 3% payment processing fee applies to the total payment received, including fees, taxes, and deposits.

Airbnb: a single host-only service fee of 15.5% of the booking subtotal (nightly rate plus host fees such as cleaning, pet, and extra guest). It does not apply to taxes. Guests pay no separate Airbnb service fee on migrated listings. Brazil and Mexico use 16%. The legacy split was about 3% host plus a guest service fee of roughly 14%–16% of subtotal. Migration: PMS and channel software hosts by April 13, 2026; remaining hosts by September 15, 2026 (outside the EEA) and October 13, 2026 (EEA and Switzerland). Stays of 28+ nights may be lower; Super Strict cancellation may add 2%.

Worked example: $1,200 nights + $150 cleaning + $110 tax

Same stay economics on paper. Nightly total $1,200, mandatory cleaning $150, guest-paid tax $110. No security deposit in this example. Commission / Airbnb subtotal base (rate + mandatory fees) = $1,350. Total guest payment = $1,460.

ChannelHost-side fee mathApprox. fees
Vrbo pay-per-booking5% × $1,350 = $67.50; 3% × $1,460 = $43.80$111.30
Airbnb (host-only 15.5%)15.5% × $1,350 = $209.25 — base is nightly + host fees; taxes excluded$209.25

On this stay, Airbnb is more expensive on the host side: $209.25 vs Vrbo's $111.30. Under the host-only fee, the guest pays no separate Airbnb service fee, so Airbnb gross vs Vrbo gross guest-paid totals are not comparable. Compare host-side net, not headline percentages.

Record gross $1,350 (or gross including tax if that is how you recognize collections — stay consistent and tell your CPA) and platform fees as a separate expense line. Do not post only the deposit. Net bank cash will not match gross, and it should not.

Add a refundable security deposit to the Vrbo example and the gap widens: processing still applies to the wider total while commission does not. That is why a single blended "8%" cell in a pricing sheet mis-ranks channels whenever tax or deposit amounts move. Price and bookkeep from the real bases, then compare net contribution per stay — not slogan percentages.

When you compare channels for the same property, hold the stay constant (same dates, same gross rent and mandatory fees) and vary only fee math and guest-facing extras. If you change ADR at the same time you change channel assumptions, you cannot tell whether the platform or your rate drove the result.

The Vrbo 10% commission trap

Vrbo commission rises from 5% to 10% when a traveler finds the listing through Vrbo but books outside Vrbo's checkout flow. That is easy to trigger with a well-meaning workaround: guest messages on Vrbo, you send a direct payment link to "save fees," and Vrbo still treats the lead as theirs — at the higher commission.

In your P&L, that stay is still channel = Vrbo (or a sub-tag like "Vrbo-referred direct checkout"), not a pure direct booking. Fee rate is 10% on the commission base, not 5%. If your spreadsheet hard-codes 5% for every Vrbo label, you understate fees and overstate net for those rows.

Practical control: if payment did not clear through Vrbo checkout, read the statement line before you close the month. One 10% row mixed into a 5% assumption quietly breaks channel margin reports.

Train anyone who answers guest messages the same way: do not move a Vrbo inquiry to a personal payment link unless you accept the commission outcome and document it. "We saved the guest money" is not a bookkeeping category. The statement line is.

How to handle the Vrbo annual subscription

Vrbo annual subscription runs about $499–$699 per listing per year. Vrbo no longer accepts new subscribers; only existing holders may renew. In the books, that is a period cost for the listing, not a per-stay commission.

Do not smear the annual fee into every reservation as a fake percentage unless you are building a management report and clearly label it as allocated. For owner P&L and tax prep, post the subscription when paid (or amortize monthly across the coverage period if that matches how you and your CPA track prepaid expenses). Keep it on the property, not on a generic "software" catch-all that spans units.

Subscription hosts still see payment processing on stays — the annual plan changes commission treatment, not the need for gross-vs-fee rows. Confirm commission treatment on your current Vrbo invoices (legacy plans typically waive the 5% commission but not the 3% processing).

Direct bookings: the channel with no export file

Direct is where multi-channel books usually go blind. There is no Airbnb-style CSV. You get a Stripe payout, a Zelle note, a check, or a prepaid rental agreement. If it is not in the property ledger within a day of accepting the dates, it becomes an orphan: cash in the bank, empty night on the calendar report, wrong ADR.

Minimum direct workflow:

  • Create the reservation row when you confirm dates — same fields as an OTA stay.
  • Set channel to Direct. Gross = what the guest owes for rent and mandatory fees before you subtract your processor cost.
  • Record processor or merchant fees (Stripe, etc.) as fees, analogous to OTA commission lines.
  • Block or mark the dates on Airbnb/Vrbo so you do not accept a conflicting OTA booking.
  • If the guest originated on an OTA and you moved them off-platform, re-read the Vrbo 10% rule above before you celebrate "saved" commission.

Direct bookings belong on the same single P&L as Airbnb and Vrbo. Skipping them makes the property look weaker than it is and breaks any occupancy math you use for pricing.

Store the agreement PDF or email thread against the reservation row. When a guest disputes a damage charge six weeks later, you want the same key you used for income — not a hunt through texts. Direct does not mean informal in the ledger; it only means the channel field is Direct.

If a friend-and-family rate is truly personal use, keep it out of rental gross or document the personal-use treatment with your CPA. Discounted but still commercial direct stays remain rental activity: record gross at what was charged, not at "rack rate you wish you had gotten."

The monthly reconciliation workflow

Once a month, close the property — not each channel in isolation. Use this sequence.

  1. Export Airbnb and Vrbo reservation and payout reports for the calendar month (or for stays with check-out in the month — pick one rule and keep it).
  2. Upsert by property + check-in + check-out. New keys insert; existing keys update gross, fees, and status. Never blind-append.
  3. Add direct stays from your calendar, contracts, and bank memo search ("cabin," guest name, Stripe).
  4. Separate payout settlements from reservation gross. Payouts reconcile cash; they are not a second income event.
  5. Tie fees to statements. Vrbo: confirm 5% vs 10% commission rows and 3% processing on the wider base. Airbnb: match the 15.5% host-only service fee (or 16% in Brazil/Mexico) to the statement (see fee section above).
  6. Reconcile bank deposits to net payouts + direct receipts. Difference should be timing, holds, or unrecorded directs — not a mystery plug.
  7. Scan for overlaps on the property calendar. Two active reservations for the same night means a dedupe failure.
  8. Lock the month with a simple note: gross, fees, net, booking count by channel. That snapshot is what you hand a CPA later.

If you use a PMS, import from one system of record and treat OTA CSVs as audit sources, not parallel ledgers. Two automated imports without a dedupe key recreate the problem the PMS was meant to solve.

Time-box the close: most 1–5 unit owners can finish this workflow in under an hour once the first month's keys exist. The expensive month is the first rebuild, when you collapse legacy channel tabs into property rows. After that, monthly work is exception handling — new directs, fee surprises, and cancellations — not a full re-architecture.

What this looks like at tax time

Platforms issue Form 1099-K on their own thresholds. For 2026, the federal threshold is $20,000 gross and 200+ transactions, restored by the One Big Beautiful Bill Act. The test applies separately per platform, not in aggregate across Airbnb plus Vrbo. Some states use lower 1099-K thresholds than federal — check your state.

A 1099-K reports gross (before platform fees). That total will always exceed bank deposits. Report gross as income and deduct fees separately — do not reduce income to match deposits and then forget the fee deduction. Your property ledger with gross and fee lines is what makes that mapping boring instead of painful. For Schedule E category mapping, see Airbnb Schedule E expense categories. Form choice questions are separate — see Schedule E vs Schedule C for short-term rentals.

Frequently asked questions

Should I keep separate books for Airbnb and Vrbo?

No. Use one property-level ledger and treat channel as a field on each reservation. Separate channel tabs invite double-counted stays and orphaned direct bookings. Roll up gross, fees, and net by property; split by channel only when you compare margins for pricing.

How do I avoid double-counting the same stay?

Dedupe on property + check-in + check-out before inserting a row. Update an existing key instead of appending a second stay. Watch PMS mirrors, payout lines mistaken for new bookings, late fee adjustments, and direct rebooks after an OTA cancellation.

Why is Vrbo’s ~8% not the same as 8% of one number?

Pay-per-booking is roughly 8% as 5% commission plus 3% payment processing, but those hit different bases. Commission applies to nightly rate plus mandatory fees (not taxes or refundable deposits). Processing applies to total payment received, including fees, taxes, and deposits.

Is Airbnb cheaper than Vrbo for hosts?

Not on host-side fee math alone. Airbnb’s host-only service fee is 15.5% of the booking subtotal (nightly plus host fees; taxes excluded; 16% in Brazil and Mexico), while Vrbo pay-per-booking is about 8% as 5% commission plus 3% processing on different bases. On the worked stay in this guide ($1,200 nights + $150 cleaning + $110 tax), Airbnb host fees are $209.25 versus Vrbo’s $111.30. Guests on migrated Airbnb listings pay no separate Airbnb service fee, so guest-paid totals are not comparable — compare host-side net, not headline percentages.

When does Vrbo charge 10% commission instead of 5%?

Commission rises from 5% to 10% when a traveler finds the listing through Vrbo but books outside Vrbo’s checkout flow. Off-platform payment after a Vrbo inquiry can trigger the higher rate — check the statement before you hard-code 5% in your sheet.

How should I bookkeep a Vrbo annual subscription?

Post about $499–$699 per listing per year as a listing period cost (when paid or amortized across coverage), not as a fake per-stay percent. Vrbo is not accepting new subscribers; existing holders may renew. Confirm your plan’s commission treatment on current invoices.

Does a 1099-K match what hit my bank?

No. A 1099-K reports gross before platform fees, so the form total always exceeds bank deposits. For 2026 the federal threshold is $20,000 gross and 200+ transactions, applied separately per platform. Some states set lower thresholds. Report gross and deduct fees separately with your CPA.

TallyRoost is built for per-property owner books where Airbnb, Vrbo, and direct stays share one P&L without duplicate reservation rows. Preview the sample portfolio or create an account when you want live books — guides stay free either way.

Educational bookkeeping reference only — not tax, legal, or financial advice. Platform fees and 1099-K rules change; confirm figures on your statements and with a CPA before you file.

← Home · Guides · Tools · Terms · Disclaimer

See the books

Sample portfolio

Plain-English cash flow across a demo book of short-term and long-term rentals — no signup.

Open sample preview

Get started

Get your own portfolio

Liked the sample? Create a TallyRoost account to run owner books for your short-term and long-term rentals — 30-day free trial, no charge until it ends.

Create account

Demo data stays separate from live books. Your portfolio database is isolated from marketing pages.