Enquiries Channel manager Bookings Your website Booking engine Pricing
v2026-09

rates.changed

Nightly prices, extra-guest prices and meal plans.

When it fires

A base, weekend, seasonal or per-date price changed; an extra-guest price changed; or a meal plan or its surcharge changed.

This event is date-scoped: it carries a window, and data.dates[] has one entry per night in that window, inclusive of both ends. A window never spans more than one calendar month, so a change across a longer range arrives as several events.

What to do with it

  • base_price is the room price for base_guests people for that one night. Extra-guest and meal-plan money is not included in it.
  • price_includes_gst tells you whether GST is already inside base_price. gst_applicable tells you whether the seller charges GST at all. Both must be read before you display or re-sell a price.
  • meal_plans[] prices are per person, per night, added on top.
  • Weekend means Friday and Saturday. Sunday is a weekday for pricing.
  • Prices are JSON numbers, not strings. 8000.00 serialises as 8000.

The data block

Field Type Description
currency string Always "INR".
gst_applicable boolean Whether the effective seller has a GST number. When false, no GST applies regardless of the flag below.
price_includes_gst boolean True when base_price is GST-inclusive, false when GST is added on top.
meal_plans[].code string EP room only, CP with breakfast, MP with breakfast and one meal, AP all meals. Only plans the host enabled appear.
meal_plans[].adult_price number Per adult, per night, on top of base_price.
meal_plans[].child_price number Per child, per night.
dates[].date string Y-m-d.
dates[].base_price number The nightly room price after Doorloom resolves base, override and custom pricing.
dates[].is_weekend boolean True on Friday and Saturday.
dates[].source string Which rule won: "base" (weekday/weekend default), "override" (a calendar price override), or "custom" (a seasonal or custom-date price). Custom beats override beats base.
dates[].base_guests integer|null How many guests base_price covers. Null when the host has not configured occupancy pricing.
dates[].extra_adult_price number|null Per adult, per night, beyond base_guests.
dates[].extra_child_price number|null Per child, per night, beyond base_guests.

Example

The full envelope, as it arrives on the wire.

json
{
    "id": "01J6Y0R2M4P7Q9S1T3V5W7X9Y1",
    "type": "rates.changed",
    "version": "2026-09",
    "sequence": 1043,
    "occurred_at": "2026-10-01T15:04:11+05:30",
    "integration": {
        "id": 12,
        "slug": "acme-pms"
    },
    "property": {
        "doorloom_id": 902,
        "external_id": "VILLA-9",
        "master_property_id": 902
    },
    "window": {
        "from": "2026-10-12",
        "to": "2026-10-14"
    },
    "data": {
        "currency": "INR",
        "gst_applicable": true,
        "price_includes_gst": false,
        "meal_plans": [
            {
                "code": "CP",
                "adult_price": 500,
                "child_price": 300
            }
        ],
        "dates": [
            {
                "date": "2026-10-12",
                "base_price": 8000,
                "is_weekend": false,
                "source": "base",
                "base_guests": 2,
                "extra_adult_price": 1000,
                "extra_child_price": 600
            },
            {
                "date": "2026-10-13",
                "base_price": 8000,
                "is_weekend": false,
                "source": "base",
                "base_guests": 2,
                "extra_adult_price": 1000,
                "extra_child_price": 600
            },
            {
                "date": "2026-10-14",
                "base_price": 12500,
                "is_weekend": false,
                "source": "custom",
                "base_guests": 2,
                "extra_adult_price": 1000,
                "extra_child_price": 600
            }
        ]
    }
}

Related

Something unclear or wrong on this page? Write to [email protected] and tell us which page — we would rather fix the doc than answer the ticket twice.