diff --git a/docs/assets/screens/event-series/calendar-views.png b/docs/assets/screens/event-series/calendar-views.png new file mode 100644 index 00000000..6303a397 Binary files /dev/null and b/docs/assets/screens/event-series/calendar-views.png differ diff --git a/docs/assets/screens/event-series/create-multiple-example2.png b/docs/assets/screens/event-series/create-multiple-example2.png new file mode 100644 index 00000000..3696c8a9 Binary files /dev/null and b/docs/assets/screens/event-series/create-multiple-example2.png differ diff --git a/docs/assets/screens/event-series/create-times.png b/docs/assets/screens/event-series/create-times.png new file mode 100644 index 00000000..bad2b339 Binary files /dev/null and b/docs/assets/screens/event-series/create-times.png differ diff --git a/docs/assets/screens/event/create-series.png b/docs/assets/screens/event/create-series.png new file mode 100644 index 00000000..1f9deb99 Binary files /dev/null and b/docs/assets/screens/event/create-series.png differ diff --git a/docs/assets/screens/organizer/customer-accounts.png b/docs/assets/screens/organizer/customer-accounts.png index 696d6bb6..b5b1bbb2 100644 Binary files a/docs/assets/screens/organizer/customer-accounts.png and b/docs/assets/screens/organizer/customer-accounts.png differ diff --git a/docs/assets/screens/products/add-on.png b/docs/assets/screens/products/add-on.png new file mode 100644 index 00000000..537f2bcd Binary files /dev/null and b/docs/assets/screens/products/add-on.png differ diff --git a/docs/assets/screens/products/agenda-constraints.png b/docs/assets/screens/products/agenda-constraints.png new file mode 100644 index 00000000..0a0f3d5f Binary files /dev/null and b/docs/assets/screens/products/agenda-constraints.png differ diff --git a/docs/assets/screens/products/check-in-rules-combination-products.png b/docs/assets/screens/products/check-in-rules-combination-products.png new file mode 100644 index 00000000..7a3efd8d Binary files /dev/null and b/docs/assets/screens/products/check-in-rules-combination-products.png differ diff --git a/docs/assets/screens/products/membership-type.png b/docs/assets/screens/products/membership-type.png new file mode 100644 index 00000000..229c00f2 Binary files /dev/null and b/docs/assets/screens/products/membership-type.png differ diff --git a/docs/assets/screens/products/product-creates-membership.png b/docs/assets/screens/products/product-creates-membership.png new file mode 100644 index 00000000..467a6333 Binary files /dev/null and b/docs/assets/screens/products/product-creates-membership.png differ diff --git a/docs/assets/screens/products/question-sessions.png b/docs/assets/screens/products/question-sessions.png new file mode 100644 index 00000000..c6642076 Binary files /dev/null and b/docs/assets/screens/products/question-sessions.png differ diff --git a/docs/assets/screens/products/require.png b/docs/assets/screens/products/require.png new file mode 100644 index 00000000..d2ced19b Binary files /dev/null and b/docs/assets/screens/products/require.png differ diff --git a/docs/assets/screens/products/time-slot-check-in-rule.png b/docs/assets/screens/products/time-slot-check-in-rule.png new file mode 100644 index 00000000..826b17fa Binary files /dev/null and b/docs/assets/screens/products/time-slot-check-in-rule.png differ diff --git a/docs/assets/screens/products/timeslots_checkinlists1.png b/docs/assets/screens/products/timeslots_checkinlists1.png deleted file mode 100644 index 0c6ec34e..00000000 Binary files a/docs/assets/screens/products/timeslots_checkinlists1.png and /dev/null differ diff --git a/docs/guides/plugins/getyourguide.md b/docs/guides/plugins/getyourguide.md index e97269f5..7a392319 100644 --- a/docs/guides/plugins/getyourguide.md +++ b/docs/guides/plugins/getyourguide.md @@ -71,7 +71,7 @@ First of all, you need to make the decision on how you are planning on selling y Of course, in addition to creating products, you will also need to add them to a quota for them to be available for sale. The process for doing this is the very same as for any regular event or event series. -If you want to learn more on how to handle taxes in pretix, refer to our guide on [products](../products.md). +If you want to learn more on how to handle products in pretix, refer to our guide on [products](../products/index.md). !!! Note When selling individual tickets through GetYourGuide, you will not be able to offer differing quantities for individual ticket categories. diff --git a/docs/guides/products.md b/docs/guides/products.md deleted file mode 100644 index 97f1ecf1..00000000 --- a/docs/guides/products.md +++ /dev/null @@ -1,556 +0,0 @@ -# Product structure - -A product is anything sold via pretix: tickets, gift cards, conference t-shirts and so on. -pretix offers you almost unlimited possibilities for configuring and structuring products. -This article guides you through the basic process of creating a product and explains several practical applications of some of the more advanced features of pretix. - -## Prerequisites - -Products are configured on the event level, so you have to create an event first. - -## General usage - -This section guides you through the basic process of product creation. -This involves first creating categories, then the products themselves, and finally quotas. -You cannot create a product without choosing a category for it. -You cannot create a quota without adding at least one product to it. -Thus, this guide will explain those steps in that order. - -### Creating and editing categories - -![Page titled 'Product categories', showing a list of categories only containing 'Tickets' and a button for creating a new category.](../assets/screens/products/categories.png "Product categories screenshot") - -Categories separate standalone products from additional products. -If you want to sell not only admission tickets, but also extras such as stickers, you have to have at least two different categories. -You also need an extra category if you are planning to use the cross-selling feature. -Sorting products into categories can help you better keep track of them in the backend. -Finally, your shop page will display products grouped by categories which can help customers find the article they are looking for more easily. - -In order to edit categories, navigate to :navpath:Your event → :fa3-ticket: Products → Categories:. -This page shows the list of all product categories. - -Click the :btn-icon:fa3-plus: Create a new category: button and give the new category a descriptive name. -Choose the category type depending on the type of products in this category: normal, add-on, cross-selling, or normal + cross-selling. - -Normal products are standalone products that can be purchased directly. -Add-on products are products that are only offered as add-ons to normal products. -Cross-selling products are products that are only offered in the cross-selling step as a customer is purchasing other products. -Finally, products in the "normal + cross-selling" category are both offered as standalone products and in the cross-selling step. -The "Cross-selling condition" setting below determines how products in cross-selling and normal + cross-selling categories are offered in your shop. - -Click the :btn:Save: button at the bottom of the page. -This takes you back to the product categories page, which now also lists the newly created category. - -You can also edit an already existing category and change its name, description and type by clicking its name or the :btn-icon:fa3-edit:: edit button next to it in the list. - -### Creating and editing products - -![Page titled 'Products', showing a list of products containing two entries and a button for creating a new product.](../assets/screens/products/products.png "Products screenshot") - -If you want to create or edit products, navigate to :navpath:Event → :fa3-ticket: Products → Products:. -This page shows the list of all products. -Click the :btn-icon:fa3-plus: Create a new product: button. -Choose a name, a description, a default price and a sales tax and click the :btn:Save: button. - -You can also edit an already existing product by clicking its name or the :btn-icon:fa3-edit:: edit button next to it in the list. - -### Creating and editing quotas - -A quota determines how many instances of your product can be sold. -Every product has to be part of at least one quota before it becomes available in the shop. - -If you want to create or edit quotas, navigate to :navpath:Event → :fa3-ticket: Products → Quotas:. -This page shows the list of all quotas for the event as well as the total capacity and how many items are left for each quota. - -Click the :btn-icon:fa3-plus: Create a new quota: button. -Choose a name and a capacity, check the products to be contained in this quota, and any advanced options, and then click the :btn:Save: button. - -You can also edit an already existing quota by clicking its name or the :btn-icon:fa3-edit:: edit button next to it in the list. - -## Applications - -This section covers advanced use cases and how to implement them using the options pretix offers for customizing products. - -### Multiple price levels - -You may need more than a single price for admission tickets for your event—for example, if you are selling discount tickets for pensioners or students. -In order to do so, first create the basic admission ticket and configure it according to your requirements. -Then, clone the ticket once for each differing price level. -Adjust the name and the price of each cloned ticket. - -Add all products to one general quota. -Set the capacity of the quota to the maximum number of tickets you want to sell. - -If you want to place an additional limit on the number of discount tickets available, create another quota and set the capacity to the maximum number of discount tickets you want to sell. -Add only the discount tickets to this quota. -pretix will subtract from both quotas whenever a discount ticket is sold, and only subtract from the general quota when a regular ticket is sold. - -### Early-bird tiers based on dates - -Let's say you run a conference with the following pricing scheme: - - - 12 to 6 months before the event: € 450 - - 6 to 3 months before the event: € 550 - - closer than 3 months to the event: € 650 - -Of course, you could just set up one product and change its price at the given dates manually, but if you want to set this up automatically, here's how: - -Create three products (e.g. "super early bird", "early bird", "regular ticket") with the respective prices and one shared quota of your total event capacity. -Then, set the "available from" and "available until" configuration fields of the products to automatically activate and deactivate them for sale based on the current date. - -If you're in an event series, this will likely not help you since these dates would need to be the same for all dates in your series. -As an alternative, you can go to the "Dates" section of your event series, select one or more dates, and scroll down to the "product settings" section. -Here, you can also define availability times for individual products just for this date individually. - -### Early-bird tiers based on ticket numbers - -Let's say you run a conference with 400 tickets with the following pricing scheme: - - - First 100 tickets ("super early bird"): € 450 - - Next 100 tickets ("early bird"): € 550 - - Remaining tickets ("regular"): € 650 - -First of all, create three products: - - - "Super early bird ticket" - - "Early bird ticket" - - "Regular ticket" - -Then, create three quotas: - - - "Super early bird" with a size of 100 and the "Super early bird ticket" product selected. - At "Advanced options", select the box "Close this quota permanently once it is sold out". - - "Early bird and lower" with a size of 200 and both of the "Super early bird ticket" and "Early bird ticket" products selected. - At "Advanced options", select the box "Close this quota permanently once it is sold out". - - "All participants" with a size of 400, all three products selected and no additional options. - -Next, modify the product "Regular ticket". -In the section "Availability", you should look for the option "Only show after sellout of" and select your quota "Early bird and lower". -Do the same for the "Early bird ticket" with the quota "Super early bird ticket". - -This will ensure the following things: - - - Each ticket level is only visible after the previous level is sold out. - - As soon as one level is really sold out, it's not coming back, because the quota "closes", i.e. locks in place. - - By creating a total quota of 400 with all tickets included, you can still make sure to sell the maximum number of tickets, even if e.g. early-bird tickets are canceled. - -Optionally, if you want to hide the early bird prices once they are sold out, go to "Settings", then "Display" and select "Hide all products that are sold out". -Of course, it might be a nice idea to keep showing the prices to remind people to buy earlier next time ;) - -Please note that there might be short time intervals where the prices switch back and forth: -When the last early bird tickets are in someone's cart (but not yet sold!), the early bird tickets will show as "Reserved" and the regular tickets start showing up. -However, if the customers holding the reservations do not complete their order, the early bird tickets will become available again. -This is not avoidable if we want to prevent malicious users from blocking all the cheap tickets without an actual sale happening. - -### Workshops at a conference - -When running a conference, you might also organize a number of workshops with smaller capacity. -To be able to plan, it would be great to know which workshops an attendee plans to attend. - -#### Option A: Questions - -Your first and simplest option is to just create a multiple-choice question. -This has the upside of making it easy for users to change their mind later on, but will not allow you to restrict the number of attendees signing up for a given workshop – or even charge extra for a given workshop. - -#### Option B: Add-on products with fixed time slots - -The usually better option is to go with add-on products. -Let's take for example the following conference schedule, in which the lecture can be attended by anyone, but the workshops only have space for 20 persons each: - -| Time | Room A | Room B | -|---------------------|------------|--------------------------------| -| Wednesday morning | Lecture | | -| Wednesday afternoon | Workshop A | Workshop B | -| Thursday morning | Workshop C | Workshop D (20 € extra charge) | - -Assuming you already created one or more products for your general conference admission, we suggest that you additionally create: - - - A category called "Workshops" with the checkbox "Products in this category are add-on products" activated - - A free product called "Wednesday afternoon" within the category "Workshops" and with two variations: - - Workshop A - - Workshop B - - A free product called "Thursday morning" within the category "Workshops" and with two variations: - - Workshop C - - Workshop D with a price of 20 € - - Four quotas for each of the workshops - - One add-on configuration on your base product that allows users to choose between 0 and 2 products from the category "Workshops" - -#### Option C: Add-on products with variable time slots - -The above option only works if your conference uses fixed time slots and every workshop uses exactly one time slot. -If your schedule looks like this, it's not going to work great: - -| Time | Room A | Room B | -|-------------|-------------------------|--------------------------| -| 09:00-11:00 | Talk 1 | Workshop 1 (first half) | -| 11:00-13:00 | Talk 2 | Workshop 1 (second half) | -| 14:00-16:00 | Workshop 2 (first half) | Talk 3 | -| 16:00-18:00 | Workshop 2 (second half | Talk 4 | - -This issue can be solved with the "Agenda constraints" plugin. -In order to activate that plugin, navigate to :navpath:Your Event → :fa3-wrench: Settings → Plugins: and open the :btn:Features: tab. -Seek out the "Agenda constraints" plugin in the list and click the :btn:Enable: button next to it. - -Then, create a product (without variations) for every single part that should be bookable (talks 1-4 and long workshops 1 and 2) as well as appropriate quotas for each of them. - -All of these products should be part of the same category. -In your base product (e.g. your conference ticket), you can then create an add-on product configuration allowing users to add products from this category. - -If you edit these products, you will be able to enter the "Start date" and "End date" of the talk or workshop close to the bottom of the page. -If you fill in these values, pretix will automatically ensure no overlapping talks are booked. - -!!! Note - - This option is currently only available on pretix Hosted. - If you are interested in using it with pretix Enterprise, please contact sales@pretix.eu. - -### Discount packages - -Imagine you run a trade show that opens on three consecutive days and you want to have the following pricing: - - - Single day: € 10 - - Any two days: € 17 - - All three days: € 25 - -In this case, there are multiple different ways you could set this up with pretix. - -#### Option A: Combination products - -With this option, you just set up all the different combinations someone could by as a separate product. -In this case, you would need 7 products: - - - Day 1 pass - - Day 2 pass - - Day 3 pass - - Day 1+2 pass - - Day 2+3 pass - - Day 1+3 pass - - All-day pass - -Then, you create three quotas, each one with the maximum capacity of your venue on any given day: - - - Day 1 quota, linked to "Day 1 pass", "Day 1+2 pass", "Day 1+3 pass", and "All-day pass" - - Day 2 quota, linked to "Day 2 pass", "Day 1+2 pass", "Day 2+3 pass", and "All-day pass" - - Day 3 quota, linked to "Day 3 pass", "Day 2+3 pass", "Day 1+3 pass", and "All-day pass" - -This way, every person gets exactly one ticket that they can use for all days that they attend. -You can later set up check-in lists appropriately to make sure only tickets valid for a certain day can be scanned on that day. - -The benefit of this option is that your product structure and order structure stays very simple. -However, the two-day packages scale badly when you need many products. - -We recommend this setup for most setups in which the number of possible combinations does not exceed the number of parts (here: number of days) by much. - -#### Option B: Add-ons and bundles - -We can combine the two features "product add-ons" and "product bundles" to set this up in a different way. -Here, you would create the following five products: - - - Day 1 pass in a category called "Day passes" - - Day 2 pass in a category called "Day passes" - - Day 3 pass in a category called "Day passes" - - Two-day pass - - All-day pass - -This time, you will need five quotas: - - Day 1 quota, linked to "Day 1 pass" - - Day 2 quota, linked to "Day 2 pass" - - Day 3 quota, linked to "Day 3 pass" - - Two-day pass quota, linked to "Two-day pass" (can be unlimited) - - All-day pass quota, linked to "All-day pass" (can be unlimited) - -Then, you open the "Add-On" tab in the settings of the Two-day pass product and create a new add-on configuration specifying the following options: - - - Category: "Day passes" - - Minimum number: 2 - - Maximum number: 2 - - Add-Ons are included in the price: Yes - -This way, when buying a two-day pass, the user will be able to select exactly two days for free, which will then be added to the cart. -Depending on your specific configuration, the user will now receive two separate tickets, one for each day. - -For the all-day pass, you open the "Bundled products" tab in the settings of the All-day pass product and add three new bundled items with the following options: - - - Bundled product: "Day 1/2/3" - - Bundled variation: None - - Count: 1 - - Designated price: 0 - -This way, when buying an all-day pass, three free day passes will automatically be added to the cart. -Depending on your specific configuration, the user will now receive three separate tickets, one for each day. - -This approach makes your order data more complicated, since e.g. someone who buys an all-day pass now technically bought four products. -However, this option allows for more flexibility when you have lots of options to choose from. - -!!! Tip - - Depending on the packages you offer, you might not need both the add-on and the bundle feature, i.e. you only need the add-on feature for the two-day pass and only the bundle feature for the all-day pass. - You could also set up the two-day pass like we showed here, but the all-day pass like in option A! - -### Group discounts - -This section explains how to give discounts for whole groups attending your event. - -#### Automatic discounts - -pretix can automatically grant discounts if a certain condition is met, such as a specific group size. - -To set this up, navigate to :navpath:Your event → :fa3-ticket: Products → Discounts: and click the :btn-icon:fa3-plus: Create a new discount: button. -You can choose a descriptive name such as "Discount for school classes" so you can find this again later. -You can also optionally restrict the discount to a specific time frame or a specific sales channel. - -Next, either select **Apply to all products** or create a selection of products that are eligible for the discount. - -For a **percentual group discount** similar to “if you buy at least 5 tickets, you get 20 percent off", set **Minimum number of matching products** to “5" and **Percentual discount on matching products** to “20.00". - -For a **buy-X-get-Y discount**, e.g. “if you buy 5 tickets, you get one free", set **Minimum number of matching products** to “5", **Percentual discount on matching products** to “100.00", and **Apply discount only to this number of matching products** to “1". - -#### Fixed group packages - -If you want to sell group tickets in fixed sizes, e.g. a table of eight at your gala dinner, you can use product bundles. -Assuming you already set up a ticket for admission of individual persons, you then set up a second product **Table (8 persons)** with a discounted full price. -Then, head to the **Bundled products** tab of that product and add one bundle configuration to include the single admission product **eight times**. -Next, create an unlimited quota mapped to the new product. - -This way, the purchase of a table will automatically create eight tickets, leading to a correct calculation of your total quota and, as expected, eight persons on your check-in list. -You can even ask for the individual names of the persons during checkout. - -#### Minimum order amount - -If you want to promote discounted group tickets in your price list, you can also do so by creating a special **Group ticket** at the reduced per-person price and set the **Minimum amount per order** option of the ticket to the minimal group size. - -For more complex use cases, you can also use add-on products that can be chosen multiple times. - -This way, your ticket can be bought an arbitrary number of times – but no less than the given minimal amount per order. - -### Restricted audience - -Not all events are for everyone. -Sometimes, there is a good reason to restrict access to your event or parts of your event only to a specific, invited group. -There are three ways to implement this with pretix: - -#### Option A: Required voucher codes - -You can use vouchers to make a product (or multiple products) only available to a select group of invited guests. -Refer to [Vouchers: Exclusive product availability](vouchers.md#exclusive-product-availability) for detailed instructions. - -#### Option B: Order approvals - -If you do not know individual members of your audience already, but still want to restrict it to a certain group, e.g. people with a given profession, you can check the "Buying this product requires approval" in the settings of your product. -If a customer tries to buy such a product, they will be able to place their order but cannot proceed to payment. -Instead, you will be asked to approve or deny the order and only if you approve it, we will send a payment link to the customer. - -This requires the customer to interact with the ticket shop twice (once for the order, once for the payment) which adds a little more friction, but gives you full control over who attends the event. - -#### Option C: Registered customers & memberships - -You can also do this by requiring that customers have a [customer account](customer-accounts.md) and an active membership. -You can find more information on this mechanism under [season tickets](products.md#season-tickets). - -### Time slots - -A more advanced use case of pretix is using pretix for time-slot-based access to an area with a limited visitor capacity, such as a museum or other attraction. -This guide will show you the quickest way to set up such an event with pretix. - -First of all, when creating your event, you need to select that your event represents an "event series": - -![](../assets/screens/products/create_step11.png "Create step 11") - -For general instructions on how to set up an event series with pretix, refer to our guide on [event series](event-series.md). - -#### Creating slots - -To create the time slots, you need to create a number of "dates" in the event series. -Navigate to :navpath:Your event → :fa3-calendar: Dates: and click the :btn-icon:fa3-plus:Create many new dates: button. -Then, first enter the pattern of your opening days. -In the example, the museum is open week Tuesday to Sunday. -We recommend to create the slots for a few weeks at a time, but not e.g. for a full year, since it will be more complicated to change things later. - -![](../assets/screens/products/timeslots_create1.png "Timeslots create 1") - -Then, scroll to the times section and create your time slots. -You can do any interval you like. -If you have different opening times on different days of the week, you will need to go through the creation process multiple times. - -![](../assets/screens/products/timeslots_create_21.png "Timeslots create 21") - -Scroll further down and create one or multiple quotas that define how many people can book a ticket for that time slot. -In this example, 50 people in total are allowed to enter within every slot: - -![](../assets/screens/products/timeslots_create_31.png "Timeslots create 31") - -Do **not** create a check-in list at this point. -We will deal with this further below in the guide. -Now, press "Save" to create your slots. - -!!! Warning - - If you create a lot of time slots at once, the server might need a few minutes to create them all in our system. - If you receive an error page because it took too long, please do not try again immediately but wait for a few minutes. - Most likely, the slots will be created successfully even though you saw an error. - -#### Event settings - -We recommend that you navigate to :navpath:Your Event → :fa3-wrench: Settings → General:. -Open the :btn:Display: tab and set "Default overview style" to "Week calendar": - -![](../assets/screens/products/timeslots_settings_11.png "Timeslots settings 11") - -Now, your ticket shop should give users a nice weekly overview over all time slots and their availability: - -![](../assets/screens/products/timeslots_presale1.png "Timeslots presale 1") - -#### Check-in - -If you want to scan tickets at the entrance to your event and only admit the ticket holders at their designated time, we recommend the following setup: -Go to "Check-in" in the main navigation on the left and create a new check-in list. -Give it a name and do not choose a specific data. -We will use one check-in list for all dates. -Then, go to the "Advanced" tab at the top and set up two restrictions to make sure people can only get in during the time slot they registered for. - -Under "Custom check-in rule", click the :btn-icon:fa3-plus-circle: Add condition: button and select "All of the conditions below (AND)" from the dropdown menu. -Click :btn-icon:fa3-plus-circle: Add condition: again and select "Current date and time", then "is after", then "Event start". -Leave the "Tolerance (minutes)" field empty. -Click :btn-icon:fa3-plus-circle: Add condition: again and select "Current date and time", then "is before", then "Event end". -Again, leave the "Tolerance (minutes)" field empty. -Your custom check-in rule should now look like the one in the following screenshot: - -![Custom check-in rule page set up according to the instructions above.](../assets/screens/products/timeslots_checkinlists1.png "Timeslots check-in lists 1") - -If you want, you can enter a tolerance of e.g. "10" if you want to be a little bit more relaxed and admit people up to 10 minutes before or after their time slot. - -Now, download our Android or Desktop app and register it to your account. -The app will ask you to select one of the time slots, but it does not matter, you can select any one of them and then select your newly created check-in list. -That's it, you're good to go! - -### Season tickets - -Season tickets and similar time-based tickets are popular for swimming pools, sports clubs, theaters and lots of other types of venues. -In this article, we show you different ways to set them up with pretix. -Of course, other types of tickets such as week tickets, month tickets or tickets of ten can be created with the same mechanism. - -There is a big difference between the two ways we show below. - -With Option A, a customer who purchases a season ticket creates an account with their email address and a password and the season ticket will be saved in that account. -If the customer wants to use the season ticket, they need to buy an additional free ticket for the specific event they want to visit. -This makes sense for all events or venues with limited capacity or reserved seating, because it still allows you to set an upper limit of people showing up for a specific event or time slot. - -With Option B, a customer who purchases a season ticket receives a single ticket with a single QR code that can be used an unlimited number of times. -This makes sense if the capacity of your venue is virtually unlimited and you do not need to know in advance how many season ticket holders will show up. - -#### Option A: Memberships and multiple tickets - -Since this approach requires customers to be identified with a customer account, you first need to enable the customer accounts feature in your organizer settings in the "Customer accounts" tab. -See also: [Customer accounts](customer-accounts.md) - -![](../assets/screens/products/seasontickets_orgsettings1.png "Season tickets organizer settings 1") - -After doing so, a new menu item "Customer accounts" will also show up in the main menu of your organizer account on the left. -Open its menu and click "Membership types". -Then, select to "create a new membership type". - -You can name the membership type in a way that clearly explains where it is valid, e.g. "season pass main location" or "season pass all locations". -There are a few details you can configure on this page, such as whether the season pass can be used by multiple different persons, or if the season pass can be used for multiple tickets for the same time slot. -You can also define a maximum number of usages, which is useful if you e.g. use this feature to add a "ticket of ten". - -![](../assets/screens/products/seasontickets_membershiptype1.png "Season tickets membership type 1") - -Next, you need a way of selling these season passes. -Theoretically this can be done through the same event series that you usually use, but it's probably cleaner and easier to find for customers if you create a new event that you only use to sell season passes. -The start and end date of the new event should correspond to the dates of your season. - -Inside the new event, you only need to create a single product which you can call "season ticket". -Inside that product's settings, head to the "Additional settings" section and look for the option "This product creates a membership of type". -Select the membership type you just created. -By default, the checkbox "The duration of the membership is the same as the duration of the event or event series date" is active, which is fine for our season ticket example, but you might need to unset it and provide custom timing for other ticket types such as week passes. - -![](../assets/screens/products/seasontickets_issue1.png "Season tickets issue 1") - -To prevent confusion, it might be useful to turn off ticket downloading at "Settings" → "Tickets" for your new event. -That's it, you are now ready to sell season tickets! - -We can now deal with how to use the season tickets. -Move back to your existing event and create a new product or product variation of your regular product which you call "ticket for season ticket holders" and assign a price of zero. -In the "Availability" section of the product or variation settings, check the option "Require a valid membership" and again select the membership type you created. -You can of course repeat this with all events the season ticket holder should have access to. - -![](../assets/screens/products/seasontickets_require1.png "Season tickets require 1") - -#### Option B: All-access in a single pass - -If you have only a single event series with many time slots and you do not care how many season ticket holders show up, there's a solution that does not require your customers to set up accounts and book a new ticket on every visit. - -Instead, you can just create an additional product "Season ticket" that you enable either in a "special" date of your event series just created for this purpose, or in all of your dates so it can be easily found by customers. - -Then, you can set up your check-in lists with custom logic in the "Advanced" tab of your check-in list settings. -The logic needs to ensure the following requirements: - - - Regular ticket holders can only get in during their assigned time frame and when they haven't used their ticket before. - - Season ticket holders can always get in. - -Here's an example on how to set this up: -Create an OR-bracket (At least one of the conditions below). -Within that OR-condition, create two AND-brackets (All of the conditions below). -Within the first AND-bracket, create the following conditions: - - - "Product" "is one of" "Day pass" - - "Current date and time" "is after" "Event start" with a tolerance of 0 - - "Current date and time" "is before" "Event end" with a tolerance of 0 - - "Number of previous entries" equals 0 - -Then, within the second AND-bracket, create the following condition: -"Product" "is one of" "Season pass". - -![Custom check-in rule page set up according to the instructions above.](../assets/screens/products/seasontickets_rules1.png "Season tickets rules 1") - -### Mixed taxation - -{% include "warning-tax.md" %} - -For general information on how to set up taxation in pretix, refer to our article on [taxes](taxes.md). - -Let's say you are a charitable organization in Germany and are allowed to charge a reduced tax rate of 7% for your educational event. -However, your event includes a significant amount of food, you might need to charge a 19% tax rate on that portion. -For example, your desired tax structure might then look like this: - - - Conference ticket price: € 450 (incl. € 150 for food) - - - incl. € 19.63 VAT at 7% - - - incl. € 23.95 VAT at 19% - -You can implement this in pretix using product bundles. -In order to do so, you should create the following two products: - - - Conference ticket at € 450 with a 7% tax rule - - - Conference food at € 150 with a 19% tax rule and the option “Only sell this product as part of a bundle" set - -In addition to your normal conference quota, you need to create an unlimited quota for the food product. - -Then, head to the Bundled products tab of the “conference ticket" and add the “conference food" as a bundled product with a designated price of € 150. - -Once a customer tries to buy the € 450 conference ticket, a sub-product will be added and the price will automatically be split into the two components, leading to a correct computation of taxes. - -## Troubleshooting - -### A product does not appear in the ticket shop - -If you have created a product and it is not displayed in your ticket shop, perform the following checks: - - 1. Check if the product's "active" checkbox is enabled. - - 2. Check if the product's "Available from" or "Available until" settings restrict it to a date range. - - 3. Check if the product's checkbox "This product will only be shown if a voucher matching the product is redeemed." is enabled. - If this is the case, the product will only be shown if the customer redeems a voucher that directly matches to this product. - It will not be shown if the voucher only is configured to match a quota that contains the product. - - 4. Check if the product is in a category that has the "Products in this category are add-on products" checkbox enabled. - If this is the case, the product won't show up on the shop front page, but only in the first step of checkout when a product in the cart allows to add add-on products from this category. - - 5. Check that a quota exists that contains this product. - If your product has variations, check that at least one variation is contained in a quota. - If your event is an event series, make sure that the product is contained in a quota that is assigned to the series date that you access the shop for. - - 6. If the sale period has not started yet or is already over, check the "Show items outside presale period" setting of your event. \ No newline at end of file diff --git a/docs/guides/products/.pages b/docs/guides/products/.pages new file mode 100644 index 00000000..131a14af --- /dev/null +++ b/docs/guides/products/.pages @@ -0,0 +1,3 @@ +nav: + - ... | index*.md + - ... \ No newline at end of file diff --git a/docs/guides/products/discounts.md b/docs/guides/products/discounts.md new file mode 100644 index 00000000..8d5538e1 --- /dev/null +++ b/docs/guides/products/discounts.md @@ -0,0 +1,291 @@ +# Discounts + +pretix has several different ways methods offering your customers discounts on their purchase under certain conditions. +This article explains several different types of discounts as well as common use cases: +c + - [different price levels](discounts.md#different-price-levels) + - [early bird prices](discounts.md#early-bird-tickets) + - [discount packages](discounts.md#discount-packages) + - [group discounts](discounts.md#group-discounts). + +## Prerequisites + +Most of the methods described here are handled on the event level, so you have to create an event first. +The article assumes some general knowledge on how to create and edit products, so it makes sense to take a look at the guide on [products](index.md) first. + +## How To + +pretix allows you to create as many different products with different price levels as you need. +This approach is explained under the section [different price levels](discounts.md#different-price-levels). +The sections after that will guide you through some more advanced methods for offering discounts based on certain conditions, such as [early bird prices](discounts.md#early-bird-tickets), [discount packages](discounts.md#discount-packages), and [group discounts](discounts.md#group-discounts). + +### Different price levels + +The most straightforward way to offer a discount is to create two or more admission products with different price levels. +This makes sense if, for example, you are selling discount tickets for pensioners or students. +In order to do so, first create the basic admission ticket and configure it according to your requirements. + +Then, clone the ticket once for each differing price level. +Adjust the name and the price of each cloned ticket. +In the "Description" field, add an informative text along the following lines: +"This ticket is only valid if you provide a student ID during check-in." +Switch to the :btn:Check-in & Validity: tab and add a "Check-in text" with instructions for the person scanning the ticket, for example: +"Check for student ID". + +Add all products to one general quota. +Set the capacity of the quota to the maximum number of tickets you want to sell. + +If you want to place an additional limit on the number of discount tickets available, create another quota and set the capacity to the maximum number of discount tickets you want to sell. +Add only the discount tickets to this quota. +pretix will subtract from both quotas whenever a discount ticket is sold, and subtract from the general quota only when a regular ticket is sold. + +### Early bird tickets + +This section explains how to offer early bird tickets that can only be bought far in advance of the event and which become unavailable in favor of more expensive tickets at some point. +It is possible to create a ticket and manually increase the price as the event approaches. + +But pretix also offers two methods for automating this: +You can offer different pricing tiers based on date, or based on the number of tickets that are still available. +Regardless of which method you use, the first step is creating one admission ticket for each price tier. + +#### Early bird tickets based on time for singular events + +If you want to offer early bird tickets based on the current time for a singular event, edit one of the products and switch to the :btn:Availability: tab. +Use the "Available from" and "Available until" fields to define the period of time in which the product can be purchased. +Repeat this step for each product. + +Make sure that the "Available until" option for the first ticket has the same date and time as the "Available from" option for the following ticket. +This is to ensure that there is no overlap during which more than one pricing tier is available, and no gap during which no tickets are available. + +#### Early bird tickets based on time for dates within an event series + +The method described above does not work for an event series with dates repeating over a large span of time. +If you want to offer early bird tickets based on the time for a date within an event series, navigate to :navpath:Your event series → :fa3-calendar: Dates: and edit one of the dates. +Under "Product settings", use the "Available from" and "Available until" fields to define the period of time in which the product can be purchased for this individual date. + +If you want to set the same availability for multiple dates, navigate to :navpath:Your event series → :fa3-calendar: Dates:, check the box next to each date you want to edit and click the :btn-icon:fa3-edit: Edit selected: button. +Under "Item prices", use the "Available from" and "Available until" fields to define the period of time in which the product can be purchased for the selected dates. +Check the boxes labeled "change" next to "Available from" and "Available until" to ensure that the product settings are overridden. + +#### Early bird tickets based on ticket numbers + +If you want to offer early bird tickets based on the number of tickets already sold for a singular event, create one quota for each price level. +For all price tiers except the last one, enter a limited number in the "Total capacity" field and check the box next to "Close this quota permanently once it is sold out". +This means that once one price tier is sold out, the shop will **not** move back to a previous price tier even if orders are canceled and spots in the quota open up. +Whether you also need to limit the "Total capacity" of the last quota and enable the "Close this quota permanently once it is sold out" option for the last quota depends on your individual use case. + +Add only the first product to the first quota. +Add the first **and** second product to the second quota and set the "Total capacity" so that it includes the capacity of the first quota plus the amount of the second ticket that you want to sell. +Continue like this until you arrive at the last quota, which should contain all relevant products. +This quota setup ensures that you can still sell the maximum number of tickets for your event, even if orders for tickets in the earlier quotas are canceled. + +Navigate to :navpath:Event → :fa3-ticket: Products → Products: and edit the second product in the sequence. +Switch to the :btn:Availability: tab. +Under "Only show after sellout of", select the first quota. +Repeat this process for each following product, always selecting the previous quota. +This means that each price tier is only displayed in the shop after the previous price tier is sold out (the quota is empty). + +If you want to hide the prices for the previous tickets, navigate to :navpath:Your event → :fa3-wrench: Settings → General: and switch to the :btn:Display: tab. +Under "Product list", check the box next to "Hide all products that are sold out". + +!!! Note + There are some rare cases in which prices in your shop may switch back and forth between price tiers. + If a customer places the last products of one price tier in their cart but does not buy them yet, these tickets will be marked as "Reserved" and the next price tier will be displayed. + If the customer does not actually place the order, the previously reserved tickets will be displayed in the shop again and the tickets of the following price tier will disappear. + + This behavior is preferable to a situation in which a malicious user would be able to reserve all tickets of a cheaper tier without buying them. + +For illustrative purposes, assume you intend to sell 400 tickets in three price tiers. +First of all, create three products with different prices: + + - "Super early bird ticket" + - "Early bird ticket" + - "Regular ticket" + +Then, create three quotas: + + - "Super early bird" with a total capacity of 100 and the "Super early bird ticket" product selected. + - "Early bird and lower" with a total capacity of 200 and both the "Super early bird ticket" and the "Early bird ticket" products selected. + - "All participants" with a total capacity of 400, all three products selected and no additional options. + +Next, modify the product "Regular ticket" and switch to the :btn:Availability: tab. +Under "Only show after sellout of", select your quota "Early bird and lower". +Do the same for the "Early bird ticket" with the quota "Super early bird ticket". + +### Discount packages + +This section explains how to offer combinations of several products at lower prices than the sum of the prices of each individual product. +This is useful whenever you are offering several products, expect customers to purchase different combinations of those products, and want to offer lower prices for larger combinations. +You can apply this, for example, to any of the following use cases: + + - a trade fair or festival opening on three consecutive days with different pricing for single-day, two-day, and three-day passes + - different levels of merch packages with larger packages offered at reduced rates + - different offers such as in-person workshops, online content, and a networking event, which are offered at a cheaper price if purchased in combination + +There are two methods to implement this using pretix: +One method uses [combination products](discounts.md#option-a-combination-products). +It has the advantage of keeping your products and possible orders fairly straightforward. +However, this method is only feasible if there are no more than three or four basic products. + +The other method uses [add-ons and bundles](discounts.md#option-b-add-ons-and-bundles). +This option starts out relatively complex, but the complexity does not grow exponentially with an increasing number of basic products, as it does in the first method. + +Generally speaking, the first option makes more sense if you have a small number of basic products, and the second option makes more sense if that number is larger than four or five. +Both methods will be explained in the following subsections. + +If you want to offer a discount for large orders regardless of which products are purchased, refer to the section on [group discounts](discounts.md#group-discounts) instead. + +#### Option A: Combination products + +One option is to create the basic products and quotas, and to then create separate products for all possible combinations of basic products. +This has the advantage of keeping your products and possible orders fairly straightforward. +It can be implemented without touching the add-ons or bundles features. + +However, this method is only feasible if the total number of possible combinations is rather small. +The number of products you need to offer in your shop is `2ⁿ-1`, where `n` is the number of basic products. +This number grows exponentially with every additional basic product. +If you have three basic products, it results in seven products having to be offered in your shop. +If you have four basic products, it results in fifteen products. +For this level of complexity and beyond, the [method using bundles](discounts.md#option-b-add-ons-and-bundles) described below may be more suitable. + +For illustrative purposes, assume you are hosting a three-day trade fair. +Create a basic ticket for each day of the trade fair, three combination tickets for two days, and one combination ticket for all three days: + + - Day 1 ticket + - Day 2 ticket + - Day 3 ticket + - Day 1 + day 2 ticket + - Day 1 + day 3 ticket + - Day 2 + day 3 ticket + - Ticket for all three days + +Then, create three quotas, each one with a total capacity equal to your venue's maximum capacity on any given day: + + - Day 1 quota, linked to "Day 1 ticket", "Day 1 + day 2 ticket", "Day 1 + day 3 ticket", and "Ticket for all three days" + - Day 2 quota, linked to "Day 2 ticket", "Day 1 + day 2 ticket", "Day 1 + day 2 ticket", and "Ticket for all three days" + - Day 3 quota, linked to "Day 3 ticket", "Day 1 + day 3 ticket", "Day 2 + day 3 ticket", and "Ticket for all three days" + +This way, every attendee can order exactly one ticket that they can use for all days that they are going to attend. +Finally, navigate to :navpath:Your event → :fa3-check-square-o: Check-in:, edit your check-in list and switch to the :btn:Advanced: tab. +Define custom check-in rules so that the tickets in the first quota are valid on the first day of the event; the tickets in the second quota are valid on the second day; and the tickets in the third quota are valid on the third day. + +You can do this either using the "Current day of the week" or the "Current date and time" condition. +The check-in rule could look similar to the one in the screenshot below. +The logic looks like this: + +At least one of the conditions below (OR) + + - All of the conditions below (AND) + - Product is one of "Day 1 ticket", "Day 1 + day 2 ticket", "Day 1 + day 3 ticket", or "Ticket for all three days" + - Current day of the week = 1 (Monday) + - All of the conditions below (AND) + - Product is one of "Day 2 ticket", "Day 1 + day 2 ticket", "Day 1 + day 2 ticket", or "Ticket for all three days" + - Current day of the week = 2 (Tuesday) + - All of the conditions below (AND) + - Product is one of "Day 3 ticket", "Day 1 + day 3 ticket", "Day 2 + day 3 ticket", or "Ticket for all three days" + - Current day of the week = 3 (Wednesday) + +![Custom check-in rule with three sets of AND-conditions. The first one demands that the product is one of the products for day one AND that the current day of the week is Monday. The second and third set do the same thing, but for day 2 and Tuesday as well as day 3 and Wednesday respectively. The three sets of AND-conditions are all included in one OR-condition.](../../assets/screens/products/check-in-rules-combination-products.png "Custom check-in rule") + +#### Option B: Add-ons and bundles + +Another option is to create the basic products and quotas, and to then create products with mandatory add-ons for all possible combinations. +An exception can be made for the combination product containing **all** basic products. +The full combination product can either be set up as described above in the section [Option A: Combination products](discounts.md#option-a-combination-products), or as a bundle. +The approach using the bundle will also be described in this section. + +This option has the advantage that the number of products needed does not grow exponentially with the number of basic products. +The main disadvantage is that orders become more complex because every order containing a product with mandatory add-ons will contain at least three products. + +For illustrative purposes, assume you are hosting a three-day trade fair. +First, create a category for "Day tickets". +Then, create a basic admission ticket for each day of the trade fair, one non-admission product for any two days, and one non-admission product for all three days: + + - Day 1 ticket + - Day 2 ticket + - Day 3 ticket + - Ticket for two days + - Ticket for all three days + +Add the tickets for day 1, 2 and 3 to the "Day tickets" category. +Do **not** add any other tickets to that category. +Then, create one quota for each of the admission tickets. +When creating the quotas for each single day ticket, set the "Total capacity" to a number equal to the capacity of your venue for each day. +The quotas for the two-day and three-day ticket can be unlimited. + +Edit the "Ticket for two days", switch to the :btn:Add-on: tab and click the :btn-icon:fa3-plus: Add a new add-on: button. +Select the category "Day tickets", set the minimum and maximum number to 2 and check the box next to "Add-ons are included in the price". +Click the :btn:Save: button. +With this configuration, a customer purchasing the "Ticket for two days" will be prompted to add two tickets from the "Day tickets" category to their purchase as add-ons. +The customer will receive two tickets: one for each day of the event that they selected. + +It does not make sense to set up the "Ticket for all three days" the same way because then the customer would have to select all three day tickets manually. +If you want to set up the "Ticket for all three days" as a bundle, edit it and open the :btn:Bundled products: tab. +Click the :btn-icon:fa3-plus: Add a new bundled product: button. +For the "Bundled product, choose the "Day 1 ticket". +Leave the "Quantity" at 1 and the "Designated price part" at 0.00. +Repeat the same process for "Day 2 ticket" and "Day 3 ticket". + +This configuration means that when a customer purchases the "Ticket for all three days", the three day tickets will be added to their cart automatically for free. +The customer will receive three tickets: one for each day of the event. + +Finally, navigate to :navpath:Your event → :fa3-check-square-o: Check-in:, edit your check-in list and switch to the :btn:Advanced: tab. +Define custom check-in rules so that the "Day 1 ticket" is only valid on the first day of the event; the "Day 2 ticket" is only valid on the second day; and the "Day 3 ticket" is only valid on the third day. +If you have set up the "Ticket for all three days" as a combination product, define the rule so that it is also valid on each day. +You can do this either using the "Current day of the week" or the "Current date and time" condition. +The logic looks like this: + +At least one of the conditions below (OR) + + - All of the conditions below (AND) + - Product is one of "Day 1 ticket" or "Ticket for all three days" + - Current day of the week = 1 (Monday) + - All of the conditions below (AND) + - Product is one of "Day 2 ticket" or "Ticket for all three days" + - Current day of the week = 2 (Tuesday) + - All of the conditions below (AND) + - Product is one of "Day 3 ticket" + - Current day of the week = 3 (Wednesday) + +!!! Note + You can also set up the "Ticket for all three days" as described in the section [Option A: Combination products](discounts.md#option-a-combination-products). + If you decide to do so, also include this ticket in each condition starting with "Product is one of". + +### Group discounts + +pretix gives you several methods for offering discounts to whole groups of people attending your event. +You can either set up a rule for discounts that is applied automatically if a purchase meets certain conditions; offer fixed group packages at reduced prices; or offer cheaper tickets tied to a minimum order amount. +The following subsections will explain each method. + +#### Automatic discounts + +You can use pretix to automatically grant a discount on an order if a certain condition is met, such as a certain group size. + +To set this up, navigate to :navpath:Your event → :fa3-ticket: Products → Discounts: and click the :btn-icon:fa3-plus: Create a new discount: button. +Choose an "Internal name" for the discount. +For a percentage discount such as "20 percent off if you buy 5 tickets", set the "Minimum number of matching products" to 5 and the "Percentual discount on matching products" to 20.00. + +For a discount such as “buy 5, get one free", set the "Minimum number of matching products" to 5, "Percentual discount on matching products" to 100.00, and "Apply discount only to this number of matching products" to 1. + +#### Fixed group packages + +You can use bundles to sell group tickets with fixed sizes, for example a table of eight at your gala dinner. + +First, create a basic admission ticket for a single person. +Then, create a non-admission product with a price lower than the full price for eight individual tickets. +Open the :btn:Bundled products: tab of that product and click the :btn-icon:fa3-plus: Add a new bundled product: button. +Choose your basic admission ticket as the "Bundled product", set "Quantity" to 8 and click the :btn:Save: button. + +Create a quota that includes only the eight person bundle. +This quota can have an unlimited capacity. + +This configuration means that whenever one of the bundles is purchased, pretix creates eight individual tickets. +This results in the proper number being subtracted from the basic product quota and eight new entries for attendees on your check-in list. +If you need each individual attendee's personal data, navigate to :navpath:Your Event → :fa3-wrench: Settings → General:, open the :btn:Customer and attendee data: tab and edit the settings under "Attendee data (once per personalized ticket)". + +#### Minimum order amount + +You can use the minimum order amount feature to promote discounted group tickets. +In order to do so, create a single-person ticket at a reduced price. +Open the :btn:Availability: tab and set the "Minimum amount per order" to the minimal group size for which you want to grant the discount. +This way, your ticket can be bought an arbitrary number of times – but no less than the given minimal amount per order. diff --git a/docs/guides/products/index.md b/docs/guides/products/index.md new file mode 100644 index 00000000..fa1a0afb --- /dev/null +++ b/docs/guides/products/index.md @@ -0,0 +1,292 @@ +# Products + +A product is anything sold via pretix: tickets, gift cards, conference t-shirts and so on. +pretix offers you almost unlimited possibilities for configuring and structuring products. +This article guides you through the basic process of creating a product and explains several practical applications of some of the more advanced features of pretix. + +## Prerequisites + +Products are configured on the event level, so you have to create an event first. + +## General usage + +This section guides you through the basic process of product creation. +This involves first creating categories, then the products themselves, and finally quotas. +You cannot create add-on products or products for cross-selling without choosing a category for them. +You cannot create a quota without adding at least one product to it. +Thus, this guide will explain those steps in that order. + +### Creating and editing categories + +![Page titled 'Product categories', showing a list of categories only containing 'Tickets' and a button for creating a new category.](../../assets/screens/products/categories.png "Product categories screenshot") + +Categories do several things. +They help you group products into sensible categories both in the backend and in your shop. +Your shop page will display products grouped by categories which can help customers find the item they are looking for more easily. +Sorting products into categories can help you keep track of them in the backend. + +Categories also separate normal products, which can be purchased directly, from additional products, which are only offered as add-ons to normal products. +If you want to sell not only admission tickets, but also extras such as merchandise, you have create a category for add-on products. +You also need an extra category if you are planning to use the cross-selling feature. + +In order to edit categories, navigate to :navpath:Your event → :fa3-ticket: Products → Categories:. +This page shows the list of all product categories. + +Click the :btn-icon:fa3-plus: Create a new category: button and give the new category a name. +Choose the category type depending on the type of products in this category: normal, add-on, cross-selling, or normal + cross-selling. + +Normal products are standalone products that can be purchased directly. +Add-on products are products that are only offered as add-ons to normal products. +Cross-selling products are products that are only offered in the cross-selling step as a customer is purchasing other products. +Finally, products in the "normal + cross-selling" category are both offered as standalone products and in the cross-selling step. +The "Cross-selling condition" setting below determines how products in the "cross-selling" and "normal + cross-selling" categories are offered in your shop. + +Click the :btn:Save: button at the bottom of the page. +This takes you back to the product categories page, which now also lists the newly created category. + +You can also edit an already existing category and change its name, description, and type, by clicking its name or the :btn-icon:fa3-edit:: edit button next to it in the list. + +### Creating and editing products + +![Page titled 'Products', showing a list of products containing two entries and a button for creating a new product.](../../assets/screens/products/products.png "Products screenshot") + +If you want to create or edit products, navigate to :navpath:Event → :fa3-ticket: Products → Products:. +This page shows the list of all products. +Click the :btn-icon:fa3-plus: Create a new product: button. +Choose a name, a description, a default price and a sales tax and click the :btn:Save: button. + +You can also edit an already existing product by clicking its name or the :btn-icon:fa3-edit:: edit button next to it in the list. + +### Creating and editing quotas + +A quota determines how many instances of your product can be sold. +Every product has to be part of at least one quota before it becomes available in the shop. + +If you want to create or edit quotas, navigate to :navpath:Event → :fa3-ticket: Products → Quotas:. +This page shows the list of all quotas for the event as well as the total capacity and how many items are left for each quota. + +Click the :btn-icon:fa3-plus: Create a new quota: button. +Choose a name and a capacity, check the products to be contained in this quota, and any advanced options, and then click the :btn:Save: button. + +You can also edit an already existing quota by clicking its name or the :btn-icon:fa3-edit:: edit button next to it in the list. + +## Applications + +This section covers advanced use cases and how to implement them using the options pretix offers for customizing products. + +### Time slots + +You can use pretix to set up access to a venue with a limited visitor capacity, such as a museum, based on time slots. +This guide shows you how to create an event with time slots. + +Create a new event. +Under "Event type", select "Event series or time slot booking". + +![Page titled 'Create a new event (Step 1)'. Under 'Event type' the option 'Event series or time slot booking' is selected' ](../../assets/screens/event/create-series.png "Create a new event") + +For general instructions on how to set up an event series with pretix, refer to our guide on [event series](../event-series.md). + +#### Creating slots + +In order to create time slots, you have to create a number of "dates" in the event series. +Navigate to :navpath:Your event → :fa3-calendar: Dates: and click the :btn-icon:fa3-plus:Create many new dates: button. +Enter a pattern for your opening days. +If your venue opens every week from Tuesday to Sunday in January of 2027, enter the following pattern: +"Repeat every `1` `week(s)`, starting at `2027-01-01`" +Check the boxes for Tuesday, Wednesday, Thursday, Friday, and Saturday. +Select "Repeat until" and enter `2027-01-31` into the field. + +It makes sense to create time slots for a few weeks at a time. +Do not create time slots for a full year or an even longer period of time. +Doing so would make it too complicated to make changes later. + +![Page titled 'Create multiple dates', with selections made as described above. A preview listing all dates to be created is displayed on the right.](../../assets/screens/event-series/create-multiple-example2.png "Create multiple dates") + +Under "Times", specify the time slots for each opening day. +If your venue opens every day from 10 AM to 6 PM and each time slot corresponds to a full hour, you can click the :btn-icon:fa3-calendar: Add many time slots: button. +Specify "Start of first slot" as "10:00:00", "End of time slots" as "18:00:00", "Length of slots" as "60" and "Break between slots" as "0". +Then, click the :btn-icon:fa3-check: Create: button. +If your time slot pattern is more irregular or complex, use the :btn-icon:fa3-plus: Add a single time slot: button and edit each line individually. + +If you have different opening times on different days of the week, you will need to go through the creation process multiple times. + +![Page displaying the headline 'Times' and eight time slots ranging from 10 AM to 6 PM, each lasting an hour with no admission time specified.](../../assets/screens/event-series/create-times.png "Create multiple dates–Times") + +Under "Quotas, create one or multiple quotas. +These quotas determine how many people can book a ticket for each time slot. +If you want each time slot to be attended by a maximum of 50 people, set the "Total capacity" to `50` +Once you are happy with your choices, click the :btn:Save: button. + +!!! Note + If you create a large number of time slots at once, it may take a moment until all of them can be displayed. + If you encounter an error message during this stage, wait a few minutes for the server to finish the task. + Do **not** try again immediately. + In most cases, the dates will be created successfully even if an error message is displayed. + +#### Enabling the week calendar view + +For an event series or time slot booking, it makes sense to enable the "Week calendar" overview style for the shop page. +In order to do so, navigate to :navpath:Your Event → :fa3-wrench: Settings → General:. +Open the :btn:Display: tab and set "Default overview style" to "Week calendar": + +![Page displaying the headline 'Calendar list and views'. Under 'Default overview style', the option 'Week calendar' has been selected.](../../assets/screens/event-series/calendar-views.png "Display–Calendar list and views") + +Your ticket shop will now display a weekly overview over all time slots and their availability. + +#### Check-in + +If you are selling tickets for certain time slots, then you also want customers to be admitted to the event only if their ticket matches the current time slot. +This section explains how to set this up using custom check-in rules. +Navigate to :navpath:Your event → :fa3-check-square-o: Check-in → Check-in lists: and click the :btn-icon:fa3-plus: Create a new check-in list: button. + +Specify a name, but do **not** choose a specific date. +This check-in list will apply to all dates. +Open the :btn:Advanced: tab. + +Under "Custom check-in rule", click the :btn-icon:fa3-plus-circle: Add condition: button and select "All of the conditions below (AND)" from the dropdown menu. +Click :btn-icon:fa3-plus-circle: Add condition: again and select "Current date and time", then "is after", then "Event start". +Click :btn-icon:fa3-plus-circle: Add condition: again and select "Current date and time", then "is before", then "Event end". +You can leave the "Tolerance (minutes)" fields empty or specify a tolerance of a few minutes for some leniency. + +![Custom check-in rule page set up according to the instructions above.](../../assets/screens/products/time-slot-check-in-rule.png "Custom check-in rule") + +With these two restrictions, customers can only access your event during the time slot for which they bought a ticket. +Once you are happy with your choices, click the :btn:Save: button. + +When using pretixSCAN with this setup, the app will ask you to select one of the time slots. +The choice does not matter. +It is only important that you select the check-in list you just set up. +Select any time slot that is part of the event series and then select the check-in list described above. + +### Season tickets + +Season tickets are often used for public swimming pools, sports clubs, theaters, and other types of venues. +This section explains two methods for setting them up in pretix. +These methods can be used for any ticket that grants access to all events during a certain time period. +It does not matter whether that time period spans several years or just a single day. + +The first method, option A, uses memberships. +The second method, option B, uses a single season ticket. + +With **Option A**, a customer who purchases a season ticket creates an account with their email address and a password. +The season ticket will be stored in that account. +Whenever the customer wants to use the season ticket, they need to purchase a ticket for that event. +Their membership allows them to get that ticket for free. +If your venue has limited capacity or reserved seating, use option A. +This method allows you to control the total number of people that can be admitted to an event or time slot using quotas. + +With **Option B**, a customer who purchases a season ticket receives a single ticket with a single ticket secret that can be used an unlimited number of times. +Use option B if you are only hosting a single event or event series, the capacity of your venue is virtually unlimited, and you do not need to know in advance how many season ticket holders will show up. + +#### Option A: Memberships and multiple tickets + +Option A requires customers to be identified with a customer account. +Thus, you first need to enable the customer accounts feature in your organizer settings in the "Customer accounts" tab. +See also: [Customer accounts](../customer-accounts.md) + +![Organizer settings page, on the Customer accounts tab. The boxes next to 'Allow customers to create accounts', 'Allow customers to create accounts', and 'Allow customers to log in with email address and password' have been checked.](../../assets/screens/organizer/customer-accounts.png "Organizer settings–Customer accounts") + +Once you have done that, navigate to :navpath:Your organizer → :fa3-user: Customer accounts → Membership types:. +Click the :btn-icon:fa3-plus: Create a new membership type: button. + +Give the new membership type a distinct and informative name. +If you want the membership to allow purchase of tickets for multiple different people, check the box next to "Membership is transferable". +If you want the membership to allow purchase for multiple different events or dates with the same start time, check the box next to "Parallel usage is allowed". + +If you want to limit the membership to a certain number of purchases, specify that number in the "Maximum usages" field. +If you want to allow unlimited purchases within the specified time frame, leave this field empty. +Once you are happy with your choices, click the :btn:Save: button. + +![Page titled Create a new membership type. The name is specified as Season pass 2027-1. The boxes next to 'Membership is transferable' and 'Parallel usage is allowed' are checked. The 'Maximum usages' field is empty.](../../assets/screens/products/membership-type.png "Create a new membership type") + +Once you have created the membership type, you also need a way to sell these memberships. +Create a new event with start and end dates corresponding to the duration of the season for which you want to sell season passes. +Navigate to :navpath:Your event → :fa3-ticket: Products: and click the :btn-icon:fa3-plus: Create a new product: button. +Choose a name such as "Season pass" and a price, and then click the :btn:Save and continue with more settings: button. + +Then, open the :btn:Additional settings: tab. +Under "This product creates a membership of type", select the membership you just created. +By default, the box next to "The duration of the membership is the same as the duration of the event or event series date" is checked. +If you are selling multiple time-based passes with different periods of validity which do not match the duration of the event, uncheck the box. + +![Page titled Modify product: Season pass, on the Additional settings tab. Under 'This product creates a membership of type', the membership 'Season pass 2027-1' is selected. The checkbox next to ' The duration of the membership is the same as the duration of the event or event series date' is checked.](../../assets/screens/products/product-creates-membership.png "Modify product: Season pass") + +In order to prevent customers from confusing their season pass with their ticket, it makes sense to disable ticket downloads. +Navigate to :navpath:Your event → :fa3-wrench: Settings: and uncheck the box next to "Allow users to download tickets". + +Once the season pass shop has been set up, you need to create free products that can only be purchased with the season pass for each applicable event. +Clone an existing admission ticket, append a descriptor such as "for season ticket holders" to the name, and set the price to zero. +Click the :btn:Save and continue with more settings: button and then open the :btn:Availability: tab. +Check the box next to "Require a valid membership" and select the membership type you created. +If you want to display this product only to customers who already have an active membership in your shop, check the box next to "Hide without a valid membership". + +Repeat these steps for every product you want to make available for free for season pass holders. +If you want season pass holders to be able to attend multiple of your events for free, repeat these steps for every applicable event. + +![Page displaying the option 'Require a valid membership', which is checked, and 'Allowed membership types', under which 'Season pass 2027-1' is selected. The box next to 'Hide without a valid membership' is checked.](../../assets/screens/products/require.png "Require a valid membership") + +#### Option B: All-access in a single pass + +Option B is setting up a single all-access pass. +This is less complicated to set up than option A because it does not require your customers to set up accounts and book a new ticket on every visit. +However, you can only use option B if you have only a single event series, and no space limitations at your venue. + +In order to set up a single all-access pass, navigate to :navpath:Your event → :fa3-ticket: Products: and click the :btn-icon:fa3-plus: Create a new product: button. +Give the new product a name such as "Season ticket". +Enable this product for all dates in your event series. + +You have to set up custom check-in rules to allow customers access to all dates with the season pass. +Navigate to :navpath:Your event → :fa3-check-square-o: Check-in → Check-in lists: and click the :btn-icon:fa3-plus: Create a new check-in list: button. + +Specify a name, but do **not** choose a specific date. +This check-in list will apply to all dates. +Open the :btn:Advanced: tab. + +Under "Custom check-in rule", click the :btn-icon:fa3-plus-circle: Add condition: button and select "At least one of the conditions below (OR)" from the dropdown menu. +Click the :btn-icon:fa3-plus-circle: Add condition: button again and select "All of the conditions below (AND)" from the dropdown menu. +You now have an OR-bracket with an AND-bracket inside it. + +Click the :btn-icon:fa3-plus-circle: Add condition: button **within the AND-bracket** and select "Product", then "is one of", and then all admission tickets **other than** the season pass. +Click the :btn-icon:fa3-plus-circle: Add condition: button within the AND-bracket again and select "Current date and time", then "is after", then "Event start". +Click the :btn-icon:fa3-plus-circle: Add condition: button within the AND-bracket again and select "Current date and time", then "is before", then "Event end". +You can leave the "Tolerance (minutes)" fields empty or specify a tolerance of a few minutes for some leniency. +Click the :btn-icon:fa3-plus-circle: Add condition: button within the AND-bracket a final time and select "Number of previous entries", then "=", then "0". + +Then, click the :btn-icon:fa3-plus-circle: Add condition: button that is located within the OR-bracket, but **not** within the AND-bracket. +It should be further down on the page. +Select "Product", then "is one of", and then your season pass product. + +![Custom check-in rule page set up according to the instructions above.](../../assets/screens/products/seasontickets_rules1.png "Season tickets rules 1") + +The logic is depicted in the screenshot above. +These rules ensure that regular tickets holders are only admitted to their chosen date and if their ticket has not been used before. +They also ensure that season ticket holders are always admitted. + +### Mixed taxation + +{% include "warning-tax.md" %} + +The article on [taxes](../taxes.md) has a section explaining how to set up products with [mixed taxation](../taxes.md#mixed-taxation) using bundles. + +## Troubleshooting + +### A product does not appear in the ticket shop + +If you have created a product and it is not displayed in your ticket shop, perform the following checks: + + 1. Check if the product's "active" checkbox is enabled. + + 2. Check if the product's "Available from" or "Available until" settings restrict it to a date range. + + 3. Check if the product's checkbox "This product will only be shown if a voucher matching the product is redeemed." is enabled. + If this is the case, the product will only be shown if the customer redeems a voucher that directly matches to this product. + It will not be shown if the voucher only is configured to match a quota that contains the product. + + 4. Check if the product is in a category that has the "Products in this category are add-on products" checkbox enabled. + If this is the case, the product won't show up on the shop front page, but only in the first step of checkout when a product in the cart allows to add add-on products from this category. + + 5. Check that a quota exists that contains this product. + If your product has variations, check that at least one variation is contained in a quota. + If your event is an event series, make sure that the product is contained in a quota that is assigned to the series date that you access the shop for. + + 6. If the sale period has not started yet or is already over, check the "Show items outside presale period" setting of your event. \ No newline at end of file diff --git a/docs/guides/products/restricted-audience.md b/docs/guides/products/restricted-audience.md new file mode 100644 index 00000000..00db9e48 --- /dev/null +++ b/docs/guides/products/restricted-audience.md @@ -0,0 +1,28 @@ +# Restricted audience + +Not all events are for everyone. +Sometimes, there is a good reason to restrict access to your event or parts of your event only to a specific, invited group. +There are several ways to implement this with pretix. +This article will guide you through all of them. + +## Option A: Required voucher codes + +You can use vouchers to make a product (or multiple products) only available to a select group of invited guests. +Refer to [Vouchers: Exclusive product availability](../vouchers.md#exclusive-product-availability) for detailed instructions. + +## Option B: Order approvals + +If you do not know individual members of your audience already, but still want to restrict it to a certain group, e.g. people with a given profession, edit your admission products and check the box next to "Buying this product requires approval". +Customers will be able to place an order for such a product, but cannot proceed to payment without you having approved the order. + +Navigate to :navpath:Your event → :fa3-shopping-cart: Orders → All orders: and manually approve or decline each order that contains a product that requires approval. +Once you have done that, the customer will receive an email notifying them that their order has been approved and they can proceed to payment. + +The main downside of this approach is that your customers will have to interact with the ticket shop twice: once for placing the order, and once for paying. +On the other hand, it gives you control over who attends the event for each individual order. + +## Option C: Registered customers & memberships + +You can restrict your event to a certain group by requiring a membership for purchasing a ticket. +Refer to the article on [customer accounts](../customer-accounts.md) for instructions on how to set this up. +You can find more information on granting and requiring memberships under [season tickets](index.md#option-a-memberships-and-multiple-tickets). diff --git a/docs/guides/products/sessions.md b/docs/guides/products/sessions.md new file mode 100644 index 00000000..a1e9630f --- /dev/null +++ b/docs/guides/products/sessions.md @@ -0,0 +1,116 @@ +# Sessions + +Your event may be made up of several smaller events ("sessions") with more limited capacities, with attendees being able to pick and choose which of these sessions they want to attend. +If you are planning a conference with multiple workshops, a celebration with a variety of activities, or a similar event, you may need a way to control access to those sessions. +pretix offers you several methods to do this: simply adding a mandatory question to be asked with every order, add-on products with fixed time slots, or a plugin with advanced functions for variable time slots. +This article will guide you through all three of them. + +If your event's schedule is small and straightforward, all sessions are included in the basic admission price, and you do not need to keep track of who attends which session, you should use [questions](sessions.md#option-a-questions). + +If your event's schedule is large, you have deviating prices for some of the sessions, or each session can only be attended by a limited number of people, you should use [add-on products](sessions.md#option-b-add-on-products-with-fixed-time-slots). + +If the above conditions apply and you also have sessions with varying start and end times that cannot be neatly organized into time slots because of overlap, you should use the [agenda constraints plugin](sessions.md#option-c-add-on-products-with-variable-time-slots). + +If you are not planning sessions that all take place within the scope of one big main event, but a series of events that can be attended individually, refer to our article on [event series](../event-series.md) instead. + +## Option A: Questions + +If you are only offering a limited number of sessions and are not faced with a realistic risk of overcrowding in any of them, you can create a multiple-choice question. +Customers will be prompted to answer this question while placing their order. +This has the upside of making it easy for users to change their mind later on. +It can also be set up fairly quickly. +However, this method will not allow you to restrict the number of attendees signing up for a given session. +It will also not allow you to charge extra for any of the sessions. + +![Question set up according to the instructions below, with answer options for "Workshop A" and "Workshop B"](../../assets/screens/products/question-sessions.png "Question for sessions") + +In order to set up a question, navigate to :navpath:Event → :fa3-ticket: Products → Questions: and click the :btn-icon:fa3-plus:Create a new question: button. +Under "Question", add text for each language that your shop uses. +This text will be displayed to the customer while they are making their purchase. +The "Question" could read something like: "Which workshop do you want to attend in the 10 AM time slot?" + +For "Question type", select "Choose one from a list". +For "Products", select every product during the purchase of which the question should be asked—typically, this wil apply to any basic admission product for your event. +If you check the box next to "Required question", then your customers will be forced to make a choice here. +Your ticket shop will not allow them to proceed without making a selection. +Click :btn-icon:fa3-plus:Add a new option: and add an answer option for each session that is going to be offered at your event. + +## Option B: Add-on products with fixed time slots + +If you are offering a large number of sessions, are working with space constraints at your venue, or want to charge extra for at least one of the sessions, then you should use add-on products with fixed time slots. +This section tells you how to do that. + +First, create at least one basic admission product for your event and a category for add-on products. +Then, create a new product for your first time slot. +Add it to the add-on category you just created, select "Product with multiple variations" and set the price to zero. +Open the "Variations" tab and create one variation for each session taking place within that time slot. +Repeat these steps for each time slot and session at your event. + +For illustrative purposes, assume you are hosting a conference with workshops that can only be attended by a maximum of 20 people. +The schedule looks like this: + +| Time | Room A | Room B | +|---------------------|------------|--------------------------------| +| Wednesday morning | Lecture | | +| Wednesday afternoon | Workshop A | Workshop B | +| Thursday morning | Workshop C | Workshop D (€20 additional charge) | + +In addition to the basic admission products for this conference, you also have to create the following products: + + - A category called "Workshops" with the box next to "Products in this category are add-on products" checked + - A free product called "Wednesday afternoon" in the "Workshops" category with two variations: + - Workshop A + - Workshop B + - A product called "Thursday morning" in the "Workshops" category with two variations: + - Workshop C (free) + - Workshop D (€20) + - One quota for each additional product (workshop), each with a total capacity of 20 + +!["Edit product" page, on the "Add-ons" tab. The category "Workshops" is selected. The minimum number is 0 and the maximum is 2](../../assets/screens/products/add-on.png "Add Add-Ons to product") + +After you have created these categories, products, and quotas, edit your basic admission tickets and open the :btn:Add-ons: tab. +Add an add-on from the "Workshops" category with "Minimum number" of 0 and a "Maximum number" of 2 and click the :btn:Save: button. +This enables your customers to choose which of the workshops they want to attend. +It also allows you to track planned attendance numbers through the quotas for each workshop. + +## Option C: Add-on products with variable time slots + + + +If the sessions at your event have overlapping start and end times and cannot be neatly organized into time slots, you can solve this issue with the "Agenda constraints" plugin. +One example for a schedule which would necessitate the use of the agenda constraints plugin is the following: + +| Time | Room A | Room B | +|-------------|-------------------------|--------------------------| +| 09:00-11:00 | Talk 1 | Workshop 1 (first half) | +| 11:00-13:00 | Talk 2 | Workshop 1 (second half) | +| 14:00-16:00 | Workshop 2 (first half) | Talk 3 | +| 16:00-18:00 | Workshop 2 (second half | Talk 4 | + +In this example, Workshops 1 and 2 are twice as long as the talks. +Thus, it makes no sense to implement this schedule with add-on products as described under [option B](sessions.md#option-b-add-on-products-with-fixed-time-slots). +This would either result in customers having to book each half of the workshops individually, or in allowing them to book combinations of overlapping sessions which they cannot attend. +You can handle more complicated schedules like this one with the agenda constraints plugin. + +In order to activate that plugin, navigate to :navpath:Your Event → :fa3-wrench: Settings → Plugins: and open the :btn:Features: tab. +Search for the "Agenda constraints" plugin in the list and click the :btn:Enable: button next to it. + +!["Edit product" page, on the "Additional settings" tab. Options for "Start date" and "End date" are displayed, and a date and time has been entered for each.](../../assets/screens/products/agenda-constraints.png "Agenda constraints on product") + +Create a category for session tickets and check the box next to "Products in this category are add-on products". +Create a product for each individual session, add it to the sessions category and switch to the :btn:Additional settings: tab. +Use the fields "Start date" and "End date" to define the span of time in which the session is taking place. +Create a quota for each of the session add-on products, with the total capacity of the quota reflecting the maximum number of attendants for each session. + +Edit the basic admission tickets for your event and open the :btn:Add-ons: tab. +Add an add-on from the sessions category with a "Minimum number" of 0 and a "Maximum number" equal to or greater than the largest possible number of workshops a guest can attend. +Click the :btn:Save: button. + +This enables your customers to choose which of the workshops they want to attend. +The "Start date" and "End date" you defined for each add-on product will restrict which combinations of sessions your customers can book. +You can limit planned attendance numbers through the quotas for each workshop. + +!!! Note + + The agenda constraints plugin is currently only available on pretix Hosted. + If you are interested in using it with pretix Enterprise, please contact sales@pretix.eu. diff --git a/docs/guides/taxes.md b/docs/guides/taxes.md index 319a42a2..bc8b857a 100644 --- a/docs/guides/taxes.md +++ b/docs/guides/taxes.md @@ -41,15 +41,15 @@ Provide a translation for each language you are using. Optionally, you may choose an "Internal name" that will only be displayed in the backend. Under "Tax rate", choose a rate in percent. -For example, if your products are sold with the regular value-added tax rate in Germany, set the "Tax rate" to 19%. +For example, if your products are sold with the regular value-added tax rate in Germany, set the "Tax rate" to 19.00%. The box next to "The configured product prices include the tax amount" determines whether the price of a product with this tax rule is handled as its net price (before tax) or its gross price (after tax). By default, this box is checked, so all product prices with this tax rule are handled as gross prices (tax is included in the price). -This means that a product with a listed price of €10.00 and a tax rate of 19% has a net price of €8.40, €1.60 worth of value-added tax, and a total gross price of €10.00. +This means that a product with a listed price of €10.00 and a tax rate of 19.00% has a net price of €8.40, €1.60 worth of value-added tax, and a total gross price of €10.00. If you uncheck this box, all product prices with this tax rule are handled as net prices (tax is added on top of the listed price). -A product with a price of €10.00 and a 19% tax rule will have €1.90 worth of taxes added on top of the net price, leading to a gross price of €11.90. +A product with a price of €10.00 and a 19.00% tax rule will have €1.90 worth of taxes added on top of the net price, leading to a gross price of €11.90. This setting applies to all products that use this specific tax rule. It does **not** apply to all products in your shop. @@ -158,7 +158,7 @@ Confirm your choices by clicking the :btn:Perform changes: button. Modifying tax status back and forth may introduce rounding errors of up to one cent from the intended price. This is unavoidable due to the flexible nature in which prices are being calculated. -### Assigning tax rules +sp### Assigning tax rules ![Create product dialog. The last option is a dropdown menu labeled 'Sales tax'. The current selection is 'No taxation'. At the bottom of the page, there is a button labeled 'Save and continue with more settings'.](../assets/screens/tax/create-product.png "Create product dialog" ) @@ -178,6 +178,49 @@ In the "Sales tax" drop-down menu, select the tax rule that you want to assign t This list will use the internal name you specified on the tax rules settings page and the specified percentage. Once you have made your selection, click the :btn:Save: button. +#### Mixed taxation + +{% include "warning-tax.md" %} + +This section explains how to implement a mixed tax situation for a single product. +pretix allows you to do this by combining several products, each with their own tax rate, into a single bundle. + +Create one product for each relevant tax rate. +Assign each product a different tax rate. +For all products except one, switch to the :btn:Availability: tab, check the box next to "Only sell this product as part of a bundle" and click the :btn:Save: button. +Skip this step for the last of the products you created. + +Assign this product the total price of the combination of differently taxed products. +Its price represents the full price of the bundle. +The price does **not** result out of the addition of the price parts. + +Edit the ticket with the full price, switch to the :btn:Bundled products: tab and click the :btn-icon:fa3-plus: Add a new bundled product: button. +Choose one of the other products you created under "Bundled product" and set the "Designated price part". +Repeat this step for each product with a diverging tax rate that you want to include in this bundle. +Then, click the :btn:Save: button. + +For illustrative purposes, let's say you are organizing an educational event for a charitable organization in Germany and you have permission to charge a reduced tax rate of 7.00% that event. +However, the admission ticket price also includes catering, which is still taxed at a rate of 19.00%. +The tax situation may look something like this: + + - event ticket price: €450 (including €150 for food) + + - including €19.63 VAT at 7.00% + - incl. €23.95 VAT at 19.00% + +If you want to depict this tax situation using the method described above, create the following two products: + + - "Event ticket" with a price of €450 and a tax rate of 7.00% + + - "Catering" with a price of €150, a 19.00% tax rule and the box “Only sell this product as part of a bundle" checked + +Then, select the "Event ticket" and open the :btn:Bundled products: tab. +Add the "Catering" product and enter a "Designated price part" of €150. + +When a customer purchases the event ticket, the catering will be added as a bundled product automatically. +The product price of €450 will be split into the two components. +€300 will be taxed at 7.00% and €150 will be taxed at 19.00%, just as intended. + ## Troubleshooting ### International business customer places order without VAT ID