Release 2026.1.0 of pretix
Today, we are releasing pretix 2026.1.0. This is mostly a maintenance release improving many little things throughout the system.
Big thanks go out to Alexander Schwartz, Ana Rute Pacheco Vivas, chondaen12, CVZ-es, Daniel Branda, David Ibáñez Cerdeira, et15, Felix Rindt, Hijiri Umemoto, Jan Van Haver, Jiří Pastrňák, José Manuel Silva, Kian Cross, Lachlan Struthers, Linnea Thelander, Luca Sorace Stranck, Mario Montes, Praveen Kathirvasan, Renne Rocha, Ruud Hendrickx, sandra r, SJang1, Vajda Tamás, and Yasunobu YesNo Kawaguchi who contributed to this release. ❤️
pretix 2026.1.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.
E-invoicing for Italy
Italy was Europe's first country to implement mandatory e-invoicing for all transactions, including B2C purchases. All invoices must be created in the "FatturaPA" XML format and must be transmitted through the government's Sistema di Interscambio (SDI) platform.
We have added a new plugin that allows to create invoices in FatturaPA format and submit them to SDI automatically, utilizing capabilities of our new partner Invopop. Similarly to our recent Peppol support, this is currently only available on pretix Hosted and we charge €0.20 per successfully transmitted invoice.
Smaller changes and bugfixes
Ticket shop and widget
-
If a language variant (such as
de-informalfor "Informal German") is combined with a region (such as "Switzerland"), currency formats now respect the region configuration properly. -
Stripe: Support for PromptPay and "Pay by bank" has been added.
-
If Peppol is enabled by the organizers and both the invoice sender and recipient address are business addresses in Belgium, Peppol must now be selected as the invoicing method. This is in line with a Belgian law that became effective January 1.
-
VAT ID can now be declared a required field for business customers by country. The default setting declares it required for Italy and Greece.
-
VAT ID input now accepts more inputs and has country-dependent labels. For Belgian customers, the Peppol ID is now automatically proposed based on the VAT ID input.
-
The list of valid Peppol ID schemes has been updated. Peppol IDs are now validated for existance in real time and the validation of Belgian Peppol IDs has been fixed to allow business registration numbers that begin with 1.
-
The list of states or provinces is now properly localized. The Italian list of provinces now allows to select Valle d'Aosta.
-
Duplicate redirects to a customer authentication provider are now prevented, resulting in less login failures.
-
A bug has been fixed that caused incorrect tax rounding results being shown in the cart.
-
A bug has been fixed that caused incorrectly rounded prices being added to the cart when increasing the quantity in the cart.
-
The order of products in the computation of discounts has been tweaked to show the expected result in a common combination including add-on products.
-
Bank transfer: The QR code format SPAYD is now supported for Czech bank or Slovakian accounts.
-
Bank transfer: The reference is no longer shown before the invoice is generated if it should include the invoice number.
-
The customer account now shows the current value of gift cards in the list of gift cards.
-
The event calendar now correctly respects the presale start date for event series.
-
Multiple bugs have been fixed that could cause impossible combinations of add-on products or included products to be purchased after the lifetime of a cart was extended.
-
A bug has been fixed that could cause vouchers to be wrongfully considered fully used during extending the lifetime of a cart.
-
A bug has been fixed that prevented the use of vouchers in combination with the seating plan and the widget.
-
Our CSV import now deals gracefully with duplicate column names.
Ticketing backend and configuration
-
You can now configure invoices to be only issued for customers with a business address.
-
If a product is configured to be available only after another product is no longer available, this respects time-based availability as well now, in addition to quota-based availability.
-
A new configuration option allows preventing unauthenticated access to the order confirmation pages, if the order was created using a customer account.
-
The "Statistics" page now contains additional graphs. The data included in the graphs has been finetuned and help texts have been added that explain what exactly is being counted.
-
The answer statistics of a question can now be filtered by time.
-
Scheduled exports now have a copy button to easily create more schedules with similar configuration.
-
A security notification is now sent to users if a system administrator generates a new 2FA recovery code for them.
-
Web check-in: When checking in a ticket, the purchased add-ons are now listed in the result message.
-
Bank transfer: Bank statement in the form of SEPA CAMT XML files can now be imported.
-
Bank transfer: The matching algorithm has been improved for event slugs that contain dashes.
-
Bank transfer: Transactions of value 0 are now automatically discarded.
-
The order data export now includes the amount of voucher budget a ticket consumed.
-
The order data export now allows to restrict the result to one or more selected products.
-
The order overview export now allows to remove all empty lines.
-
The organizer detail logs now show all logged actions of related objects as well.
-
A race condition has been fixed that caused two vouchers being created for the same waiting list entry.
-
A bug in email and markdown rendering has been fixed that prevented the use of
&in URLs. -
The selection of product categories for add-on products now correctly searches internal category names.
Updates to official plugins and tools
-
The Digital Content plugin has been released in version 1.6.2 to fix a race condition occasionally preventing identical buttons for multiple tickets to be merged.
-
The HubSpot plugin has been released in version 2.0.2 to fix mapping multiple-choice enum values.
-
The Mollie plugin has been released in version 2.5.1 to prevent a race condition between webhooks and return views.
-
The Newsletter plugin has been released in version 2.0.0 to make data sync configurable for Brevo and fix a bug for CleverReach.
-
The PAYONE plugin has been released in version 1.4.1 to add WERO support.
-
The pretixPOS backend plugin has been released in version 3.21.1 to fix export of registration files for Germany after a device was decommissioned, and to fix the security profile for pretixPOS to allow to access the discounts API.
-
The Presale SAML Authentication plugin has been released in version 1.3.0 to fix compatibility with multi-domain setups.
-
The Saferpay (SIX) plugin has been released in version 1.6.1 to add support for WERO.
-
The secuconnect plugin has been released in version 1.0.3 to improve error handling.
-
The Shared reports plugin has been released in version 1.10.0 to allow limiting answer statistics to checked-in tickets.
-
The Shipping plugin has been released in version 1.23.2 to localize state and province names in address forms.
-
The Tracking codes plugin has been released in version 2.19.2 to extend the consent flags that are passed to Google.
-
The Wordline Direct plugin has been released in version 1.1.0 to add support for WERO.
-
The ZUGFeRD invoices plugin has been released in version 2.6.2 to add the buyer's internal reference to field BT-10 and fix a broken translation.
Runtime and server environment
-
pretix now requires Python 3.10 or later to run, Python 3.9 is no longer supported. Note that Python 3.14 is not yet supported.
-
The celery queues now use prioritization, which can have impact on your monitoring setup if you monitor queues directly in redis.
-
Font loading for PDF generation has received a significant performance improvement.
-
A possible memory leak in the mass-email background task has been fixed.
-
The license check how recognizes keyword-based license declarations in plugin packages.
Plugin API changes
-
The
OutboundSyncProviderinterface has a new attributelist_field_joinerthat you can use to customize list handling. -
A bug has been fixed that prevented declaring
event_urlsandorganizer_urlsin the same plugin.
REST API changes
- A race condition in changing order contents has been fixed.