FAQ Q181: How does Pricing Manager work?

Absatz: Setting up your pricing and invoicing
Prices can be set up in four ways:

1, By entering a simple price per time unit (quarter-hour/hour/day) in Quick Setup.
2, By using the pricing manager.
3, By using an external CSV file.
4, By using a custom pricing script.

For the great majority of cases, you should use the pricing manager. Navigate to Site Settings > Pricing Manager to access it. The pricing manager allows you to define your pricing, ranging from the simple set-ups all the way to very complex rules.

Pricing manager is a collection of rules that allow you to set special prices for each resource. Rules have priorities, they are examined by Planyo at the time of price calculation, going from the first rule (called default rule) all the way down to the last one. The only exception to this is if you set an error message in one of your rules (using the UNAVAILABILITY MESSAGE price type explained below) - in such case no further rules will be processed. Note that you can move the rules up or down to change their ordering.

What are rules and how do they work?
Each rule (e.g. special weekday) has a condition (e.g. weekday=Monday), except for the first -- default rule -- which is always used. When the condition is met (e.g. a rental period included Monday), the price calculated so far is updated.

There are three kinds of updates (or changes) to the price: it can be set to a new value (e.g. first defined in the default rule as 100 USD/day, then redefined for our condition as 80 USD/day), it can be discounted or increased (by a percentage or a fixed value). Discounts/increments must use the + or - sign before the amount, e.g. -10 %, -20 USD, +15 %, +30 USD per day. A pricing rule expressed in percent is based only on the rules above it. For example, consider the following rules (we’ll assume all rules are matched because we’re 2 persons coming in January):

RuleApt A
Default price100 USD per day
Date: January 1-May 1-20%
Number of persons: 2+30 USD

The final price will be: 100 USD - 20%(of 100 USD) + 30 USD = 110 USD. As you see the 20% discount was calculated based on the first rule (100 USD) and not based on the entire price (100 + 30 USD). Moving the -20% rule to the end would have this effect: 100 USD + 30 USD - 20%(of 130 USD) = 104 USD.

There are many kinds of rules (on top of the default price rule): Weekday, Start weekday, End weekday, Date, Start date, End date, End date including year, Date including year, Start date including year, Hour, Start hour, Duration, Time remaining until rental, Daily pricing, and Additional days/hours are all time-based. In case of weekday, date, hour, Additional days/hours and date including year they may apply to only some of the days of the rental.

Here's an example of how a rule can apply to a part of the rental: you rent an apartment for the whole week (7 days) and you have two pricing rules: one for the weekdays (monday-friday with lower price) and one for the weekends (saturday-sunday with higher price). In such case, 5 days will be calculated according to the weekday rule and 2 according to the weekend rule. On the other hand, other types of rules, such as duration (e.g. duration = 7 days) would not treat differently the single days. It's also the same difference between the rule type Date (which can be applied to some days of the rental only) and Start date (will be applied either to all days or not at all). Other time-based rules based on the start time (start hour, start weekday, start date including year) will also work like the start date.

The other rules (e.g. Quantity, Number of persons, Additional persons present, Resource sharing, Reservation form item, Custom user property) are based on other aspects of the reservation. Using them you can set quantity-based discounts. Here, in particular, you can set special pricing related to the number of persons (please note that Planyo considers the number of persons as the reservation form item of type Number of persons, see Q202). With the rule based on a form item you can determine pricing based on other, custom, entries in the reservation form. For example, let's say you have a massage studio and you want to set pricing based on the different types of massage (relaxing, slimming, shiatsu). You can do this by adding three rules based on the value of a reservation form item (which you must first add in form of a drop-down choice in Reservation form layout -- you need to set up the reservation form items before using pricing manager). Each rule will apply to the different massage types.

RuleTherapist ATherapist B
Default price100 USD100 USD
Custom property: Massage type = Relaxing80 USD80 USD
Custom property: Massage type = Slimming90 USD90 USD
Custom property: Massage type = Shiatsu95 USD90 USD


Change price based on numerical value of a reservation form item or user property
If you add a rule based on a reservation form item or custom user property which has numerical values, you may leave the value in the rule condition empty and in the price fields use the letter x to multiply the entered price by the actual value of this property, e.g. if you have the custom property adults and want to increase the final price by USD 10 per adult, add a rule based on the adults property (with empty value) and then enter +10x in the price field. For 3 adults the price will then be incread by USD 30.

Unavailability messages
Other than setting or updating prices, you can also set-up a rule which will return an error message to the client whenever the condition is met. This is very useful if you have complex availability rules, e.g. on weekdays you accept reservations for min. 1 hour but on weekends you only allow reservations of min. 2 hours. In order to have an error message displayed to the client, instead of the price enter the error text and instead of the price type (USD, USD per day, USD per person, percent etc.) choose UNAVAILABILITY MESSAGE from the dropdown. Example of unavailability message

Pre-payment amount
Another thing you can do using pricing manager rules is change not the final price but the amount of the deposit (pre-payment). This is expressed as amount, e.g. 100 or $100, or as percentage of the price calculated so far, e.g. 10% or 50%. You cannot use the advanced syntax as you can do with prices, e.g. -10.

Additional info
Pricing manager lets you also specify a custom text underneath the price. This text can include any information you like plus it can also include the deposit and/or price calculated by the previous rules. You can use the tagging system available elsewhere in planyo (templates, email), see Q221 for the tag list. Additionally you can use the tag $(p) which is replaced wit the price calculated so far and $(d) which is replaced with the custom deposit amount calculated in the previous rules (if any).

Apply free hours
There's another special type of price unit called Apply free hours. You can only specify a number in place of the price, e.g. typing 24 would apply 24 hours free of charge to the booking. Internally, it erases the price calculated so far from the first X hours (in the example above 1 full day). If there are further rules and price changes (e.g. a rule which adds a certain amount per hour or per day), they will also override the free hours and reapply a charge to them.

Daily pricing
There is one rule (called Daily pricing) which is very different from the other rules. If you add it to your pricing sheet, instead of setting the price for each resource, you'll see the Go to the daily pricing page links, which, when clicked, take you to a separate calendar page where you can define a special price for any week or day of the year. Setting a daily price always overrides the weekly price, when both are defined for given day/week. The unit of the price (e.g. per day or per day&person) is defined on the original Pricing Manager page. You can also use this rule to update a price calculated with previous rules, e.g. enter +10 for all days or weeks for which you'd like an increase of $10.

Now test how it works
If you have complex rules, you should do a few test reservations to see if the rules entered are correct. The test page at http://www.planyo.com/reserve-test.php can greatly help here. It will allow you to do a test reservation without the reservation actually being registered. Another feature of this page is that once you choose the start and end times it shows you a debug text (calculation process) under the price. This text shows exactly how the price is calculated after each matching rule. Non-matching rules are not listed. When using this page, ignore the Custom pricing URL setting, it's used only if you want to test a custom pricing script.

Please see Q191 for explanation of advanced conditions which you can use to create complex rules (e.g. apply a rule only if any one of specific previously defined rules is matched).

Here is the detailed description of all rules of Pricing Manager:

RuleDescriptionExample usage
Reservation form itemThe rule will be matched when the customer chooses given value in the reservation form. This rule can be also used to base the price on a number entered in the reservation form. Please see also the section change price based on numerical value of a reservation form item or user property above for the details. Note: reservation form items must be defined before using this rule. If you don't do this, you won't see any reservation form items in the list.This rule is often used to add different products or services to the reservation or to choose the type of service (see the therapist sample above). Here the price can be changed depending on the choice made by the customer. You can also change the price in an intelligent way, based on a number selected by the customer from a drop-down. This way you could for example ask the customer for the number of wine bottles to be added to the reservation and add a specific amount for each bottle. This is often used as an alternative for additional products (more in Q174).
Number of personsThe rule will be applied when the customer reserves for a given number of persons (between the specified minimum and maximum). You can also specify minimum or maximum only (e.g. for more than 2 persons there is a discount). Planyo knows how many persons there are if there is a reservation form field called persons. This field is automatically translated to all languages as Number of persons but you can change it (as you can with any other text) in site settings / customized translations. This will also work if you ask for the number of children / adults in the reservation form (see Q276 for more about this).You'll often want to give a discount for a party of more than X persons, or perhaps do the opposite: increase the price for single occupancy of a double room.
Additional persons present
Additional adults present
Additional children present
Similar to the previous rule (number of persons) but here you can increase the price for each ADDITIONAL person and not for EACH person. You also have to state what additional means (e.g. more than 2 persons).
The adult- and children- based rules work the same way as Additional persons but only take under consideration adults or children present (of course to know this you must have adult/children fields in the reservation form).
This rule can be used to make the calculations easy in case you charge extra for each additional person. For example you have a double room where additional beds can be added. In this case you can specify the additional persons present rule (>2 persons) and if you then set the price to +10 USD per day&person the extra 10 USD will be added only for the additional persons (3rd person, 4th person etc.) and not for the 1st and 2nd person.
Custom property (user)If you defined user properties (more about this in Q215), you can base the price on the value of a user property. This rule can be also used to base the price on a number entered in the reservation form. Please see also the section change price based on numerical value of a reservation form item or user property above for the details. You must define the user properties before using this rule.This rule can be used to apply discounts to different user groups (e.g. club members active since more than 3 years can have special pricing). You may also use this rule if you want to give individual discounts to different customers.
Custom property (resource)Using this rule you can create a condition which is controlled by a custom resource property value
Custom property (unit)Using this rule you can create a condition which is controlled by a custom property value of the selected unit
Quantity of resourcesThe rule will be applied when the customer reserves a given number of units (between the specified minimum and maximum). You can also specify minimum or maximum only (e.g. for more than 5 units, the discount is 20%).Quantity-based discounts are very common and this is the rule to use in such case.
UnitThis rule will be applied when the unit chosen by the customer matches given unit name. You can use the star (*), also as a suffix, to include multiple unit names.Although normally if you have different units of the same resource their price will be identical, sometimes you may want to apply a different price (or return an error message) in case the customer selects a specific unit.
VoucherThis rule is applied based on whether/which voucher was used. You can set the rule to match a specific voucher code or group of codes (type ABC or ABC* for vouchers starting with ABC), for all vouchers (type *), or when no voucher was used (leave the voucher code field empty)Great if you need to change the price based on the voucher. For example you can have discounts which cannot be combined with vouchers.
Resource sharingThis rule can be used with resources that have the sharing option set to possible. Only certain types of resources have this option visible in resource settings, for others (where sharing is predefined or doesn't make sense) this rule is useless. With the sharing set to possible, it's up to the customer to say if they wish to share the resource with other customers or not. This rule lets you change the price accordingly.
ZIP/Postal codeThis rule will be applied when the zip/postal code entered matches one of the codes in the rule.You can use this rule either to apply different prices for different ZIP codes or to make reservations possible only within your area defined by one or more zip codes.
Season of the start date
Season of the end date
The rule will be matched when the rental starts (or ends) on a day which belongs to the specified season. The season, for example low or high must be first defined in the Seasonal settings for given resource or site. This is very similar to the Start date rule but the difference is that many different date ranges can be called a single season name so you can use a single rule instead of multiple ones.Used mostly for high/low seasons where each season has many date ranges throughout the year.
SeasonSimilar to Season of the start date but this rule can be applied only to some days of the rental (falling within the specified season) whereas the previous rule is either applied to all days or not at all.Very useful to set e.g. daily price based on the season. If rental goes across multiple seasons, you can apply different prices to different days according to the season.
DateThe rule will be matched for all days between specified days of the year. The year cannot be specified so this rule will work in the same way for all years. For multi-day rentals it is possible that this rule will be applied only to some days of the entire rental. This rule is useful if every year you have the same high/low seasons which start and end on given dates.
Start dateThe rule will be matched when the rental starts on a day which is within the specified range. The year cannot be specified so this rule will work in the same way for all years.Used mostly for high/low seasons when the arrival date determines the pricing for the whole rental.
End dateThe rule will be matched when the rental ends on a day which is within the specified range. The year cannot be specified so this rule will work in the same way for all years.
Date including yearThe rule will be matched for all days between specified days of the year. The year must be specified so this rule will work only for a single year. For multi-day rentals it is possible that this rule will be applied only to some days of the entire rental. If you have lots of different dates with special pricing, consider using the Daily pricing rule instead.This rule is useful if you have high/low seasons that start and end on given dates but where these dates are different each year.
Start date including yearThe rule will be matched when the rental starts on a day which is within the specified range. The year must be specified so this rule will work only for a single year.Used mostly for high/low seasons when the arrival date determines the pricing for the whole rental.
End date including yearThe rule will be matched when the rental ends on a day which is within the specified range. The year must be specified so this rule will work only for a single year.
Number of days from beginning of rentalThis rule will be matched only for the indicated days and not for all the days of the rental.You can use this rule to apply a daily discount only to some days of the rental, e.g. first X days have a regular price while extra days are discounted.
WeekdayThe rule will be matched for all days of the rental between the given start and end weekdays. For multi-day rentals it is possible that this rule will be applied only to some days of the entire rental.You can set up different weekend and weekday pricing
Start weekdayThe rule will be matched when the rental starts on a weekday which is within the specified range.Used mostly with advanced conditions to specify pricing for rentals starting on given weekday and lasting X days.
End weekdayThe rule will be matched when the rental ends on a weekday which is within the specified range.
Number of calendar daysThe rule is similar to Duration but it's based on calendar dayse.g. a rental from 11pm till 1am on the following day will be calculated as 2 calendar days and not 2 hours.
Number of days in seasonSimilar to Duration but this rule returns only the number of days which fall within the specified season and not during the whole stay. This rule may be applied only to some days of the rental (falling within the specified season) whereas the duration rule is either applied to all days or not at all.This rule is useful if you want to count the days of each season separately and at the same time the price is based on the number of days.
HourThe rule will be matched for all hours of the rental between the given start and end time. It is possible that this rule will be applied only to some hours of the entire rental.You can set up different morning and evening pricing or happy hours.
Start hour
End hour
The rule will be matched when the rental starts / ends within the specified hours.Same as the hour rule but you may wish to base the price only on the time when the rental begins / ends.
DurationThe rule will be matched when rental's duration is between the specified values (e.g. up to 2 days or from 3 to 4 days). You can also specify one of the two (minimum or maximum duration only).It is very common to have a different price for different number of days (or hours) of the rental.
Rental duration chosenIf you have resources which have predefined durations (chosen by the customer from a drop-down), then this rule will let you apply a different price for the different durations chosen by the customer. Normally you could use the Duration rule but sometimes you will have different choices with the same duration.Often you will want to include both the duration and the type of a service in the duration drop-down. For example, you can offer a 1 hour sports massage and a 1 hour relaxing massage -- both with the duration of 1 hour but perhaps with a different price. You may likely want to put both massage type and duration into a single dropdown rather than using 2 drop-downs.
Number of months reservedThis is a duration-based rule that gives you the number of full or partial months of the rental. Typically you'll use the duration rule but this one can be useful for very-long term rentals.E.g. January 10 - March 5 would be treated as 2 months and January 10 - March 15 would be treated as 3 months
Additional days
Additional hours
Additional hours in shopping cart
The logic here is the same as for the Additional persons present rule but here additional days / hours are considered instead of additional persons. Here the price increase (or discount) will be applied only to the additional days / hours. The "in cart" version groups together all hours from the shopping cart.You may use this rule if for example you rent out accommodations for weekly stays but you wish to offer a possibility to stay longer and you have a fixed price per day for each day after one week.
Time remaining until rental
Time remaining until event ends
The rule will be matched when more or less than X days are left until rental. It's also possible to set a specific price when between X and Y days are left. For hour-based resources, time can be also expressed in hours (e.g. price can be changed if less than 3 hours are left). The second variation lets you specify time left until the rental's end (and not beginning).This is used mostly for last minute rentals. You can offer lower prices to encourage the customers to make last-minute reservations. You may also set lower prices for rentals which start a long time from now.
Time between reservation and rentalThis rule is based on the amount of time remaining until rental at the reservation time.You can use this rule for early bookings or last-minute bookings
Reservation time (date)
Reservation time (hour)
Reservation time (weekday)
This rule is matched when the reservation is created within the defined dates (first rule) or during specified hours (second rule) or given weekday.This rule lets you do promotions e.g. "Reserve until end of March to get a 10% discount" (first rule). It can be also used to detect if the reservation is being made during opening hours (second rule).
Same-time arrivals/departuresThis rule allows you to limit the number of customers who arrive or depart in given time unit. It is based on the number of existing reservations starting/ending at the same time.This rule can be useful in a case such as airport parking where you have a very large capacity for parking spaces but can only have a few customers arriving/departing at any given time because the customers must be shuttled to the airport.
Number of times reserved recently
Number of hours reserved recently
These two rules let you set the price (or possibility to reject a reservation) based on the number of times or hours any of your resources were previously reserved by given customer. Customers are identified by their email address (or login if that's used).Note: these rules consider only the time when the reservations are entered into the system, ignoring the dates when the rental takes place. This is useful if e.g. your club members can only make 2 reservations per week. In such case an UNAVAILABILITY MESSAGE price type should be used to enfore the limit.
Total hours in existing rentals in given period
Total number of existing rentals in given period
These two rules are somewhat similar to the above counterparts, except that here the time of rentals are considered, whereas in the previous rules the time when the reservations are created are considered. For example, if the rule says: customer reserved at least 2 times in given day, the rule is applied when 2 or more reservations created by the customer on different days are present, but all of them have the rental time on the same day. This can be used together with the UNAVAILABILITY MESSAGE price type in order to limit the max. number of reservations per user and per day/week/month.
Total number of existing rentals in given period (any customer)This rule checks for all the reservations for given resource amongst all customers.You can use this rule to check how many reservations there are in the system e.g. for given day and display an error message if your target has been reached. This way you can limit overall daily reservations of a resource to X times per day.
Total resource quantity in cartIf using the shopping cart, this rule lets you change the price based on the number of units of specific resource in the cart.You can apply a discount if the customer makes multiple reservations in a single checkout.
Position in shopping cartIf using the shopping cart, this rule lets you change the price based on the position (index) of the current reservation in the shopping cart.With this rule you can add a one-time fee for the entire shopping cart (if position is 1), or you can apply a discount when the shopping cart contains more than X reservations.
Resource present in shopping cartThis rule check for presence of given resource in the same shopping cart. Additionally you can check if the presence of selected resource is for the exact same duration or different duration.
Total price of shopping cartThis rule is based on the total price of all items in the same shopping cartUseful to apply discounts based on the cart's total price
Additional hours in shopping cartSimilar to Additional hours but based on all the reservations in the shopping cart
Total hours in shopping cartSimilar to Duration but based on all the reservations in the shopping cart
Repeated reservation numberThis rule can be used if you selected one of the recurringreservation choices in active features in site settings (recurring reservations/return trip/multiple dates). In such case you can enter the number of the reservation, e.g. 1 for the first of a series, 2 for the second, 3 for the third etc. If you leave this empty or use the value of 0, the rule will be applied when the reservation is not be repeated. Please note you can specify multiple values separated by comma.With this rule you can apply a discount to further appointments (2nd, 3rd etc.) if the customer reserves multiple dates at once.
Coupon holderThis rule will check if the customer has a coupon (any type or of specific type) which can be used for the reservation
Label of the last usable coupon purchasedThis rule will check the label of the coupon being used (or potentially being used) for the reservation.You can use this rule to only allow reservations to holders of a specific coupon.
Base resource present in flexible packageThis rule is based on the presence of given base resource (or a number of specified base resources) in a flexible package reservationThis rule can be useful if your price is different based on the base resource selected by a customer (if such base resource selection is possible according to your package settings)
Quantity still availableThis rule will be applied when the number of units available for reservation is within specified limits.This rule lets you create dynamic pricing, e.g. first seats can be sold very cheaply while the last ones left can be more expensive.
Price calculated so farThe rule will be applied if the price calculated so far by the preceding rules is within the specified range.This is very useful to apply discounts based on the total price calculated, e.g. 10% discount for price over USD 100.
Daily pricingThe daily pricing is much more than a simple rule, it lets you set prices for each day (or week) of the year on a calendar view. Please see the daily pricing section above for more details.This rule is extremely useful if you set your prices on day-to-day basis, such as last-minute pricing for the upcoming days.
CSV fileThis rule lets you specify an external CSV (Excel) file where you can define your pricing. This CAN be used together with other pricing manager rules. See Q240 for detailed information about this.Pricing defined in an external CSV file is very useful if you generate it automatically (e.g. data coming from a database) or if you have a large number of resources or a large number of rules.
Always trueThe rule will be always applied.This is very useful for things like setting the deposit or custom additional text where these don't depend on any conditions.
Agent reservationThis rule will be matched when the reservation is being made by an agent (or has been made by an agent in case of modifications). You can specify a given agent ID.
User roleThis rule will be matched depending on the user role of the person making the reservation
User is logged-inThis rule will be matched depending on whether the current user is logged-in or not (this will work both for your website's login - if integrated with the planyo plugin - and with the planyo login
Using frontend mobile appThis rule will be matched depending on the source of the reservation (mobile app or website)
Price used in searchThis rule will be matched depending on whether the price is being calculated on the reservation form or for search results.
Waiting list requestThis rule lets you change the price or add restrictions depending on whether this is an actual reservation or a waiting list request. You can use this rule to prevent waiting list requests to be added if less than X days remain until the start time (you'd need to combine this with the unavailability message and an advanced condition).
Simplified daily pricing for external channelThis rule will be matched when the pricing is being calculated in the context of simplified daily pricing for an external channel such as booking.com or for the API call get_simplified_daily_pricingThis rule can be used to adjust simplified daily pricing when used together with given channel
DistanceThis rule can be only used together with the extension Directions using Google Maps. It will allow you to set different pricing for different distance ranges of the trip.
Distance from base to start pointSimilar to the rule distance except the distance for this rule is between the start point and the base coordinates (coordinates defined for the resource or for your planyo site).
FAQ