Accommodation variant

A bookable accommodation variant with per-night pricing and inventory.

A bookable accommodation variant with per-night pricing and inventory.

Properties

availability_status

A high-level availability signal for this variant, so themes can show "limited"/"running low" states without deriving them from the raw remaining count. Prefers the stock manager's own status (letting an external provider's signal come through) and falls back to the percentage-based rule when it doesn't have one.

Returns: String — one of "available", "limited", or "sold_out".

See also: StockManagement::AvailabilityStatus

deposit_amount

Deprecated

Calculate the deposit in Liquid using VariantDrop#price and VariantDrop#deposit instead.

A humanised deposit amount for this variant.

Returns: String or nil — nil when there is no current currency.

{% assign deposit_price = variant.price.fractional | times: variant.deposit.rate %}
{{ deposit_price | money }}

experience_slot

Always nil for accommodation variants.

Returns: nil

has_infinite_stock

Whether this variant has unlimited stock.

Returns: Boolean — only supported for the inventory stock strategy; otherwise false.

initial_stock

The starting stock for this variant.

Returns: Integer or nil — nil when stock is infinite or the stock strategy is not inventory-based.

limited

Whether stock is running low but not yet sold out. Convenience predicate over #availability_status.

Returns: Boolean

max_occupancy

The maximum number of guests for this variant.

Returns: Integer

min_occupancy

The minimum number of guests for this variant.

Returns: Integer

min_price_of_stay_fractional

The minimum price of stay in the subunit of the current currency.

When set, the customer is charged at least this amount regardless of how many nights they book.

Returns: Integer or nil — nil when no minimum price of stay is configured.

minimum_nights

The minimum number of nights required for a booking.

Returns: Integer

modifier_groups

All modifier groups for this variant, including post-checkout groups.

Not recommended on pre-checkout pages — use variant.pre_checkout_modifier_groups for choices the customer must make before checkout.

Returns: Array (Variant::ModifierGroupDrop)

pre_checkout_modifier_groups

Modifier groups the customer must choose before checkout.

Returns: Array (Variant::ModifierGroupDrop)

price

The variant price at default occupancy in the current currency, excluding promotions. Returns a VariantPriceDrop for use with math filters.

Rendering the drop without calling a method on the returned object (outputting variant.price alone) falls back to a legacy humanised per-night string for backwards compatibility.

Returns: VariantPriceDrop or nil — nil when there is no current currency.

{{ variant.price.fractional | money }}
{{ variant.price | money }} Per Night
{{ variant.price }}

prices

Price tiers for this variant. Accommodations expose a single tier.

Returns: Array (VariantPriceDrop) — an empty array when there is no current currency.

remaining_stock

The remaining stock for this variant.

Returns: Integer or nil — nil when stock is infinite or the stock strategy is not inventory-based. Never leaks Float::INFINITY to templates.

sold_out

Whether this variant is sold out for customers.

Returns: Boolean

type

The variant type identifier.

Returns: String — always "accommodation_variant".

On this page