For hosts
Host Guide
BNBstays is a direct booking and guest operations platform for short-term rental hosts. You list your property, guests book directly with you, and you keep the payment relationship β BNBstays never holds guest funds and never takes a per-booking commission.
This guide walks through the day-to-day: listing setup, payments, calendars, cancellations, guest operations, verification, and the rules that keep your account in good standing.
1. Account and tenant scope
- Your account is a tenant. Listings, bookings, payment accounts, and payouts are scoped to your tenant β no other host can see or modify them.
- Subscription status is tracked per tenant. If your subscription lapses, your listings stop being bookable but your data is preserved.
- Each tenant connects its own payment provider accounts. Stripe is the primary provider today; Mercado Pago, Razorpay, PayPal, and Xendit are expansion providers that must stay host-owned and market-approved.
- BNBstays takes $0 from guest booking payments. Your subscription covers the current BNBstays fee.
2. Subscription and billing
BNBstays charges a flat monthly subscription. No per-booking commission is deducted from guest payments.
BNBstays may later add host-billed usage fees, platform fees, or add-ons. If that happens, those fees are billed to you separately and are not deducted from guest checkout proceeds, refunds, or payouts.
Plans
| Plan | Price | Listings | Highlights |
|---|---|---|---|
| Solo | $9/mo | 1 | iCal sync, all payment providers, branded footer |
| Host | $19/mo | 3 | Custom domain, no BNBstays branding |
| Pro | $49/mo | 10 | Multi-user roles, advanced analytics |
All plans include a 14-day free trial β no card required to start. The
trial activates the moment your tenant is created and gives you Solo-tier
limits. Pick a paid plan on /pricing whenever you're ready.
Subscribing
- Open Pricing (
/pricing) and pick a plan. - You'll be redirected to Stripe Checkout (subscription mode) to enter card details. Card data is handled by Stripe β BNBstays never sees or stores it. The price id you submit is validated server-side against an allowlist, so a tampered request can't swap in a $0 test price.
- On success, Stripe sends a signed webhook. We verify the checkout
session id, mode (
subscription), payment status (paid), and capture your Stripe customer id and subscription id on the tenant row. YoursubscriptionStatusmoves toACTIVEand yourplanCodeis set from the price you picked. - You land back at Settings (
/hosts/settings?billing=success) with a greenACTIVEbadge and the plan shown.
If you close the Stripe tab mid-checkout nothing changes β your subscription status stays as it was.
Managing billing
Once subscribed, Settings shows a Manage billing button that opens the Stripe Customer Portal. Inside the portal you can:
- Update or replace your card
- View past invoices and receipts
- Switch plans (Stripe prorates the difference)
- Cancel at period end
Billing actions happen at Stripe β BNBstays is not the merchant of record for your subscription, so we don't store or modify card data on our side.
Subscription statuses
These are the values that can appear on your tenant row and what triggers each one.
| Status | Meaning | Trigger |
|---|---|---|
TRIALING | 14-day free trial active. | Tenant created. |
ACTIVE | Paid subscription in good standing. | checkout.session.completed or invoice.paid. |
PAST_DUE | Renewal charge failed. Stripe will retry. | invoice.payment_failed. |
SUSPENDED | Listings hidden from browse and unbookable. Data preserved. | customer.subscription.updated status unpaid/canceled, OR trial expiry cron. |
CANCELED | Subscription canceled. | customer.subscription.deleted. |
Every transition writes an entry to the audit log (entityType: SUBSCRIPTION)
with before/after state, the Stripe event id, and the price id, so you can
reconstruct billing history.
Trial expiry and suspension
When your 14-day trial ends without a paid subscription, the timeout-trial
cron job moves your tenant to SUSPENDED:
- Listings stay visible to you in the dashboard but disappear from public browse and cannot accept new bookings.
- Existing confirmed bookings are honored.
- Your data is preserved.
- Re-activate any time by subscribing to any plan on
/pricing.
Plan limits and enforcement
Listing-create checks your planCode against the plans table:
- Solo: 1 published listing
- Host: 3 published listings
- Pro: 10 published listings
If you hit the cap, publish is rejected with 402 QUOTA_EXCEEDED and a
message pointing you to /pricing. Unpublishing an existing listing frees
a slot. Listing drafts don't count against the cap β only published ones.
Tax
Subscription fees are SaaS revenue to BNBstays and may carry sales tax or VAT depending on your jurisdiction. Stripe Tax can automate calculation and collection once configured on the account β until then, tax is not added to checkout. Talk to a tax professional about your obligations before enabling collection.
3. Listing a property
- Create a property (physical address, timezone, occupancy tax settings).
- Create a listing under that property (title, photos, description, base nightly price, cleaning fee, currency, house rules, check-in instructions).
- Set availability either manually on the calendar or by connecting an iCal feed (Airbnb, Vrbo, Google Calendar) for automated sync.
- Pick a cancellation policy: Flexible, Moderate, or Strict. Guests see this before booking and it's enforced automatically.
- Publish. A listing only appears in browse results and is bookable once published.
Photos: use original images you own. Listings with stolen or stock photos are removed. Property verification may be required before publishing, enabling manual payments, or increasing limits β keep your address and tax settings accurate so review goes smoothly.
4. Payments
- Merchant of record: you, the host. Guest checkout runs through your own connected payment provider account. BNBstays is the software layer, not the payment recipient.
- No platform fee on bookings: we don't deduct anything from guest payments. Your subscription fee ($9β$49/month depending on tier) is billed separately to you as a SaaS charge.
- Multiple providers: the platform is designed for multiple host-owned providers. Each provider handles its own KYC, payouts, and dispute handling. BNBstays does not custody funds.
Provider status
| Provider | Best for | Status | Payouts |
|---|---|---|---|
| Stripe | Stripe-supported markets | Primary connected-account provider | Per Stripe's standard schedule |
| Mercado Pago | Latin America | Expansion provider; seller-owned flow must be verified per market | Mercado Pago account |
| Razorpay | India | Expansion provider; marketplace/split flows require compliance review | Razorpay account |
| PayPal | Global wallet users | Planned optional checkout rail | PayPal Business account |
| Xendit | SE Asia | Expansion provider for host-owned credentials | Xendit account |
Do not assume every listed provider is enabled in every country. BNBstays only launches a provider/market pair when host-owned payment flow, refunds, webhook behavior, and local compliance posture are understood.
How checkout picks a provider
When a guest checks out, BNBstays uses this order:
- Host-selected default provider for the listing (set in Settings).
- Tenant default provider based on country/currency.
- Manual/offline fallback only if you explicitly enable it.
Checkout will refuse payment if the selected provider account is missing, disconnected, restricted, or not charge-enabled.
Webhook verification
When a guest pays, the provider sends a signed event to BNBstays. We verify
the checkout session id, amount, currency, payment status, and provider
account identity against the booking row before flipping it to PAID. A
forged or mismatched event cannot mark a booking paid.
Manual / offline payments
If you accept cash, bank transfer, or local rails outside your connected provider, mark the booking paid manually in the dashboard. You are responsible for collecting and reconciling those funds β BNBstays does not custody them.
Manual payments are higher risk. They may require host verification, property verification, guest disclosure, amount/reference audit fields, and support review limits before being enabled.
5. Managing bookings
- Inbox: every booking request, guest message, and review lives in your dashboard. Messages are threaded per booking.
- Statuses:
PENDING(requested, awaiting payment) βCONFIRMED(paid) βCOMPLETED(check-out passed) orCANCELLED. Refunds move a booking toREFUNDED. - Check-in instructions are only released to a guest whose booking is
PAIDand whose session email matches the booking email. Don't paste lock codes into pre-payment messages. - Rate-limited endpoints: booking creation and contact forms are rate-limited per IP to reduce spam. If you see "too many attempts" in your own testing, wait 10 minutes.
6. Calendar and availability
- iCal sync runs every 30 minutes. Block a date in Airbnb or Vrbo and it blocks on BNBstays within the next sync window.
- Double-booking protection: when a booking is created, the date range is atomically reserved. Concurrent booking attempts for the same dates resolve to exactly one winner.
- Stay constraints: each listing has optional minimum and maximum night rules. Guests can't book a stay shorter or longer than the limits you set.
7. Cancellations and refunds
- You set the cancellation policy per listing. BNBstays enforces it on the guest side; for host-initiated cancellations, you can refund in full or per policy from the dashboard.
- Refunds are processed through your payment provider account. BNBstays does not net anything against the refund.
- Repeated host-initiated cancellations of confirmed bookings may result in account suspension β when you confirm a booking, you commit to honoring it.
8. Trust and verification
- Host KYC/KYB: each payment provider handles its own identity verification as part of onboarding. BNBstays may also verify host identity for trust and risk purposes. BNBstays verification controls publishing, manual-payment access, limits, and risk review.
- Property verification: KYC alone does not prove you control the property you're listing. Keep address and tax fields accurate; fraudulent or copied listings are removed.
- Guest verification: guests book under their real name and email. If a guest's email bounces or the charge is flagged, the booking is held for your review before any check-in details are released.
9. What BNBstays is not
- Not a payment facilitator. We do not custody guest funds, hold balances, schedule payouts, or net fees against bookings. All payment processing runs through your own provider account.
- Not an OTA marketplace. You own the guest relationship, pricing, house rules, tax obligations, refund policy, and local compliance.
- Not a full PMS replacement yet. BNBstays handles direct booking and guest operations, but it does not replace every accounting, owner statement, housekeeping, maintenance, or channel-management workflow.
- Not a property manager. You own guest communication, check-in, maintenance, and on-the-ground operations.
- Not an insurance underwriter. Property damage, theft, and liability sit between you and your guest (and your own insurance). Chargebacks are disputed between the guest, the host, and the payment provider β BNBstays is not a party.
10. Cancellation policy cheat sheet
Refunds are computed against the booking total (no separate fee deductions). All windows are calendar days before check-in.
| Policy | Full/partial refund window | Inside window |
|---|---|---|
| Flexible | β₯ 1 day out β 100% | 0% |
| Moderate | β₯ 5 days out β 100% | 0% |
| Strict | β₯ 7 days out β 50% | 0% |
| Super strict | β₯ 30 days out β 50% | 0% |
The exact refund at any moment is shown to the guest on cancellation and to you in the booking detail view.
11. Getting help
- For dashboard bugs, webhook errors, or subscription issues, open a ticket from your account.
- For tax, legal, or insurance questions, talk to a professional β BNBstays staff cannot advise on per-jurisdiction STR rules.
- For listing takedowns, fraud reports, or DMCA, use the contact form with evidence attached.
Last updated: 2026-07-25