Airbnb Upselling: Early Check-In, Late Checkout and Extras With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Airbnb Upselling: Early Check-In, Late Checkout and Extras With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Airbnb Upselling: Early Check-In, Late Checkout and Extras With AI.

Work out a floor price for each extra from its real cost, check the calendar before every offer, then let AI write the wording: one optional message per extra, price stated once, sent three days before arrival or the evening before checkout. Take payment through Airbnb, not a payment link or bank transfer.

A general chat assistant cannot see your calendar, your cleaner's rota or your costs, so every number and every yes in an offer has to come from you. The usual failures are an early check-in promised on a changeover day, and an extra priced below what it costs once your own time is counted. Both are settled before the prompt runs. A third failure is new: for reservations booked from 20 November 2026, Airbnb's house rules policy bars fines and penalties, and any new rule or request added by message after booking, so every extra has to read as an option the guest can ignore, never as a charge for breaking a rule.

Follow me on Instagram@sagnikteaches

Price each extra from its cost, then from its worth

Every figure below comes from one illustrative home: two bedrooms at $135 a night, check-in at 15:00 and checkout at 11:00 (Airbnb's help pages give 3:00 PM and 11:00 AM as the defaults when a listing sets none), a cleaner paid $55 a changeover for about two and a half hours, which is $22 an hour, and your own time valued at $25 an hour. Swap in your numbers. The method is what carries over.

Connect on LinkedInSagnik Bhattacharya

Extras come in two kinds and are priced differently. Goods and labour, such as a basket or a mid-stay clean, are priced from cost: add the cash, add your time, then work back from the margin you want to keep. Time slots, such as early check-in or late checkout, cost almost no cash when the calendar is free, so they are priced from what those hours are worth inside the nightly rate.

Subscribe on YouTube@sagnikteaches

Think in margin, not markup. A basket with $14 of shopping and 20 minutes of your time ($8) costs $22. A 50% markup sells it for $33, which keeps $11, a margin of only 33%. To keep 40% of the price, divide the cost by 0.6: $22 ÷ 0.6 = $36.67, so you ask $39.

For time slots, spread the nightly rate across the hours of the stay. The $135 night runs from 15:00 to 11:00, which is twenty hours, so an hour is worth $6.75. A noon check-in gives the guest three hours ($20.25) and a 13:00 checkout gives two ($13.50). Round each up to the next $5 and the asks are $25 and $15. If a slot would need an extra cleaner visit costing $30, add that on: $30 + $20.25 = $50.25, an ask of $55. Most guests will turn that down, which is the right outcome, because that slot is only worth giving when a guest asks for it.

ExtraCash costYour timePrice ruleAskOffer only when
Early check-in from 12:00$05 minutes ($2)Pro rata: 3 hours × $6.75 = $20.25$25The night before is empty and nobody leaves that morning
Late checkout to 13:00$05 minutes ($2)Pro rata: 2 hours × $6.75 = $13.50$15Nobody arrives that day, or the slack sum below says yes
Welcome basket$1420 minutes ($8)Cost $22 at a 40% margin: $22 ÷ 0.6 = $36.67$39Ordered 48 hours ahead
Mid-stay refresh (one hour, fresh towels)$28 (cleaner $22, laundry $6)10 minutes ($4)Cost $32 at a 35% margin: $32 ÷ 0.65 = $49.23$50Stays of five nights or more
Firewood bundle$820 minutes ($8)Cost $16 at a 40% margin: $16 ÷ 0.6 = $26.67$29Ordered the day before
Extra nightAbout $6 utilities5 minutes ($2)Your normal nightly rate, no second cleaning fee$135One empty night straight after the stay

A bundle may undercut the parts, but never the sum of their floors. Early check-in ($20.25) plus the basket ($36.67) floors at $56.92, so a $59 bundle against $64 bought separately still clears it. A $54 bundle would not. Set bundles yourself as menu lines; leave the AI no room to invent one.

Then run the time check. Firewood sold at $12 looks like a bargain for the guest and a small win for you: $4 over the wood. Against 20 minutes of fetching and stacking, worth $8, it loses $4 on every sale, and it feels successful because guests keep saying yes. Any extra whose price, less its goods, is smaller than the minutes it takes times your hourly value is a hobby, not an upsell.

The 30-second calendar check that gates every offer

Run the check on the day an offer is due, not when you build the template, because a calendar keeps changing between booking and arrival. Four questions, in this order:

  1. Is the night before arrival empty, and does anybody leave that morning? An empty night with nobody departing means the home is already clean, so early check-in costs you nothing. If someone leaves that morning, the earliest time you can promise is their checkout time, plus the cleaning time, plus a 30-minute buffer.
  2. Does anybody arrive on the checkout day? The slack for a late checkout is the next check-in time, minus the checkout time, minus the cleaning time, minus the buffer. Here that is 15:00 − 11:00 − 2:30 − 0:30, which leaves one hour, so the latest you can stretch is 12:00. An hour is a courtesy, not something to sell.
  3. Is there a single empty night straight after this stay? That is the extra-night offer, and the only extra that earns a full nightly rate.
  4. Can the cleaner work to the new time? A start moved from 11:00 to 13:00 needs a message to the cleaner before you promise anything. Airbnb will stop you choosing a check-in or checkout time that overlaps another reservation's, but it knows nothing about your cleaner. The tutorial on coordinating cleaners and changeovers covers how to keep that rota reliable.

Reduce the answers to one status line and paste it above every request, so the AI never has to guess what is available:

STATUS: EARLY=yes from 12:00 for $25; LATE=no; EXTRA_NIGHT=no; BASKET=yes for $39, order by the 12th; WAIVE=no
What the calendar showsYou can offerKeep off the menu
Night before empty, nobody leaving that morningEarly check-in from 12:00, plus a basketNothing is blocked
Previous guest leaves at 11:00 on the arrival dayA basketEarly check-in before about 14:00 (11:00 + 2:30 cleaning + 0:30 buffer)
Next guest arrives at 15:00 on the checkout dayA free extra hour to 12:00 if the cleaner agreesAny paid late checkout beyond 12:00
Next arrival is the day after checkout, or laterLate checkout to 13:00 or 14:00 once the cleaner has agreedPromising a time before the cleaner has agreed
One empty night straight after this stayThe extra nightA late-checkout offer in the same message, because two offers muddle the answer

Which message carries which offer

The nine-message sequence for Airbnb hosts already places an upsell three days before arrival. The offers fit around the rest of that sequence like this.

MomentWhat it can carryHow it goes out
Pre-arrival questions, seven days out (message 2)No offer. Ask what time they expect to arrive; a guest landing at 09:30 has just told you early check-in mattersTimer
Upsell, three days out (message 3)Basket and early check-in, each only if the status line says yesBy hand once early check-in is in it; a timer only for calendar-free extras
Check-in instructions, the day before (message 4)NothingTimer
Mid-stay check, morning after the first night (message 7)Mid-stay refresh on stays of five nights or more; the extra night if the status line says yesBy hand
Checkout reminder, evening before (message 8)Late checkout, only where the status line says yesTimer, ending with an invitation to reply; you answer by hand
Review request, after checkout (message 9)Nothing. Keep a sale out of the message that asks for a reviewTimer

The pre-arrival question does more work than it looks. A guest who says they land at 09:30 has handed you the reason to offer early check-in, which beats guessing, and a guest who says they arrive at 18:00 never sees an offer they cannot use. When a guest asks in the thread instead, the same prompt answers: paste their message under the status line, and reply within the hour, because someone planning a flight is waiting on it.

A standing prompt that writes the offer and cannot discount

Put the fixed facts and rules in a ChatGPT Project's instructions. A Claude Project does the same job, though custom project instructions need a paid Claude plan, and a text file pasted at the start of a chat works on any plan. Then each guest costs you one pasted status line. Paste first names and dates only: door codes, wifi passwords and addresses have no place in this prompt.

You write short optional-extras offers to guests of one short-term rental. You draft; I decide.

FIXED FACTS
- Two-bedroom home. Standard check-in 15:00, standard checkout 11:00.
- Extras menu (USD, fixed): early check-in from 12:00, $25; late checkout until 13:00, $15; welcome basket (milk, bread, eggs, butter, coffee, fruit), $39, order 48 hours ahead; mid-stay refresh (one hour clean, fresh towels), $50, stays of 5+ nights only; extra night, $135.
- Bundle: early check-in plus welcome basket, $59.

EACH TIME I GIVE YOU
Guest first name, arrival date, number of nights and a STATUS line. The STATUS line is the only source of truth about what is available today.

RULES
1. Offer only the extras the STATUS line marks yes. If an extra is marked no, do not mention it, not even to say it is unavailable.
2. Use the menu prices exactly. Never discount, round, add 'just', say complimentary or free, or compare with another price. Only WAIVE=yes makes an extra free, and then say it is a one-off.
3. When the guest says yes, I send a payment request inside Airbnb. Never include a link, phone number, email address, bank detail or any other way to pay.
4. Under 90 words. State each price once. One short paragraph per extra. End by saying no reply is needed if they would rather skip.
5. No promises beyond the STATUS line: no 'guaranteed', 'definitely' or 'limited spots'.
6. If the STATUS line is missing or unclear, ask me one question instead of drafting.
7. Warm, plain British English, no exclamation marks, no emoji. Sign off [your name].

Here is a raw draft of the kind you get when the rules are thin, to show what the rules are for (illustrative):

Hi [first name], we are so excited to welcome you on the 14th! To make your arrival easier I can offer a guaranteed early check-in from 12:00 for just $25, and a welcome basket worth $55 for only $39 (limited spots left). Pop me a quick message and I will send you a link to pay. Looking forward to hosting you! [your name]

Five things to fix, each of which rules 2 to 5 now prevent but which can still creep back, so read every draft:

  • "Guaranteed" goes. The status line says yes, not guaranteed. Replace it with a condition, such as "from 12:00 if you tell me by the 12th".
  • "Just $25" becomes "$25". The word "just" is a sales tic.
  • "Worth $55" goes. It is an invented comparison price and nobody can check it.
  • "Limited spots left" goes. Nothing is limited, so it is false scarcity.
  • "A link to pay" becomes "an Airbnb payment request".

The edited version is shorter, flatter and safer to send.

Hi [first name], two optional extras for your stay from the 14th. Early check-in from 12:00 instead of 15:00, $25. A welcome basket with milk, bread, eggs, butter, coffee and fruit waiting on arrival, $39, if you tell me by the 12th. Reply "early", "basket" or "both" ($59 together) and I will send an Airbnb payment request. If you would rather keep the standard 15:00 check-in, nothing more is needed. [your name]

One home, three calendars, three different messages

The prompt and the menu stay put; only the status line changes. Take a four-night stay arriving on the 14th, with the night before empty. The status line reads EARLY=yes from 12:00 for $25; LATE=no; EXTRA_NIGHT=no; BASKET=yes for $39, order by the 12th; WAIVE=no, and the message is the edited version above.

Now a guest arriving on the 21st, when the previous guest leaves that morning and the home is being cleaned until about 14:30. The status line reads EARLY=no; LATE=no; EXTRA_NIGHT=no; BASKET=yes for $39, order by the 19th; WAIVE=no. Rule 1 means the draft never mentions early entry at all, which spares you from writing a refusal nobody asked for:

Hi [first name], one optional extra for your stay from the 21st: a welcome basket with milk, bread, eggs, butter, coffee and fruit waiting on arrival, $39, if you tell me by the 19th. Reply "basket" and I will send an Airbnb payment request. No reply is needed if you would rather skip it. [your name]

Last, the morning after a guest's first night. Their stay ends on the 18th and the night of the 18th is empty. The status line reads EARLY=no; LATE=no; EXTRA_NIGHT=yes at $135, check out 19th at 11:00; BASKET=no; WAIVE=no. This is the only offer here that touches the booking itself, so it asks the guest to accept a change instead of paying a fee:

Hi [first name], I hope the first night went well. The home is free on the night of the 18th, so you are welcome to stay one more night, checking out on the 19th at 11:00, for $135. If you would like it, reply "extra night" and I will send a change request through Airbnb that shows the new total. It only takes effect when you accept it. If not, nothing changes and checkout stays on the 18th. [your name]

Taking the money without leaving Airbnb

Airbnb's own pages do not fully agree about optional extras. Its Pricing and payment transparency policy says payment for optional fees, with pool heating as its example, "may take place offline if the guest agrees". Its Collecting fees outside Airbnb page says hosts must collect payment for optional fees through the Resolution Centre, and that hosts may not collect fees related to reservations outside the platform unless Airbnb authorises it. The transparency policy also lists links in listing pages or messages that take people off Airbnb among the things guests and hosts must not do. I follow the stricter reading: money moves inside Airbnb, and no message carries a link, a phone number or bank details. If you would rather rely on the looser reading, ask Airbnb support to confirm it in writing first.

What you are sellingAirbnb routeWhat to know
An extra night, an extra guest or a petToday, open the reservation, Manage reservation, then Change reservationThe guest sees the original and new totals before accepting, and their payment method is usually charged automatically when they do. One request can be open at a time, a sent request cannot be edited, and the limits are three changes a day and ten per reservation
A basket, firewood, a mid-stay refresh, early check-in or late checkoutResolution Centre, then Request moneyChoose the reservation, pick the closest reason under "What is this request for?", enter the amount, add a note saying exactly what it covers, then send the request. Airbnb's page on requesting money does not say how guests are notified or how long they have to reply, so look at what happens on your own account
The new time itselfToday, open the reservation, click Check-in or Checkout and choose the timeAirbnb's help page does not say whether the guest must accept the change or whether a fee can be attached to it, so treat it as the record of your promise and keep the money request separate

One rule in that page changes the order of events: hosts can request money before check-in, but they cannot send money to a guest through the Resolution Centre until the reservation has started or been cancelled. Once a guest has paid a request for a basket or an early check-in, you cannot send the money back that way before arrival if something goes wrong. So the order is: the guest says yes in the thread, you confirm the calendar and the cleaner, you send the request with a note naming the extra and the time, and when it shows as paid you set the time on the reservation and message the cleaner.

Never charge for the listed check-in or checkout times themselves. Airbnb's pages say hosts must disclose mandatory fees, meaning fees guests are required to pay to access what they booked, and generally cannot charge them through the Resolution Centre. A paid extra has to be a genuine option, with the standard time always still on offer. A guest who offers cash, a bank transfer or a payment app link gets the same answer every time: "Thank you, I keep all payments inside Airbnb, so I will send a request there."

How far you can use AI inside guest messages is a separate question, covered in the tutorial on what Airbnb allows when hosts use AI to reply. Read it before you automate anything beyond drafting.

Offers, not penalties: the house rules policy from 20 November 2026

Airbnb's policy on reasonable house rules and requests applies to reservations booked on or after 20 November 2026, and four of its points decide how an extra may be worded and priced:

  • No fines or penalties. Hosts generally may not impose fines or other penalties on guests. "Late checkout to 13:00 is available for $15" is an offer; "$15 for every hour you stay past 11:00" is a penalty. If a guest overstays without agreeing anything, take it up with Airbnb support instead of sending a bill.
  • No hidden fees for advertised features. A fee for anything the listing advertises has to be in the price shown at booking. Parking, wifi or a hot tub on the listing can never become a paid extra, and if the listing advertises a fireplace, ask Airbnb support before you sell firewood for it.
  • No restricting what the listing advertises. An extra can add something the booking did not include, such as an earlier time, a basket or a mid-stay clean. It can never put a price on access to something the guest has already booked.
  • Optional add-ons can be listed in requests. The policy says information about optional add-ons, with breakfast as its example, may appear in requests. Add one line to the listing's requests, such as "Optional extras on request, when the calendar allows: early check-in from 12:00, $25; late checkout to 13:00, $15; welcome basket, $39", so guests see the menu before they book and your offer reminds them instead of springing a new charge. Listing edits apply only to reservations received after the change, and Airbnb highlights requests that do not follow the policy in the Listing editor, so rewrite the line if it is flagged.

None of this stops you charging for a time slot. Airbnb's guest help page on late checkout tells guests that a host may be able to accommodate an early check-in or late checkout, but that there might be extra charges, such as when the host needs to hire additional cleaners. A fair, optional price is something guests are told to expect; a charge they never agreed to is what the policy removes.

When a guest pushes back, wants it free or wants to pay another way

Three replies cover most of it. Each is written once, stored as a quick reply and sent by you.

The guest says the price is high and another host does it free. The price is the same for every guest and the standard time is unchanged, so there is nothing to defend:

Thanks for asking. I keep the early check-in price the same for every guest, so I cannot change it, but your standard check-in at 15:00 stays exactly as booked. Tell me if you would like the early option and I will send a request. [your name]

The guest asks for a late checkout the status line has ruled out. Say why in one clause, without mentioning other guests, and give an alternative only if you really have one:

I wish I could. The home needs cleaning between stays, so checkout has to stay at 11:00 that morning. [If you have a bag option: Once you have checked out, you are welcome to ...] Safe travels. [your name]

The guest has a real reason, such as a delayed flight or a child who has been awake all night, and you decide to waive the fee. Set WAIVE=yes for that one reservation and the draft says it is a one-off. Waiving is your call, never the model's, and it is the only free extra the prompt can write.

Before you rely on the prompt, run these six awkward inputs through it and read the answers.

TestWhat you pasteIt passes if
Missing statusA first name and dates onlyIt asks for the status line instead of drafting
Extra marked unavailableEARLY=no; LATE=no; BASKET=yesOnly the basket appears; early and late are not mentioned
Impossible timeA guest asks for 08:00; the status says early from 12:00It offers 12:00 at $25 and does not hint that 08:00 is possible
Discount bait"Other hosts give this free"It holds the price and points to the standard check-in
Payment elsewhere"Can I pay you by bank transfer?"It keeps payment in Airbnb, with no link or bank details
Waiver onThe same status with WAIVE=yesIt calls the extra a one-off at no charge and does not mention a payment request

If a test fails, fix the rule that should have caught it and run all six again, because a change to one rule can loosen another. Do it before the first real guest, and again whenever you change the menu or switch to a different model.

What a quarter of offers can look like in numbers

The figures here are made up to show the arithmetic, not a benchmark. Here is one home across a quarter of 30 stays. Every guest gets the basket offer, 18 qualify for early check-in, 12 for late checkout and 6 have stays of five nights or more. Each calendar check and paste takes two minutes per guest, and each accepted sale takes eight minutes to answer, request, confirm and tell the cleaner. A basket adds 20 minutes of shopping and staging.

ExtraOffers sentAcceptedRevenueCash costMinutesNet after your time
Early check-in ($25)185$125$040$108.33
Welcome basket ($39)304$156$56112$53.33
Late checkout ($15)122$30$016$23.33
Mid-stay refresh ($50)61$50$288$18.67
Calendar checks, shared30 guests---60-$25.00
Quarter66 offers12 sales$361$84236$178.67

Net comes to about $179 for under four hours of work, roughly $45 an hour, and it reads like a side income, not a second business. The useful part is the split. Early check-in keeps $125 for 40 minutes, about $188 an hour. The basket keeps $100 before your time and takes 112 minutes, about $54 an hour: above the $25 you value your time at, but under a third of what early check-in earns. So the move is to fix the basket, by raising the price or buying for several guests in one shop, before adding a fifth extra. An extra that earns less than your own hourly value for three quarters running should leave the menu.

Extras that cost more trouble than they pay

  • Anything a third party supplies. For transfers, tours and bike hire, pass on the provider's details and let the guest book directly. Holding the money makes you answerable for a service you do not run. If you supply equipment yourself, check your insurance covers it first.
  • Food beyond sealed basics. Home-prepared food raises allergen and food-handling questions. Stick to packaged items, list the ingredients on the note, and ask a qualified adviser what rules apply where you operate before selling anything prepared.
  • Anything the listing already promises. Coffee, towels and parking described in the listing are not extras. For reservations booked from 20 November 2026, Airbnb's house rules policy says a fee for an advertised feature must be in the price shown at booking, so charging for one afterwards is off the table.
  • Anything that nets under about $15. A $12 firewood bundle that costs you an hour of back-and-forth is a favour, not a product. Give it free, or drop it.
  • Anything you would resent doing on a bad day. If a mid-stay refresh means rearranging the cleaner's day, you will start declining requests, and the decline costs more goodwill than never offering it.

The hour it takes to set this up, in order

  1. Price the menu with the table at the top: 20 minutes.
  2. Put the menu, the bundle and the seven rules into the prompt: 10 minutes.
  3. Save the three pushback replies as quick replies: 10 minutes.
  4. Run the six tests and fix whichever rule failed: 15 minutes.
  5. Send the first two weeks of offers by hand, with a status line each time, noting offers sent, sales and minutes.
  6. Only then move the calendar-free offer onto a timer.

Before that last step, work through the tutorial on testing Airbnb message automation. And if a guest later complains about an offer, the calm replies in the tutorial on Airbnb guest complaints start from the same facts you keep here.

Questions hosts ask once the offers are running

What if a guest books inside three days of arrival?

A message timed for three days before check-in has already passed, and whether it still goes out depends on your scheduled-message settings. Check the calendar when the booking arrives and, if the status line says yes, send the offer by hand that day. Keep it to one message, and leave early check-in out unless the calendar clearly allows it.

Are extras worth offering on one- or two-night stays?

Usually only the quick ones. A mid-stay refresh makes little sense on two nights, and an extra-night offer rarely fits a short trip. Early check-in and a basket take the same minutes to sell as on a week-long stay, so test each against your net-per-minute figure and drop whichever earns less than your own hourly value.

How do I stop guests feeling nickel-and-dimed?

List the menu in the listing's requests so no offer comes as a surprise, cap offers at two per stay and never repeat one unless the guest replies. Keep the standard times and everything the listing promises free, charge every guest the same price, and include one genuinely free courtesy, such as a bag drop where you can offer it, so the message is not a row of price tags.

Further reads

Sources: Airbnb help pages 'Pricing and payment transparency', 'Collecting fees outside Airbnb', 'Request or send money in the Resolution Centre', 'Modifying a home reservation as a host', 'Update a guest's check-in or checkout time', 'Request an early check-in time' and 'Request a late checkout time', plus the 'Reasonable house rules and requests' policy and the Resource Centre's 'Important changes to house rules' (20 October 2026), read in October 2026.

Want your Airbnb extras priced and automated properly?

On a 1:1 call we can list the extras you could sell, work out which ones earn more than the minutes they take, and set up the AI drafting step so you only approve each message.

Book a 1:1 call with me