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.
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.
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.
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.
| Extra | Cash cost | Your time | Price rule | Ask | Offer only when |
|---|---|---|---|---|---|
| Early check-in from 12:00 | $0 | 5 minutes ($2) | Pro rata: 3 hours × $6.75 = $20.25 | $25 | The night before is empty and nobody leaves that morning |
| Late checkout to 13:00 | $0 | 5 minutes ($2) | Pro rata: 2 hours × $6.75 = $13.50 | $15 | Nobody arrives that day, or the slack sum below says yes |
| Welcome basket | $14 | 20 minutes ($8) | Cost $22 at a 40% margin: $22 ÷ 0.6 = $36.67 | $39 | Ordered 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 | $50 | Stays of five nights or more |
| Firewood bundle | $8 | 20 minutes ($8) | Cost $16 at a 40% margin: $16 ÷ 0.6 = $26.67 | $29 | Ordered the day before |
| Extra night | About $6 utilities | 5 minutes ($2) | Your normal nightly rate, no second cleaning fee | $135 | One 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:
- 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.
- 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.
- 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.
- 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 shows | You can offer | Keep off the menu |
|---|---|---|
| Night before empty, nobody leaving that morning | Early check-in from 12:00, plus a basket | Nothing is blocked |
| Previous guest leaves at 11:00 on the arrival day | A basket | Early check-in before about 14:00 (11:00 + 2:30 cleaning + 0:30 buffer) |
| Next guest arrives at 15:00 on the checkout day | A free extra hour to 12:00 if the cleaner agrees | Any paid late checkout beyond 12:00 |
| Next arrival is the day after checkout, or later | Late checkout to 13:00 or 14:00 once the cleaner has agreed | Promising a time before the cleaner has agreed |
| One empty night straight after this stay | The extra night | A 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.
| Moment | What it can carry | How 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 matters | Timer |
| Upsell, three days out (message 3) | Basket and early check-in, each only if the status line says yes | By hand once early check-in is in it; a timer only for calendar-free extras |
| Check-in instructions, the day before (message 4) | Nothing | Timer |
| 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 yes | By hand |
| Checkout reminder, evening before (message 8) | Late checkout, only where the status line says yes | Timer, 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 review | Timer |
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 selling | Airbnb route | What to know |
|---|---|---|
| An extra night, an extra guest or a pet | Today, open the reservation, Manage reservation, then Change reservation | The 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 checkout | Resolution Centre, then Request money | Choose 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 itself | Today, open the reservation, click Check-in or Checkout and choose the time | Airbnb'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.
| Test | What you paste | It passes if |
|---|---|---|
| Missing status | A first name and dates only | It asks for the status line instead of drafting |
| Extra marked unavailable | EARLY=no; LATE=no; BASKET=yes | Only the basket appears; early and late are not mentioned |
| Impossible time | A guest asks for 08:00; the status says early from 12:00 | It 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 on | The same status with WAIVE=yes | It 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.
| Extra | Offers sent | Accepted | Revenue | Cash cost | Minutes | Net after your time |
|---|---|---|---|---|---|---|
| Early check-in ($25) | 18 | 5 | $125 | $0 | 40 | $108.33 |
| Welcome basket ($39) | 30 | 4 | $156 | $56 | 112 | $53.33 |
| Late checkout ($15) | 12 | 2 | $30 | $0 | 16 | $23.33 |
| Mid-stay refresh ($50) | 6 | 1 | $50 | $28 | 8 | $18.67 |
| Calendar checks, shared | 30 guests | - | - | - | 60 | -$25.00 |
| Quarter | 66 offers | 12 sales | $361 | $84 | 236 | $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
- Price the menu with the table at the top: 20 minutes.
- Put the menu, the bundle and the seven rules into the prompt: 10 minutes.
- Save the three pushback replies as quick replies: 10 minutes.
- Run the six tests and fix whichever rule failed: 15 minutes.
- Send the first two weeks of offers by hand, with a status line each time, noting offers sent, sales and minutes.
- 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
- Airbnb House Rules: Write Clear Rules and Check-In Messages With AI — Wording for the check-in message that sits between your offers
- How to Respond to Airbnb Reviews With AI: Glowing, Mixed, Bad — Reviews are where a pushy offer shows up; reply to them calmly
- How to Upsell Room Upgrades and Late Checkout With AI — The same late-checkout idea for a small hotel or B&B
- Software for Vacation Rentals Pricing: How AI Sets Nightly Rates — How nightly rates are set, which your extras price from
- Best Accounting Software for Airbnb Hosts: Fees, Payouts and AI Receipts — Record extras income and fees without a spreadsheet mess
- ChatGPT for Short-Term Rentals: 10 Host Jobs and the Prompts to Use — Ten other host jobs where a saved prompt saves time
- Best AI for Airbnb Hosts: Lodgify, Hospitable, Guesty, HostBuddy — Lodgify AI Co-Host, Hospitable, Guesty ReplyAI and HostBuddy compared on what each handles, list prices and how to test them.
- Airbnb House Manual: Build It With AI From Your Own Notes — Record a walk-through, let AI structure it without inventing facts, test it on a stranger, then publish it in Airbnb's arrival guide with a QR copy.
- Holiday Cottage Marketing: Past-Guest Emails and Seasonal Offers — A past-guest email sequence and seasonal offer calendar for self-catering owners, with AI prompts, sample emails and the sums behind one rebooking.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
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.