pretix

Release 2025.7.0 of pretix

Aug. 20, 2025

Today, we are releasing pretix 2025.7.0. This release includes major new capabilities for our plugin ecosystem, changes to default tax rates, and a lot more.

Big thanks go out to Christoph Walcher, CVZ-es, Hijiri Umemoto, Jan Van Haver, Luca Sorace Stranck, Nikolai, Olexandr88, Rosario Castellana, Ryo Tagami, Tim Maurizio Dullaart, Waldir Pimenta, Yasunobu YesNo Kawaguchi, and Zona Vip who contributed to this release. ❤️

pretix 2025.7.0 is now available for installation via pip. The new Docker images will appear on Docker Hub over the next few hours. All customers of pretix Hosted are already using the new version and do not need to take any action.

Update 2025-08-23: The original release 2025.7.0 contained a critical bug in a data migration. We have removed the release from PyPI and Docker Hub and replaced it with 2025.7.1, which does not have the bug. Please see our additional blogpost if you already upgraded to 2025.7.0.

Organizer-level plugins

One of pretix's superpowers is the extensibility through our plugins that can bring in additional functionality. Since the very start, plugins have been living on the event level, being turned on or off individually for every event. While this is really useful for many organizers, it's not really a good fit for some plugins that naturally need to act on the entire organizer account. Examples are our seating module that manages seating plans on organizer level, organizer-level data integrations like our DATEV plugin, or any plugin that interacts with the customer account feature.

Starting with this version, pretix provides three different types of plugins:

  • Event-level plugins: These are the plugins you already know which can be turned on or off for every event.

  • Organizer-level plugins: These plugins can be turned on or off on the organizer-level, instantly being active for everything that happens in the organizer account.

  • Event/Organizer-hybrid plugins: These plugins provide functionality on both levels, such as e.g. the seating plugin that provides a management of seating plans on the organizer level and additional functionality on the event level. These plugins can only be turned on for individual events only after they have been turned on on the organizer account as well.

The new user interface shows all plugins on both levels, indicating with different buttons and settings what level they operate on. As an added bonus, you can now bulk-enable or disable plugins for many events at the same time.

Screenshot

Some existing plugins that were previously on-by-default on the organizer level will soon be converted to one of these new types.

Data sync capabilities & HubSpot 2.0

Many pretix plugins exist to move data from pretix into external systems such as CRMs, accounting systems, or newsletter tools. All of these plugins implement different quality levels of retry mechanisms, error handling, data mapping, debug output, and so on.

Starting from pretix 2025.7, we provide first-class support for data sync plugins. Much of the heavy lifting required for a high-quality data sync plugin is now available in the core system and can be reused by plugins, leading to a significantly reduced effort required to build high-quality plugins. These changes in the new pretix version are only visible when a plugin using the new APIs is installed. You will recognize them for example with the unified sync status view and a "Sync now" button in the order:

Screenshot

The first plugin making use of the new capabilities is the version 2.0 of our HubSpot integration. Other than integrating with the new core feature, the new version of the HubSpot plugin also provides much more extensive capabilities. Instead of just syncing order data to HubSpot contacts, it can map data to arbitrary objects in HubSpot and even create relationships ("associations") between them:

Screenshot

Invoice address and transmission improvements

pretix historically allowed plugins to modify rendering of invoices, but always assumed that invoices will then be transmitted to the recipient as a PDF file attached to an email. This is however not sufficient for a growing number of countries or industries. For example, invoices in Italy need to be transmitted through a government-operated system as XML files. Similarly, some countries like Belgium will soon require invoices between companies to be sent over the PEPPOL network.

With this release, we are introducing multiple invoice transmission types and a way for plugins to provide transmission providers. As a prerequisite, we have extended the capabilities of the invoice address form to ask for different fields depending on the selected country and transmission type. Specifically, pretix now supports properly asking for Italian invoice addresses or PEPPOL IDs, provided that a plugin supporting these transmission methods is installed:

Screenshot

We are actively working on plugins for both PEPPOL and the Italian system. As they are not ready at this time, the above-mentioned functionality does not yet show up. However, you are already profiting from the new system in other ways: The option for customers to provide a specific email address to send the invoice to has been migrated from the bank transfer module to a core part of the invoice address that will be offered to all business customers:

Screenshot

Default tax rates

This update includes a makeover to the concept of a "default tax rule". Instead of being an almost completely hidden feature, one of your tax rules will now very explicitly be declared to be the default one:

Screenshot

This allows us to provide more useful and transparent settings for fees, such as payment, cancellation or shipping fees:

Screenshot

Note that for fees that already supported splitting the tax rate, such as shipping fees, this release contains a fix to the computation logic that now computes the tax splitting on the ratio of the net prices instead of the gross prices, as originally intended.

Check-in reset

Before your event, we recommend that you test your hardware setup to make sure all scanners and printers are running well. However, during that testing, some tickets will need to be scanned and some badges might be marked as "printed". Since recent versions of pretixSCAN include functionality that prevents automatic badge printing if the badge has ever been printed before, this means that your testing can disrupt the flow during the event.

We have now added an option to completely reset the check-in stack of your event, deleting all existing check-ins and print logs in one go. Make sure to only use this before your event starts and before you any real check-in data is in the system.

Screenshot

Order import for multi-ticket orders

The order import was previously only able to import orders with exactly one ticket per order. With the new version, you can group multiple consecutive lines together into the same order using a "grouping column" that contains the same value, such as the order ID of an external system:

Screenshot

Smaller changes and bugfixes

Ticket shop and widget

  • A new translation language "Spanish (Latin America)" has been added for a generic translation to Latin-America-friendly Spanish.

  • Order confirmation emails now contain the event location.

  • Behavior of the widget on mobile devices has been reverted to the look of the widget v1 to make optimal use of screen space.

  • A layout issue rendering tax subtotals on mobile has been fixed.

  • A bug has been fixed that caused invoice addresses to be stored even though they are no longer shown to the user e.g. after a modification of the cart to a free order.

  • Further minor accessibility improvements have been made.

  • A bug in the list of products has been fixed that caused prices to be shown differently for products with and without variations in a rare situation.

  • The footer link that previously said "Contact organizer" has been generalized to say "Contact".

  • A color issue has been fixed in the widget that caused calendars to be unreadable on dark backgrounds.

  • Ticket shops no longer advertise themselves as "installable" to mobile browsers.

Ticketing backend and configuration

  • PDF list reports, such as the check-in list, now fall back to other installed fonts if the default font cannot render a specific cell, such as when it contains characters in a Japanese or Chinese script.

  • A new check-in result code "annulled" has been added that signifies a check-in that has been reverted from the device that created it because the person did not actually enter the event.

  • The order data export now includes the URLs to the order and ticket confirmation pages.

  • Incorrect behavior of the filter for pending orders with payment overdue in scheduled emails has been fixed.

  • PayPal API secrets are no longer echoed to the user in the settings form.

  • A new variable "price including bundled product" is available for custom PDF layouts.

  • When connecting devices, one-click copy buttons are provided for the URL and initialization token.

  • Form fields across the backend no longer repeat their label as a placeholder if it provides no additional information, leading to a cleaner look for the overall system.

  • A minor redesign of the PDF editor user interface occurred, placing more buttons into a toolbar at the top.

  • A missing log entry has been added when orders are refunded in bulk.

Updates to official plugins and tools

  • The Exhibitors plugin has been released in version 1.14.0 to add a bulk_attach API endpoint and improve accessibility.

  • The FKM Audit Module plugin has been released in version 2.0.0 to include new metrics defined by FKM.

  • The HubSpot plugin has been released in version 2.0.0 to include the new features listed above.

  • The Mollie plugin has been released in version 2.4.1 to fix some minor bugs.

  • The Newsletter plugin has been released in version 1.6.2 to fix a crash in the CleverReach integration if no name is detected.

  • The Offline Sales plugin has been released in version 1.12.0 to add a REST API.

  • The Presale SAML plugin has been released in version 1.2.0 to ensure compatibility with recent pretix versions.

  • The Resellers plugin has been released in version 3.0.1 to ensure compatibility with pretix 2025.7.

  • The Seating plugin has been released in version 2.5.0. This release improves accessibility and fixes a bug with the widget in mobile Safari. Additionally, it adds a warning for plans of more than 3500 seats. Tthe plugin is not yet designed for more, but performance for large plans is still slightly improved with this release.

  • The Shipping plugin has been released in version 1.23.1 to ensure compatibility with pretix 2025.7.

  • The ZUGFeRD invoices plugin has been released in version 2.4.2 to fix invalid invoice content for partially-paid invoices.

Runtime and server environment

  • This release contains a number of migrations that might need a little longer to run on large databases. Please plan your update timing accordingly.

  • A bug has been fixed that caused long-running recurring tasks to fail subsequent recurring tasks due to a loss of database connection.

  • A new config option plugins_organizer_default has been added.

Plugin API changes

  • Plugins can now declare their plugin level.

  • The plugin API for data sync providers has been added.

  • A new signal pretix.base.signals.checkin_annulled has been added.

  • The plugin API for invoice transmission providers has been added.

  • Some plugin signals are now of type OrganizerPluginSignal and respect the state of your plugin on the organizer as soon as your plugin declares a level other than PLUGIN_LEVEL_EVENT. However, as long as no other level is declared, they will continue to behave as prevously.

REST API changes

  • The transaction resource has been added.

  • The voucher resource now has the new attributes created, budget, and budget_used.

  • The quota resource now has the new attribute ignore_for_event_availability.

  • The invoice resource now has the new attributes invoice_to_is_business, invoice_to_transmission_info, transmission_type, transmission_provider, transmission_status, and transmission_date as well as the new /transmit API endpoint.

  • The order resource now has the new attributes invoice_address.transmission_type and invoice_address.transmission_info.

  • The organizer resource now has the new attribute plugins.

  • Endpoints to manipulate orders now support a check_quotas query parameter.

  • It is now possible to annul a check-in.

  • Boolean query parameters such as ?pdf_data=true are now case-insensitive (e.g. ?pdf_data=True is now also recognized).

  • Webhooks for changes to vouchers are now available.

Raphael Michel

Raphael is the founder and CEO of pretix, who also leads our development team. He is passionate about user-friendly, elegant software, and when he's not busy building software for conference organizers, he enjoys co-organizing con​fer​en​ces himself.

Read more blog posts

Any questions?
+49 6221 32177-50 Mo-Fr 09:00-17:00 Uhr