pretix-thepay
ThePay payment provider for pretix: card payments, bank transfers and the other ThePay methods, with automatic refunds.
How it works
The customer chooses The Pay. pretix creates a ThePay payment and redirects the customer.
The state is always read from ThePay over the authenticated API, never taken from the request. Three things trigger that read:
the customer returning,
ThePay’s notifications,
a periodic task.
The periodic task covers notifications ThePay gave up on, since it retries them for only 2 days.
A bank transfer can arrive a working day or more later. The payment stays pending and is confirmed by the notification. ThePay accepts the payment until the order’s payment term plus a configurable number of days. After that, ThePay returns a late transfer to the payer automatically.
Refunds, including customers cancelling their own orders, are sent to ThePay. pretix shows a refund as done only once ThePay reports it as returned. A refund ThePay declines becomes failed and is logged. Refunds made in the ThePay administration appear in pretix as external refunds.
Requirements
pretix 2025.1 or later, Python 3.11 or later
A ThePay project (merchant ID, project ID, API password)
Installation
pip install pretix-thepay
In production we bake it into the pretix image, see https://github.com/KrisIsNew/hellpretix. Enable the plugin per event, then configure it under Settings → Payment → The Pay.
Configuration
Merchant ID, Project ID, |
ThePay administration → Implementation |
API password |
|
Fallback gateway language |
Used when the order’s language is not one ThePay offers (cs, sk, en) |
Days payable after the term |
Default 3. Match pretix’s Accept late payments setting. |
Let ThePay e-mail the customer |
ThePay’s own e-mails, e.g. bank details for a transfer |
Demo environment |
demo.api.thepay.cz with demo credentials |
Operational requirements:
IP whitelist: add the public IP of the pretix server in ThePay administration → Implementation.
Clock: ThePay rejects requests whose SignatureDate is more than 20 s off, so run NTP.
Periodic task: pretix’s runperiodic must run (the standalone image does this). The plugin re-checks open payments and refunds at most every 10 minutes.
Refund balance: ThePay pays refunds from your ThePay balance. Without enough balance it waits 10 days and then declines the refund.
Cancellations and automatic refunds
Event → Settings → Cancellation:
Allow customers to cancel paid orders.
Choose to refund automatically to the original payment method.
pretix refunds automatically only when ThePay can. Otherwise it creates a manual refund for you. ThePay cannot refund automatically:
card payments older than 6 months,
bank transfers whose payer account ThePay does not know (e.g. cash deposits),
methods without the returnable tag.
Development
pip install -e ".[test]" pytest flake8 pretix_thepay tests && isort --check-only pretix_thepay tests
The tests run against a real pretix (pretix.testutils.settings, SQLite) with the ThePay API mocked by responses. Releasing: see RELEASING.md.
References
ThePay API: https://docs.thepay.eu/
pretix payment provider API: https://docs.pretix.eu/dev/development/api/payment.html
License
Apache License 2.0
Metadata
Release files for pretix-thepay 9.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pretix_thepay-9.1.0.tar.gz | 25.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pretix_thepay-9.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 48.1 kB
Release files / pretix_thepay-9.1.0.tar.gz
| Download URL | pretix_thepay-9.1.0.tar.gz |
|---|---|
| Size | 25.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64eb44be1e74c8b0579bcfc230a62180fa3c64700be7ef4d05ea36af56076fdf
|
|
BLAKE2b-256 checksum How to use checksums |
a833aa84f4887ec6f30763edf84023f73367c28af19f2522b7a88875825c6b18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pretix_thepay-9.1.0-py3-none-any.whl
| Download URL | pretix_thepay-9.1.0-py3-none-any.whl |
|---|---|
| Size | 22.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
755ca00c7203741b03a5846b3346f6fa375cc74912520d1b467ecc09c938f646
|
|
BLAKE2b-256 checksum How to use checksums |
074b23f7b3d78a361093440188a045c946ffc8d03ceea3e836fdc371337faa18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|