Villa Sunny 23 · Berawa · Owner review

You've filled the calendar.
The next gain is in the rate.

Occupancy has averaged 87% since March and the reviews are excellent — the hard part is done. What a demand-following pricing engine reads as "priced correctly," though, a full calendar at this cost structure suggests is "priced too low." This is a proposal for where to take the rate, and the evidence behind it.

Prepared for Desa Management Period Jan – Jul 2026 Rate used Rp 20,600 / €1

Where we are · Mar–Jul 2026

87%Average occupancy
+21%Gross ADR growth, Mar → Jul
3.7%Annual yield to the owner
11Nights lost in short unsold gaps

Where this could go · if the plan is followed

79%Target occupancy — deliberately lower
€132Average rate per night, up from €76
7.5%Annual yield to the owner
€22,400Owner income per year, up from €11,240

Fewer nights sold, at nearly double the rate. The conservative case — occupancy landing eight points below target in every season — still returns 6.6%. Figures are set out in full further down.

Management share to Desa · 20% of profit €248 per month today → €480 per month €2,980 → €5,760 per year

Summary

Where this stands

Desa took over a badly run property and turned it around. Occupancy went from unstable to consistently high, the listing now holds 4.86 stars across 14 reviews and Guest Favourite status, and gross ADR climbed from €70 in March to €85 in July. None of what follows is a criticism of the operation.

The issue is on the revenue-management side. At 87% occupancy with a €6/night marginal cost, the villa is leaving money on the table in a way that a demand-following pricing algorithm will never surface on its own — because from the algorithm's point of view, a full calendar is a success.

Annualised on the March–July run rate, and after the monthly common-area invoice, the owner nets roughly €11,240 per year on a €300,000 investment. That is a 3.7% yield. The rest of this document shows where the gap is and what it would take to close it.

At €120 a night, the villa could sit empty two weeks a month and still match today's profit.It is currently running at 87% occupancy. The margin of error on a price rise is enormous.
An empty night saves €6 and costs €51.Staff, power, pool and the complex invoice run whether a guest is here or not. Only laundry and consumables scale.
Guests score value 4.9 out of 5. Not one review below four stars.On a listing priced at the market, value is usually the weakest score. Here it is tied with everything else.
July is peak season. It produced the highest rate of the year and the second-worst RevPAR.The rate went up and the calendar emptied out. That combination is a management gap, not a demand problem.
Channel fees are not the issue. The 17.2% Airbnb deduction is the standard 15.5% host-only fee plus 11% Indonesian PPN. Marriott takes 17.0% all-in and Booking.com 19.0%. All three are in line with what the market charges — what differs between them is the rate the guest pays, which is where the opportunity sits.

RevPAR · the metric that matters

Five months of performance

Occupancy alone doesn't tell you whether a month went well. RevPAR — net revenue divided by every night in the calendar, sold or not — does, because it prices the empty nights in.

020406080€46Mar€46Apr€59May€63Jun€57Jul81%87%94%90%84%€occ
Bars: RevPAR in euros (net of channel fees). Line: occupancy. May and June were the strong months. July — peak season in Bali — should have been the best of the year and instead came in below both.
MonthNightsOcc.Gross ADRNet ADRRevPAROwner, net
March25 / 3181%€70€57€46€797
April26 / 3087%€69€53€46€745
May29 / 3194%€76€63€59€1,106
June27 / 3090%€77€70€63€1,044
July26 / 3184%€85€68€57€632
Average26.687%€76€64€54€865

Owner figures are the 80% distribution less the €55 monthly common-area invoice. July is shown as reported; the Rp 10.3m bedding replacement is treated separately below.

July is high season. It produced the highest ADR of the year and the second-worst RevPAR. That combination only happens when the calendar isn't being managed as tightly as the price.

The night ledger

Every night, March to July

This is the whole period at the resolution the decisions are actually made at — one square per night, coloured by the channel that sold it.

151015202530MarAprMayJunJul
AirbnbMarriott HVDirectBooking.comReview stayEmptyEmpty — short gap, under 3 nights
153 calendar nights. 133 sold, 20 empty, spread across nine separate gaps.

Eleven of the twenty empty nights were one- and two-night gaps

Short gaps are not blocked here. Four two-night stays were sold through Airbnb over these five months, and two of them slotted exactly between existing bookings — Ronny Sutanto on 4–6 March and Yassine Outgharmine on 22–24 June, each with a guest checking out the morning they arrived and another checking in the morning they left. Whatever the nominal minimum stay is, the calendar is letting these through.

So these nights were sellable. They simply didn't sell:

Short gapLengthOutcome
4–6 March2 nightsSold — Airbnb, exact fill
22–24 June2 nightsSold — Airbnb, exact fill
23 April1 nightUnsold
10 May2 nightsUnsold
9 June2 nightsUnsold
26 June1 nightUnsold
1 July2 nightsUnsold
8 July2 nightsUnsold
26 July1 nightUnsold
Unsold11 nights≈ €1,215 / year in owner profit

Selling all of them would move occupancy from 87% to 94%, with no extra guest turnover beyond what is already happening on either side of each gap. Two out of nine sold; the question is what to do about the other seven.

These nights are perishable, and they were priced as though they weren't. A gap night that goes unsold is worth nothing the next morning, and its marginal cost is around six euros. Offered at the same rate as an ordinary night, a one- or two-night stay is a poor deal for a guest — the same cleaning fee and travel effort spread over fewer nights. A standing rule that drops short gaps inside two weeks of arrival to a clearing price should convert some of these; even at half the normal rate the villa keeps almost all of it. Worth noting against ourselves: the two short gaps that did sell went at roughly the normal rate, not a discounted one — so this is a reasonable hypothesis rather than a proven mechanism, and it is cheap to test.

€6.01 per night

What a night actually costs

This is the number the whole strategy rests on, and it is much lower than it intuitively feels.

CostPer monthBehaviour
Housekeeping salaries€121Fixed
Electricity€121Fixed
Common area invoice€55Fixed
Pool service€29Fixed
Dues, internet, insurance€29Fixed
Laundry, cleaning & guest supplies€67Variable — €2.47/night
Repairs & linen replacement (reserved)€96Wear — €3.54/night
Fixed €356/mo · Variable + wear€6.01/night

Staff, pool, power, internet and the complex invoice all run whether a guest is in the villa or not. Only laundry, consumables and wear scale with occupancy — about six euros a night.

An empty night saves €6 and costs €51 in lost owner profit. "Fewer bookings means lower costs" does not hold at this cost structure.

The practical consequence: occupancy is worth defending, and price increases are cheap to test. Every euro added to the nightly rate flows almost entirely to the bottom line, and it takes a large occupancy loss to cancel out even a modest increase.

On the July bedding line

The Rp 10.3m linen replacement is legitimate wear, but landing it in a single month made July's result look like an operational failure when it wasn't. Throughout this analysis it is spread across twelve months so that the underlying trend stays readable — the €3.54 per night in the table above is that figure, together with average repairs and maintenance.

Channel mix

Marriott guests pay 25% more

Marriott HV€78 net / €94 gross13 nightsAirbnb€62 net / €75 gross94 nightsDirect€67 net / €68 gross19 nightsBooking.com€55 net / €68 gross5 nights
Solid bar: net per night after all fees. Pale bar: gross per night. Marriott Homes & Villas takes 17.0% — essentially the same as Airbnb — but its nights sold at a materially higher rate.

Across 131 nights from March to July, Marriott returned €78 net per night against Airbnb's €62. That is not a fee advantage; the take rates are within 0.2 points of each other. Marriott's guests simply pay more — €94 gross versus €75 — and they book longer stays (6 and 7 nights).

One caveat before reading too much into this. Smart Pricing governs Airbnb only; Marriott's rates run on a separate plan and were never discounted the same way. On adjacent dates in May, Marriott sold at €89 gross while Airbnb sold at €72 — which may say more about where the discounting was applied than about the guests. The honest conclusion is that Airbnb looks underpriced relative to what this villa can achieve, and Marriott is the evidence for it. Whether Marriott also deserves a larger share of nights is a question to settle once both channels carry the same rates.

Direct bookings are being discounted away

Four guests booked through Airbnb and then extended directly. Direct nights carry no channel fee, which is worth 17.2% — but the direct rate has been set so far below the Airbnb rate that most of that saving is handed straight back to the guest:

GuestAirbnb rateNet to villaDirect rateResult
Aren Fox (March)€67€55€49−€6 / night
Ronny Sutanto (March)€67€56€63+€7 / night
Üstün Dilek (June)€73€61€71+€10 / night
Yusuf Mohamed (June)——€71Full rate, no fee

Blended, direct nights returned €67 net against Airbnb's €62 — a 7% gain when the fee saving alone was worth 17%. The rule should be: a direct rebooking is priced at the Airbnb rate less 5%, not less 25%. The guest still saves, and the villa keeps the difference.

Booking.com is the weakest channel on both dimensions — 19.0% take and the lowest gross ADR. It is worth keeping for reach, but it should never receive the best rate.

The core argument

How much occupancy a price rise can afford to lose

Because the marginal cost of a night is €6, a higher rate is protected by a very wide margin of error. This chart shows, for each list price, the occupancy at which the villa would earn exactly what it earns today.

0%25%50%75%100%Today: 87% occupancy89%€7674%€9062%€10554%€12046%€14040%€16034%€185nightly list price →
Red line: break-even occupancy at each price. Green line: where occupancy sits today. The shaded band is the margin of safety — how far bookings could fall before the price rise stops paying.
List price / nightNet after 17.2% feeBreak-even occupancyMargin vs. today
€76 (today)€6387%—
€90€7574%13 points
€105€8762%25 points
€120€9954%33 points
€140€11646%41 points
€185€15334%53 points
At €120 a night, the villa could sit empty two weeks a month and still match today's profit. It is currently running at 87%.

This is why the recommendation is to raise rates decisively rather than in 5% increments. The downside is bounded and the current occupancy provides an unusually large buffer to test into.

Proposal

A seasonal calendar instead of a flat rate

Bali demand is strongly seasonal and the current pricing does not reflect that. July was sold at €85 gross — the same order as March, which is shoulder season. The proposal is four rate bands, set as floors, with the algorithm permitted to move up from them but not down.

BandMonthsList priceTarget occupancyBreak-even occ.
PeakJul, Aug, Dec€18585%34%
HighJun, Sep, Jan€13582%47%
ShoulderMar, Apr, May€11078%59%
LowFeb, Oct, Nov€9072%74%
Full yearavg €132289 nights · 79%
These prices are derived from the villa's economics, not from market comparables. They describe what the cost structure can support, not what Berawa will pay. Desa is far better placed to validate them against comparable two-bedroom private-pool villas in the area — and if the market says a number is wrong, the market wins. What the economics do establish is the direction and the size of the safety margin.
Today (run-rate)€11,243 · 3.7%Conservative case€19,830 · 6.6%Base case€20,964 · 7.0%Base + 30% direct€22,393 · 7.5%
Annual owner income after the 20% management share and the common-area invoice. The conservative case assumes occupancy lands eight points below target in every season.

Even the conservative case — 71% occupancy across the year, well below anything the villa has achieved since March — nearly doubles the owner's return, from 3.7% to 6.6%. The plan does not depend on the villa staying full. It depends on it not being sold cheaply when it is.

Actions

What we'd like to change

Ordered by date. Each item names the system, the exact setting to change, and how to tell it is done. The two euro figures are additional owner profit per month after the 20% management share, taken from the pricing model rather than added on top of it.

+€810per month

Enter the four seasonal Base and Minimum prices PriceLabs

Customize > Seasonal Minimum, Base and Max Price Settings. Create four date ranges and enter, in IDR:

Peak (Jul, Aug, Dec): Base 3,810,000 / Min 3,090,000 / Max 6,100,000

High (Jun, Sep, Jan): Base 2,780,000 / Min 2,270,000 / Max 4,450,000

Shoulder (Mar, Apr, May): Base 2,270,000 / Min 1,960,000 / Max 3,630,000

Low (Feb, Oct, Nov): Base 1,850,000 / Min 1,750,000 / Max 2,960,000

Replaces the single flat Base 2,090,000 / Min 1,790,000 in use today. Set the ranges to repeat annually so they cover every date to March 2027.

Done when: The calendar shows July 2027 priced above Rp 3,500,000 and February 2027 below Rp 2,200,000.

This week
to €95per month

Turn on Orphan Day discounts and the min-stay override PriceLabs

Customize > Orphan Days.

Define an orphan gap as 2 nights or fewer.

Min-stay override: set minimum stay equal to the gap length (1-night gap accepts 1 night).

Discount: 12% on a 1-night gap, 8% on a 2-night gap.

This is the only discount we are adding. It applies solely to gaps between two existing bookings.

Done when: A 1-night gap in the calendar shows a min stay of 1 and a price about 12% below the surrounding nights.

This week
Supports occupancy

Set the minimum stay by lead time PriceLabs

Customize > Minimum Stay, by days to arrival.

More than 14 days out: 3 nights.

14 days or less: 2 nights.

Applies to all channels. Protects peak weekends while opening the shorter-stay demand Booking.com carries.

Done when: A date 30 days out shows a 3-night minimum; a date 7 days out shows 2 nights.

This week
Risk control

Confirm no last-minute discounting is active PriceLabs

Customize > Occupancy Based Adjustments and > Last Minute Discounts.

Leave as they are. Occupancy adjustments are currently running premiums (+10% inside 15 days, +3% at 16-30 days), which is correct.

Do NOT enable a last-minute discount. Agreed with Desa: a falling price invites guests to cancel and rebook cheaper.

Done when: Screenshot confirming no last-minute discount rule is enabled.

This week
—

Add a 2% rate markup on Booking.com Hostaway

Channel settings > Booking.com > rate markup: +2% on the gross rate.

Booking.com deducts 19.0% against 17.2% on Airbnb, so it needs a slightly higher list price to net the same.

Done when: The same date shows a price about 2% higher on Booking.com than on Airbnb.

Within 30 days
+€119per month

Set the direct rate at the OTA rate less 5% Hostaway

Direct booking site / returning-guest rate: OTA price minus 5%.

Not minus 25%, which is roughly what has been given away. Direct carries no channel fee at all, so a 5% guest discount keeps 12 points of margin.

Offer it to every departing guest for their next stay.

Done when: A returning guest quoted directly receives a rate 5% below the live Airbnb price.

Within 30 days
Measure, then decide

Re-measure net ADR by channel Reporting

60 days after the new rates go live, compare net revenue per night by channel again.

Marriott has been returning €78 per night against Airbnb's €62 at almost the same take rate. Once both carry the same rates we will know whether that gap is real.

If Marriott still leads, we increase its share. If not, Airbnb was simply underpriced.

Done when: A table of net ADR per channel for the 60 days after the change.

60 days
Reporting

Add RevPAR and net ADR per channel to the monthly report Reporting

Add three figures to the existing monthly pack: RevPAR (net revenue divided by all calendar nights), ADR, and net ADR broken down by channel.

Occupancy on its own rewards underpricing, which is how the villa reached 87% occupancy at €76 a night.

Done when: The next monthly report contains all three.

Ongoing
Combined effectOwner profit rises from about €940 to €1,870 per month — €22,400 a year, a 7.5% yield on €300,000. The two figures above come from the same pricing model, so they add without overlapping. On the same basis the 20% management share rises from about €248 to €480 a month.
+€930per month

Appendix

How this maps to PriceLabs

These settings were reviewed from the live PriceLabs account in August 2026, so the figures below are against what is actually configured rather than assumed.

First, the part we had wrong. Our analysis is built on March–July actuals, where the realised rate averaged €76 gross. Forward pricing is already well above that: available nights in September are showing Rp 2.3–2.6m, or €112–127. Some of the gain this document projects is evidently already being captured, and the baseline should be read as history rather than as the current state.

1. Base and Minimum Price — the ceiling nobody set

Where: Dynamic Pricing → Calendar → Configure Prices, and Customize → Seasonal Minimum, Base and Max Price Settings

SettingTodayIn euros
MinimumRp 1,790,000€87
BaseRp 2,090,000€101
MaximumNot set—

One base, one minimum, applied to every date in the year. Because every other rule in PriceLabs is a percentage of the base, this single number sets the ceiling for the whole strategy:

StepEffectRunning total
Base Price—€101
Far-out premium+20% at day 136 and beyond€122
Occupancy adjustment+10% inside 15 days€134
Roughly €134 is the most this configuration can charge on any night of any year. The seasonal strategy needs €185 in July.

Seasonal bases, entered as date ranges:

SeasonMonthsBaseMinimum
PeakJul, Aug, DecRp 3,810,000 €185Rp 3,090,000 €150
HighJun, Sep, JanRp 2,780,000 €135Rp 2,270,000 €110
ShoulderMar, Apr, MayRp 2,270,000 €110Rp 1,960,000 €95
LowFeb, Oct, NovRp 1,850,000 €90Rp 1,750,000 €85

2. Last-minute discounting — leave it off

Where: Customize → Occupancy Based Adjustments

Currently auto-applied, and currently running premiums rather than discounts: +10% inside 15 days, +3% at 16–30 days, and −1% at 31–60. Occupancy is above market, so PriceLabs is charging more for late bookings, not less.

Desa's position is that last-minute discounting should stay off, because guests who see a price fall after booking will cancel and rebook at the lower rate. That is a real and well-documented behaviour, the reasoning is sound, and we agree — there is nothing here we would change.

Which makes one distinction worth drawing. The orphan-gap rule below is not last-minute discounting, and it does not carry the same risk. A last-minute discount lowers the price of dates a guest already holds, which is exactly what invites the cancel-and-rebook. An orphan gap only exists between two other bookings — a guest who cancels their own stay creates an ordinary hole in the calendar at the ordinary price, not a discounted orphan they can move into. The two rules look similar and behave differently.

The durable defence against cancel-and-rebook is the cancellation policy rather than the pricing rule. Marriott takes 50% at booking and refunds nothing inside 14 days, and it is the channel earning the most per night. Whether Airbnb should tighten in the same direction is in the open questions above.

3. Orphan gaps

Where: Customize → Orphan Days

4. Far Out Prices — already configured well

Where: Customize → Far Out Prices

Set to Market Driven (Balanced): 0% at 60 days, ramping to +20% by day 136 and holding beyond. This is the rule that captures planners booking six months out, and it is doing its job. No change needed — but note that it multiplies the base, so raising the base is what makes it worth more.

5. What to watch

The account shows occupancy at 100% for the next 7 days, 57% for the next 30 and 38% for the next 60. Against a historical 84–94%, the far figures look thin — but a booking window that fills late will always look like this, and March through July would have shown the same shape at 60 days out. The number worth tracking is the 30-day figure as it converges: if it lands near 85% at the new prices, the strategy is working; if it stalls in the sixties, the base has gone too far and should come back a step.

6. What is not a PriceLabs setting

Open questions

Things we can't see from the reports

What are the current Base, Min and Max prices in PriceLabs, per season?

The pattern in the data suggests demand-following pricing working from a low base, but we're inferring from outcomes rather than settings. The current configuration would tell us quickly whether the appendix is aimed at the right numbers.

Are PriceLabs' orphan day settings switched on today?

Four two-night Airbnb stays sold over these five months, two of them exact fills between bookings — which suggests short stays are being let through somewhere. If the orphan rules are already active, the seven unsold gaps are a pricing question rather than a configuration one.

What is driving the sales returns?

Rp 1.68m in March and Rp 1.47m in July, roughly 4% of revenue. Cancellations, refunds, or something else?

How do our rates compare to comparable Berawa villas right now?

Two bedrooms, 2.5 bathrooms, private pool. A comp set with current rates by season would let us set the bands against the market instead of against the cost base.

How are Marriott and Booking.com rates set today, and does Smart Pricing touch them?

If those channels sit outside the algorithm, that would explain much of the €16/night gap with Airbnb — and it would mean Airbnb is the channel being underpriced, not Marriott the one outperforming.

Should Airbnb carry stricter cancellation terms than it does today?

Marriott's 14-day no-refund policy is far tighter than Airbnb's, and it is the channel earning the most per night. Tightening Airbnb somewhat may support a higher rate — though it will also cost some bookings, so it is a trade to weigh rather than an obvious win.

Can Marriott Homes & Villas take more volume if we decide we want it?

Worth knowing the answer before the 60-day measurement, so we can act on it straight away. And is there anything on our side — photography, description, amenity list — that would help it convert better?

Is there scope to increase the ceiling, not just the floor?

If Smart Pricing is capped, a listing at 87% occupancy is probably hitting that cap during peak weeks.